1import{_ as je}from"./DVxiG2CR.js";import{_ as Se}from"./DLc4hRAS.js";import Te from"./CWDmTO2J.js";import Ne from"./BdsSLKlu.js";import{d as Re,I as Oe,S as ze,Q as Ge,L as Ie,A as $e,c as s,p as f,f as g,g as a,z as y,h as l,s as H,r as k,J as Le,C as Ce,M as Be,e as d,k as t,j as c,G as Ve,F as q,B as J,t as o,W as Ue,q as P,U as Pe,m as We}from"./D_pooQIo.js";import Me from"./CPM1Swcd.js";import Ke from"./Bap9vDlQ.js";import Fe from"./DAcETa_Y.js";import{u as He}from"./C2s1Q9YJ.js";import"./DOOLS6o1.js";import"./ErSj5cPS.js";import"./D1ULKWqJ.js";import"./DMAnPZau.js";import"./BlpghVn7.js";import"./DrrUwWwg.js";import"./DFUdz4_f.js";import"./B2QKJZGl.js";import"./DC8aI4xt.js";import"./B0_fAMp9.js";import"./DT_5_moI.js";import"./CJ_txExF.js";import"./2NOOCBpV.js";import"./CWhvSHER.js";import"./Chmmyylv.js";import"./CuNL1dbA.js";import"./BhmxX5gB.js";import"./DT9Cl5H3.js";import"./KUdN_iCp.js";import"./BUKgdh1l.js";import"./BdZW3dpW.js";import"./CUpY9eap.js";import"./BYzO45HW.js";import"./DxArr3wa.js";import"./6LZSiysJ.js";import"./fgjW-HJ9.js";import"./C1SnWOZ_.js";import"./B_16HqRd.js";import"./DwSmkcgt.js";import"./BnsflCPh.js";const qe={key:0,class:"p-4 text-red-600"},Je={key:1,class:"space-y-4"},Qe={class:"flex items-center justify-between gap-4"},Xe={class:"flex items-center justify-between gap-4"},Ye={class:"flex items-start gap-2"},Ze={class:"mt-1 list-none space-y-0.5 text-sm"},et={class:"font-mono"},tt={class:"flex items-center justify-between"},st={class:"flex items-center gap-3"},it={class:"font-bold"},at={class:"flex gap-2"},lt={class:"grid grid-cols-2 gap-3 text-sm md:grid-cols-4"},nt={class:"mt-0.5 font-mono text-xs"},rt={class:"mt-0.5"},ot={class:"mt-0.5 flex items-center gap-2"},dt={class:"mt-0.5"},ct={class:"mt-0.5"},ut={class:"mt-0.5"},pt={key:0},mt={class:"mt-0.5"},gt={class:"flex items-center justify-between gap-2"},_t={class:"flex items-center gap-2"},ft={key:0,class:"py-4 text-sm text-surface-500"},vt={key:1,class:"flex flex-wrap gap-2"},kt={class:"flex flex-col gap-3"},yt={class:"flex items-center gap-2"},bt={key:0,class:"py-4 text-sm text-surface-500"},ht={class:"flex items-center gap-2"},Et={key:0,class:"text-xs text-surface-400"},wt={key:1},xt={class:"flex items-center justify-between"},At={class:"flex items-center gap-2"},Dt={key:0,class:"py-4 text-sm text-surface-500"},jt={class:"flex items-center gap-2"},St={key:0,class:"py-4 text-sm text-surface-500"},Tt={class:"flex items-center gap-2"},Nt={class:"flex items-center justify-between"},Rt={key:1,class:"text-sm text-surface-400"},Ot={class:"flex items-center gap-2"},zt={key:0,class:"py-4 text-sm text-surface-500"},Gt={class:"flex items-center gap-2"},It={class:"font-mono text-xs text-surface-500"},$t={class:"flex items-center gap-2"},Lt={key:0,class:"py-4 text-sm text-surface-500"},Ct=["title"],As=Re({__name:"[id]",async setup(Bt){let S,W;const Q=Oe(),X=ze(),v=Number(Q.params.id),p=Ge(),_=Ie(),{data:n,error:Y,refresh:b}=([S,W]=$e(()=>He(`/api/beheer/gebruikers/${v}`)),S=await S,W(),S),x=k(!1),A=k([]),T=k(!1),O=k([]),Z=async()=>{A.value=(n.value?.districten??[]).map(r=>r.id),O.value.length===0&&(O.value=await $fetch("/api/beheer/organisaties?alle=true")),x.value=!0},ee=async()=>{if(A.value.length===0){_.add({severity:"error",summary:"Selecteer minimaal één organisatie",life:4e3});return}T.value=!0;try{await $fetch(`/api/beheer/gebruikers/${v}/organisaties`,{method:"PUT",body:{organisatie_ids:A.value}}),_.add({severity:"success",summary:"Organisaties bijgewerkt",life:3e3}),x.value=!1,await b()}catch(r){_.add({severity:"error",summary:"Fout bij opslaan",detail:r.data?.message||r.message,life:5e3})}finally{T.value=!1}},N=k(!1),R=k(null),z=k(!1),G=k(!1),I=k(!1),$=k(null),L=k(null),C=k(!1),B=k(!1),M=async()=>{N.value=!0,R.value=null;try{await $fetch(`/api/beheer/gebruikers/${v}/deblokkeer`,{method:"POST"}),await b()}catch{R.value="Deblokkeren mislukt. Probeer het opnieuw."}finally{N.value=!1}},V=async r=>{z.value=!0;try{await $fetch(`/api/beheer/gebruikers/${v}/status`,{method:"PATCH",body:{status:r}}),await b(),_.add({severity:"success",summary:"Status gewijzigd",life:3e3})}catch{_.add({severity:"error",summary:"Status wijzigen mislukt",life:4e3})}finally{z.value=!1}},te=We(()=>{const r=n.value?.status;return[{label:"Actief",icon:"pi pi-check-circle",command:()=>V("actief"),disabled:r==="actief"},{label:"Geblokkeerd",icon:"pi pi-ban",command:()=>V("geblokkeerd"),disabled:r==="geblokkeerd"},{label:"Inactief",icon:"pi pi-minus-circle",command:()=>V("inactief"),disabled:r==="inactief"}]}),se=()=>{p.require({message:`Weet je zeker dat je gebruiker "${n.value?.email??`#${v}`}" wilt verwijderen? Dit kan niet ongedaan worden gemaakt.`,header:"Gebruiker verwijderen",icon:"pi pi-exclamation-triangle",rejectLabel:"Annuleren",acceptLabel:"Verwijderen",accept:ie,reject:()=>p.close()})},ie=async()=>{G.value=!0;try{await $fetch(`/api/beheer/gebruikers/${v}`,{method:"DELETE"}),_.add({severity:"success",summary:"Gebruiker verwijderd",life:3e3}),await X.push("/beheer/gebruikers")}catch{_.add({severity:"error",summary:"Verwijderen mislukt",life:4e3}),p.close(),G.value=!1}},ae=()=>{p.require({message:`Weet je zeker dat je MFA wilt uitschakelen voor "${n.value?.email??`#${v}`}"? De gebruiker moet MFA opnieuw instellen als ze dit weer willen gebruiken.`,header:"MFA uitschakelen",icon:"pi pi-exclamation-triangle",rejectLabel:"Annuleren",acceptLabel:"Uitschakelen",accept:le,reject:()=>p.close()})},le=async()=>{I.value=!0;try{await $fetch(`/api/beheer/gebruikers/${v}/mfa/uitschakelen`,{method:"POST"}),await b(),_.add({severity:"success",summary:"MFA uitgeschakeld",life:3e3}),p.close()}catch{_.add({severity:"error",summary:"MFA uitschakelen mislukt",life:4e3}),p.close()}finally{I.value=!1}},ne=(r,i)=>{const m=async()=>{$.value=r;try{await $fetch(`/api/beheer/gebruikers/${v}/passkeys/${r}`,{method:"DELETE"}),await b(),_.add({severity:"success",summary:"Passkey verwijderd",life:3e3}),p.close()}catch{_.add({severity:"error",summary:"Passkey verwijderen mislukt",life:4e3}),p.close()}finally{$.value=null}};p.require({message:`Weet je zeker dat je deze passkey ("${i||"Naamloos"}") wilt verwijderen? De gebruiker kan deze passkey dan niet meer gebruiken om in te loggen.`,header:"Passkey verwijderen",icon:"pi pi-exclamation-triangle",rejectLabel:"Annuleren",acceptLabel:"Verwijderen",accept:m,reject:()=>p.close()})},re=(r,i)=>{const m=async()=>{L.value=r;try{await $fetch(`/api/beheer/gebruikers/${v}/sessies/${r}`,{method:"DELETE"}),await b(),_.add({severity:"success",summary:"Sessie beëindigd",life:3e3}),p.close()}catch{_.add({severity:"error",summary:"Sessie beëindigen mislukt",life:4e3}),p.close()}finally{L.value=null}};p.require({message:`Weet je zeker dat je deze sessie ("${i}") wilt beëindigen? De gebruiker wordt uitgelogd op dit apparaat.`,header:"Sessie beëindigen",icon:"pi pi-exclamation-triangle",rejectLabel:"Annuleren",acceptLabel:"Beëindigen",accept:m,reject:()=>p.close()})},oe=()=>{const r=n.value?.actieve_sessies.length??0;p.require({message:`Weet je zeker dat je alle ${r} actieve sessie${r===1?"":"s"} wilt beëindigen? De gebruiker wordt op alle apparaten uitgelogd.`,header:"Alle sessies beëindigen",icon:"pi pi-exclamation-triangle",rejectLabel:"Annuleren",acceptLabel:"Alle sessies beëindigen",accept:de,reject:()=>p.close()})},de=async()=>{C.value=!0;try{await $fetch(`/api/beheer/gebruikers/${v}/sessies`,{method:"DELETE"}),await b(),_.add({severity:"success",summary:"Alle sessies beëindigd",life:3e3}),p.close()}catch(r){const i=r?.data?.message,m=typeof i=="string"?i:"Sessies beëindigen mislukt";_.add({severity:"error",summary:"Fout",detail:m,life:4e3}),p.close()}finally{C.value=!1}},ce=()=>{p.require({message:`Weet je zeker dat je een wachtwoord reset link wilt versturen naar "${n.value?.email??`#${v}`}"? De gebruiker ontvangt een e-mail met instructies.`,header:"Wachtwoord reset link ver
1sturen",icon:"pi pi-exclamation-triangle",rejectLabel:"Annuleren",acceptLabel:"Versturen",accept:ue,reject:()=>p.close()})},ue=async()=>{B.value=!0;try{await $fetch(`/api/beheer/gebruikers/${v}/wachtwoord-reset`,{method:"POST"}),_.add({severity:"success",summary:"Reset link verstuurd",detail:`E-mail verzonden naar ${n.value?.email}`,life:4e3}),p.close()}catch(r){const i=r?.data?.message,m=typeof i=="string"?i:"Versturen mislukt. Probeer het opnieuw.";_.add({severity:"error",summary:"Fout",detail:m,life:5e3}),p.close()}finally{B.value=!1}},pe={VERKEERD_WACHTWOORD:"Verkeerd wachtwoord",USER_NIET_GEVONDEN:"Geen account gevonden",GEEN_WACHTWOORD_INGESTELD:"Nog geen wachtwoord ingesteld (registratielink niet gebruikt)",EMAIL_NIET_GEVONDEN:"E-mailadres onbekend",BONDSNUMMER_NIET_GEVONDEN:"Bondsnummer onbekend",ACCOUNT_GEBLOKKEERD:"Account geblokkeerd",ACCOUNT_INACTIEF:"Account inactief",SESSIE_LIMIET_BEREIKT:"Maximum aantal sessies bereikt",ORGANISATIE_MISMATCH:"Verkeerde organisatie",WACHTWOORD_VERLOPEN:"Wachtwoord verlopen",IP_GEBLOKKEERD:"IP-adres geblokkeerd",TE_VEEL_POGINGEN:"Te veel pogingen"},me=r=>r?pe[r]??r:"â",ge={IP_GEBLOKKEERD:"Vijf mislukte pogingen binnen vijf minuten vanaf hetzelfde IP-adres. Dit vervalt vanzelf zodra die pogingen ouder zijn dan vijf minuten â maar elke nieuwe poging telt weer mee, dus blijven proberen houdt de blokkade in stand. Het geldt voor het IP-adres, dus ook voor anderen achter dezelfde internetverbinding.",ACCOUNT_GEBLOKKEERD:"Het account zelf is geblokkeerd na tien mislukte pogingen. Dit gaat niet vanzelf over: een beheerder moet deblokkeren."},K=r=>r?ge[r]??"":"",h=r=>r?new Date(r).toLocaleString("nl-NL",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"â",_e=r=>new Date(r).toLocaleTimeString("nl-NL",{hour:"2-digit",minute:"2-digit"}),fe={SUPER_ADMIN:"Super admin",ORGANISATIE_ADMIN:"Org. admin",GEBRUIKER:"Gebruiker"},ve={SUPER_ADMIN:"danger",ORGANISATIE_ADMIN:"warn",GEBRUIKER:"secondary"},ke={actief:"success",geblokkeerd:"danger",inactief:"secondary"},ye={LOGOUT:"Uitgelogd",PASSWORD_CHANGED:"Wachtwoord gewijzigd",PASSWORD_RESET_AANGEVRAAGD:"Wachtwoord reset aangevraagd",PASSWORD_RESET_BEVESTIGD:"Wachtwoord reset bevestigd",MFA_INGESCHAKELD:"MFA ingeschakeld",MFA_UITGESCHAKELD:"MFA uitgeschakeld",SESSIE_INGETROKKEN:"Sessie ingetrokken",WEBAUTHN_TOEGEVOEGD:"Passkey toegevoegd",WEBAUTHN_VERWIJDERD:"Passkey verwijderd",ACCOUNT_GEBLOKKEERD:"Account geblokkeerd",ACCOUNT_GEDEBLOKKEERD:"Account gedeblokkeerd"},be={LOGOUT:"pi-sign-out",PASSWORD_CHANGED:"pi-key",PASSWORD_RESET_AANGEVRAAGD:"pi-envelope",PASSWORD_RESET_BEVESTIGD:"pi-check-circle",MFA_INGESCHAKELD:"pi-lock",MFA_UITGESCHAKELD:"pi-lock-open",SESSIE_INGETROKKEN:"pi-times-circle",WEBAUTHN_TOEGEVOEGD:"pi-mobile",WEBAUTHN_VERWIJDERD:"pi-tras
1h",ACCOUNT_GEBLOKKEERD:"pi-ban",ACCOUNT_GEDEBLOKKEERD:"pi-unlock"};return(r,i)=>{const m=Ve,U=Le,he=Ue,w=Fe,Ee=Ke,F=je,E=Ce,D=Pe,we=Me,xe=Be,u=Ne,Ae=Se,j=Te;return s(Y)?(d(),f("div",qe,"Fout bij ophalen gebruiker.")):s(n)?(d(),f("div",Je,[s(n).status==="geblokkeerd"?(d(),g(U,{key:0,severity:"error",closable:!1},{default:a(()=>[t("div",Qe,[i[5]||(i[5]=t("div",{class:"flex items-center gap-2"},[t("i",{class:"pi pi-ban"}),t("span",null,[t("strong",null,"Account geblokkeerd"),c(" â deze gebruiker kan niet inloggen. ")])],-1)),l(m,{label:"Deblokkeren",icon:"pi pi-unlock",severity:"danger",size:"small",loading:s(N),onClick:M},null,8,["loading"])])]),_:1})):y("",!0),s(n).ip_lock_status?.length?(d(),g(U,{key:1,severity:"warn",closable:!1},{default:a(()=>[t("div",Xe,[t("div",Ye,[i[8]||(i[8]=t("i",{class:"pi pi-clock mt-0.5"},null,-1)),t("div",null,[i[6]||(i[6]=t("strong",null,"IP-adres tijdelijk geblokkeerd",-1)),i[7]||(i[7]=c(" â te veel mislukte inlogpogingen. ",-1)),t("ul",Ze,[(d(!0),f(q,null,J(s(n).ip_lock_status,e=>(d(),f("li",{key:e.ip_address},[t("span",et,o(e.ip_address),1),c(" â vrij om "+o(_e(e.locked_until)),1)]))),128))])])]),s(n).status!=="geblokkeerd"?(d(),g(m,{key:0,label:"IP-lock opheffen",icon:"pi pi-unlock",severity:"warn",size:"small",loading:s(N),onClick:M},null,8,["loading"])):y("",!0)])]),_:1})):y("",!0),s(R)?(d(),g(U,{key:2,severity:"error",closable:!1},{default:a(()=>[c(o(s(R)),1)]),_:1})):y("",!0),l(he),l(E,null,{title:a(()=>[t("div",tt,[t("div",st,[t("span",it,o([s(n).voornaam,s(n).achternaam].filter(Boolean).join(" ")||s(n).email||`Gebruiker #${s(n).id}`),1),l(w,{value:fe[s(n).rol]??s(n).rol,severity:ve[s(n).rol]??"secondary"},null,8,["value","severity"]),l(w,{value:s(n).status,severity:ke[s(n).status]??"secondary"},null,8,["value","severity"])]),t("div",at,[l(m,{icon:"pi pi-refresh",size:"small",outlined:"",onClick:i[0]||(i[0]=e=>s(b)())}),l(Ee,{label:"Status",icon:"pi pi-sliders-h",size:"small",outlined:"",model:s(te),loading:s(z)},null,8,["model","loading"]),l(m,{icon:"pi pi-trash",label:"Verwijderen",size:"small",severity:"danger",outlined:"",loading:s(G),onClick:se},null,8,["loading"]),l(m,{icon:"pi pi-arrow-left",label:"Terug",size:"small",outlined:"",onClick:i[1]||(i[1]=e=>r.$router.push("/beheer/gebruikers"))})])])]),content:a(()=>[t("div",lt,[t("div",null,[i[9]||(i[9]=t("span",{class:"font-medium text-surface-500"},"E-mail",-1)),t("p",nt,o(s(n).email??"â"),1)]),t("div",null,[i[10]||(i[10]=t("span",{class:"font-medium text-surface-500"},"Organisatie",-1)),t("p",rt,o(s(n).organisatieNaam??"â"),1)]),t("div",null,[i[11]||(i[11]=t("span",{class:"font-medium text-surface-500"},"MFA",-1)),t("p",ot,[t("i",{class:P(`pi ${s(n).mfa_enabled?"pi-lock text-green-600":"pi-lock-open text-surface-400"}`)},null,2),c(" "+o(s(n).mfa_enabled?"Ingeschakeld":"Uitgeschakeld")+" ",1),s(n).mfa_enabled?(d(),g(m,{key:0,icon:"pi pi-lock-open",size:"small",severity:"secondary",text:"",loading:s(I),onClick:ae},null,8,["loading"])):y("",!0)])]),t("div",null,[i[12]||(i[12]=t("span",{class:"font-medium text-surface-500"},"Aantal logins",-1)),t("p",dt,o(s(n).login_teller),1)]),t("div",null,[i[13]||(i[13]=t("span",{class:"font-medium text-surface-500"},"Laatste login",-1)),t("p",ct,o(h(s(n).laatst_ingelogd_op)),1)]),t("div",null,[i[14]||(i[14]=t("span",{class:"font-medium text-surface-500"},"Aangemaakt op",-1)),t("p",ut,o(h(s(n).aangemaakt_op)),1)]),s(n).spelerId?(d(),f("div",pt,[i[15]||(i[15]=t("span",{class:"font-medium text-surface-500"},"Speler",-1)),t("p",mt,[l(F,{to:`/beheer/spelers/${s(n).spelerId}`,class:"text-primary-500 hover:underline"},{default:a(()=>[c(" #"+o(s(n).spelerId),1)]),_:1},8,["to"])])])):y("",!0)])]),_:1}),s(n).rol==="ORGANISATIE_ADMIN"?(d(),g(E,{key:3},{title:a(()=>[t("div",gt,[t("div",_t,[i[16]||(i[16]=t("span",{class:"font-bold"},"Districten",-1)),l(D,{color:"neutral",variant:"outline"},{default:a(()=>[c(o(s(n).districten.length),1)]),_:1})]),l(m,{label:"Wijzigen",icon:"pi pi-pencil",size:"small",outlined:"",onClick:Z})])]),content:a(()=>[s(n).districten.length===0?(d(),f("div",ft,"Geen districten gekoppeld")):(d(),f("div",vt,[(d(!0),f(q,null,J(s(n).districten,e=>(d(),g(w,{key:e.id,value:e.naam,severity:"secondary"},null,8,["value"]))),128))]))]),_:1})):y("",!0),l(xe,{visible:s(x),"onUpdate:visible":i[4]||(i[4]=e=>H(x)?x.value=e:null),modal:"",header:"Districten wijzigen",style:{width:"480px"}},{footer:a(()=>[l(m,{label:"Annuleren",severity:"secondary",outlined:"",disabled:s(T),onClick:i[3]||(i[3]=e=>x.value=!1)},null,8,["disabled"]),l(m,{label:"Opslaan",loading:s(T),onClick:ee},null,8,["loading"])]),default:a(()=>[t("div",kt,[i[17]||(i[17]=t("p",{class:"text-sm text-surface-600"}," Deze gebruiker beheert de organisaties die je hier kiest. De eerste keuze geldt als zijn thuisorganisatie. ",-1)),l(we,{modelValue:s(A),"onUpdate:modelValue":i[2]||(i[2]=e=>H(A)?A.value=e:null),options:s(O),optionLabel:"naam",optionValue:"id",placeholder:"Selecteer één of meer districten",filter:"",class:"w-full"},null,8,["modelValue","options"])])]),_:1},8,["visible"]),l(E,null,{title:a(()=>[t("div",yt,[i[18]||(i[18]=t("span",{class:"font-bold"},"Teamleider van teams",-1)),l(D,{color:"neutral",variant:"outline"},{default:a(()=>[c(o(s(n).teamleider_teams.length),1)]),_:1})])]),content:a(()=>[s(n).teamleider_teams.length===0?(d(),f("div",bt," Deze gebruiker is nergens teamleider (geweest) ")):(d(),g(j,{key:1,value:s(n).teamleider_teams,size:"small",class:"text-sm",stripedRows:""},{default:a(()=>[l(u,{field:"seizoen",header:"Seizoen",style:{width:"110px"}}),l(u,{field:"team_naam",header:"Team"},{body:a(({data:e})=>[t("div",ht,[t("span",null,o(e.team_naam),1),e.poule_naam?(d(),f("span",Et,"("+o(e.poule_naam)+")",1)):y("",!0),e.is_tweede_teamleider?(d(),g(w,{key:1,value:"2e teamleider",severity:"secondary",class:"text-xs"})):y("",!0)])]),_:1}),l(u,{field:"competitie_naam",header:"Competitie"},{body:a(({data:e})=>[l(F,{to:`/beheer/competities/${e.competitie_id}`,class:"text-primary-500 hover:underline"},{default:a(()=>[c(o(e.competitie_naam),1)]),_:2},1032,["to"])]),_:1}),l(u,{field:"vereniging_naam",header:"Vereniging"},{body:a(({data:e})=>[c(o(e.vereniging_naam??"â"),1)]),_:1}),l(u,{field:"organisatie_naam",header:"Organisatie"},{body:a(({data:e})=>[e.organisatie_naam?(d(),g(Ae,{key:0,naam:e.organisatie_naam,bp10:e.organisatie_bp10},null,8,["naam","bp10"])):(d(),f("span",wt,"â"))]),_:1}),l(u,{field:"archief",header:"",style:{width:"120px"}},{body:a(({data:e})=>[e.archief?(d(),g(w,{key:0,value:"Gearchiveerd",severity:"secondary",class:"text-xs"})):(d(),g(w,{key:1,value:"Actueel",severity:"success",class:"text-xs"}))]),_:1})]),_:1},8,["value"]))]),_:1}),l(E,null,{title:a(()=>[t("div",xt,[t("div",At,[i[19]||(i[19]=t("span",{class:"font-bold"},"Actieve sessies",-1)),l(D,{color:"neutral",variant:"outline"},{default:a(()=>[c(o(s(n).actieve_sessies.length),1)]),_:1})]),s(n).actieve_sessies.length>0?(d(),g(m,{key:0,label:"Alle sessies beëindigen",icon:"pi pi-times-circle",size:"small",severity:"danger",outlined:"",loading:s(C),onClick:oe},null,8,["loading"])):y("",!0)])]),content:a(()=>[s(n).actieve_sessies.length===0?(d(),f("div",Dt,"Geen actieve sessies")):(d(),g(j,{key:1,value:s(n).actieve_sessies,size:"small",class:"text-sm",stripedRows:""},{default:a(()=>[l(u,{field:"device_name",header:"Apparaat"},{body:a(({data:e})=>[c(o(e.device_name||`${e.platform??""} ${e.browser??""}`.trim()||"â"),1)]),_:1}),l(u,{field:"ip_address",header:"IP-adres",style:{width:"140px"}}),l(u,{field:"laatste_activiteit",header:"Laatste activiteit",style:{width:"180px"}},{body:a(({data:e})=>[c(o(h(e.laatste_activiteit)),1)]),_:1}),l(u,{field:"expires_at",header:"Verloopt op",style:{width:"180px"}},{body:a(({data:e})=>[c(o(h(e.expires_at)),1)]),_:1}),l(u,{header:"Acties",style:{width:"100px"}},{body:a(({data:e})=>[l(m,{icon:"pi pi-trash",size:"small",severity:"danger",text:"",loading:s(L)===e.id,onClick:De=>re(e.id,e.device_name||`${e.platform??""} ${e.browser??""}`.trim())},null,8,["loading","onClick"])]),_:1})]),_:1},8,["value"]))]),_:1}),l(E,null,{title:a(()=>[t("div",jt,[i[20]||(i[20]=t("span",{class:"font-bold"},"Passkeys (Face ID / Touch ID)",-1)),l(D,{color:"neutral",variant:"outline"},{default:a(()=>[c(o(s(n).passkeys.length),1)]),_:1})])]),content:a(()=>[s(n).passkeys.length===0?(d(),f("div",St,"Geen passkeys geregistreerd")):(d(),g(j,{key:1,value:s(n).passkeys,size:"small",class:"text-sm",stripedRows:""},{default:a(()=>
1[l(u,{field:"naam",header:"Naam"},{body:a(({data:e})=>[t("div",Tt,[i[21]||(i[21]=t("i",{class:"pi pi-fingerprint text-primary-500"},null,-1)),c(" "+o(e.naam||"Naamloos"),1)])]),_:1}),l(u,{field:"aangemaakt_op",header:"Toegevoegd op",style:{width:"180px"}},{body:a(({data:e})=>[c(o(h(e.aangemaakt_op)),1)]),_:1}),l(u,{field:"laatst_gebruikt_op",header:"Laatst gebruikt",style:{width:"180px"}},{body:a(({data:e})=>[c(o(e.laatst_gebruikt_op?h(e.laatst_gebruikt_op):"Nooit"),1)]),_:1}),l(u,{header:"Acties",style:{width:"100px"}},{body:a(({data:e})=>[l(m,{icon:"pi pi-trash",size:"small",severity:"danger",text:"",loading:s($)===e.id,onClick:De=>ne(e.id,e.naam)},null,8,["loading","onClick"])]),_:1})]),_:1},8,["value"]))]),_:1}),l(E,null,{title:a(()=>[...i[22]||(i[22]=[t("span",{class:"font-bold"},"Wachtwoord",-1)])]),content:a(()=>[t("div",Nt,[i[23]||(i[23]=t("div",{class:"text-sm"},[t("p",{class:"text-surface-600"},"Verstuur een wachtwoord reset link naar de gebruiker."),t("p",{class:"mt-1 text-xs text-surface-500"},"De link is 24 uur geldig.")],-1)),s(n).email?(d(),g(m,{key:0,label:"Reset link versturen",icon:"pi pi-send",size:"small",severity:"secondary",outlined:"",loading:s(B),onClick:ce},null,8,["loading"])):(d(),f("p",Rt,"Geen e-mailadres beschikbaar"))])]),_:1}),l(E,null,{title:a(()=>[t("div",Ot,[i[24]||(i[24]=t("span",{class:"font-bold"},"Beveiligingsgebeurtenissen",-1)),l(D,{color:"neutral",variant:"outline"},{default:a(()=>[c(o(s(n).security_events.length),1)]),_:1})])]),content:a(()=>[s(n).security_events.length===0?(d(),f("div",zt," Geen beveiligingsgebeurtenissen gevonden ")):(d(),g(j,{key:1,value:s(n).security_events,size:"small",class:"text-sm",stripedRows:""},{default:a(()=>[l(u,{field:"event_op",header:"Tijdstip",style:{width:"180px"}},{body:a(({data:e})=>[c(o(h(e.event_op)),1)]),_:1}),l(u,{field:"event_type",header:"Gebeurtenis",style:{"min-width":"200px"}},{body:a(({data:e})=>[t("div",Gt,[t("i",{class:P(`pi ${be[e.event_type]??"pi-info-circle"} text-surface-500`)},null,2),c(" "+o(ye[e.event_type]??e.event_type),1)])]),_:1}),l(u,{field:"ip_address",header:"IP-adres",style:{width:"140px"}},{body:a(({data:e})=>[c(o(e.ip_address??"â"),1)]),_:1}),l(u,{field:"details",header:"Details"},{body:a(({data:e})=>[t("span",It,o(e.details??""),1)]),_:1})]),_:1},8,["value"]))]),_:1}),l(E,null,{title:a(()=>[t("div",$t,[i[25]||(i[25]=t("span",{class:"font-bold"},"Login pogingen",-1)),l(D,{color:"neutral",variant:"outline"},{default:a(()=>[c(o(s(n).login_pogingen.length),1)]),_:1}),i[26]||(i[26]=t("span",{class:"text-xs text-surface-400"},"(laatste 50)",-1))])]),content:a(()=>[s(n).login_pogingen.length===0?(d(),f("div",Lt,"Geen login pogingen gevonden")):(d(),g(j,{key:1,value:s(n).login_pogingen,size:"small",class:"text-sm",stripedRows:""},{default:a(()=>[l(u,{field:"poging_op",header:"Tijdstip",style:{width:"180px"}},{body:a(({data:e})=>[c(o(h(e.poging_op)),1)]),_:1}),l(u,{field:"succes",header:"Resultaat",style:{width:"110px"}},{body:a(({data:e})=>[l(w,{value:e.succes?"Geslaagd":"Mislukt",severity:e.succes?"success":"danger"},null,8,["value","severity"])]),_:1}),l(u,{field:"fout_reden",header:"Reden"},{body:a(({data:e})=>[t("span",{title:K(e.fout_reden),class:P(K(e.fout_reden)&&"cursor-help border-b border-dotted border-surface-300")},o(me(e.fout_reden)),11,Ct)]),_:1}),l(u,{field:"ip_address",header:"IP-adres",style:{width:"140px"}},{body:a(({data:e})=>[c(o(e.ip_address??"â"),1)]),_:1}),l(u,{field:"browser",header:"Browser",style:{width:"120px"}},{body:a(({data:e})=>[c(o([e.platform,e.browser].filter(Boolean).join(" / ")||"â"),1)]),_:1})]),_:1},8,["value"]))]),_:1})])):y("",!0)}}});export{As as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.