vendor: 4,916 bytes, lines 1-6
1import{z as Et,av as _t,aw as jt,j as s,ax as Nt,ay as me,az as Ue,aA as Rt,aB as Le,aC as ys,aD as Ct,aE as bs,aF as wt,Y as Ss,aG as kt,E as N,a4 as It,aH as se,G as At,R as Ft,a as Pt,u as Lt,d as Tt,g as Ut,aI as ls,A as Mt,h as qt,y as Dt,v as Ot,au as Bt,aJ as Gt,aK as zt,s as b,aL as Vt,N as Ie,aM as $t,I as Y,ah as Yt,V as J,aN as ue,aO as Te,C as Kt,B as Ht,aP as Xt,an as Es,aQ as _s,aR as Qt,as as Wt,aS as Jt,aT as Zt,P as ea}from"./index-Chtp3ooj.js";import{r as i}from"./recharts-D7Th9nWn.js";import{C as X}from"./card-bDSgrk93.js";import{L as Q}from"./label-jiPIBGgE.js";import{C as ee}from"./checkbox-5NZOrwa3.js";import{u as sa}from"./index-OGt32nKC.js";import{B as cs}from"./badge-Dj0MCDZp.js";import{S as ds,a as us,b as ms,c as ps,d as fs}from"./select-CaYex8Mn.js";import{s as ta}from"./select-all-rows-DWm-6GE4.js";import{u as aa}from"./useBlockPermissions-DFudPx3O.js";import{C as ia}from"./ChangePasswordDialog-BcJ-ohkr.js";import{B as hs}from"./BackNavButton-CrP43Kkm.js";import{r as ra}from"./navigation-return-DeleM84Q.js";import{P as na,v as oa}from"./password-policy-CbYnSzUR.js";import{v as la}from"./field-validation-eISALeJB.js";import{g as ca,i as Ae,a as Fe,S as da,c as ua,b as ma}from"./fonctions-D3GNEYeE.js";import{r as pa}from"./tenant-resolution-CLJ8QntN.js";import{s as Pe}from"./chunked-in-k4LFsKaW.js";import{S as fa}from"./save-DmnVuV0A.js";import"./supabase-CZSOkAWR.js";import"./index-BdQq_4o_.js";import"./dialog-CQPQhbZ7.js";import"./index-B4vr_g_g.js";import"./arrow-left-CoUhInmm.js";import"./error-messages-DP287TAm.js";import"./query-keys-Ba8F0Vxf.js";/** 2 * @license lucide-react v0.462.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const ha=Et("Crown",[["path",{d:"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z",key:"1vdc57"}],["path",{d:"M5 21h14",key:"11awu3"}]]);var Me="Radio",[ga,js]=bs(Me),[xa,va]=ga(Me),Ns=i.forwardRef((o,g)=>{const{__scopeRadio:a,name:h,checked:l=!1,required:r,disabled:_,value:j="on",onCheck:k,form:I,...A}=o,[T,q]=i.useState(null),R=Ue(g,v=>q(v)),F=i.useRef(!1),O=T?I||!!T.closest("form"):!0;return s.jsxs(xa,{scope:a,checked:l,disabled:_,children:[s.jsx(me.button,{type:"button",role:"radio","aria-checked":l,"data-state":ks(l),"data-disabled":_?"":void 0,disabled:_,value:j,...A,ref:R,onClick:Le(o.onClick,v=>{l||k==null||k(),O&&(F.current=v.isPropagationStopped(),F.current||v.stopPropagation())})}),O&&s.jsx(ws,{control:T,bubbles:!F.current,name:h,value:j,checked:l,required:r,disabled:_,form:I,style:{transform:"translateX(-100%)"}})]})});Ns.displayName=Me;var Rs="RadioIndicator",Cs=i.forwardRef((o,g)=>{const{__scopeRadio:a,forceMount:h,...l}=o,r=va(Rs,a);return s.jsx(Ct,{present:h||r.checked,children:s.jsx(me.span,{"data-state":ks(r.checked),"data-disabled":r.disabled?"":void 0,...l,ref:g})})});Cs.displayName=Rs;var ya="RadioBubbleInput",ws=i.forwardRef(({__scopeRadio:o,control:g,checked:a,bubbles:h=!0,...l},r)=>{const _=i.useRef(null),j=Ue(_,r),k=sa(a),I=wt(g);return i.useEffect(()=>{const A=_.current;if(!A)return;const T=window.HTMLInputElement.prototype,R=Object.getOwnPropertyDescriptor(T,"checked").set;if(k!==a&&R){const F=new Event("click",{bubbles:h});R.call(A,a),A.dispatchEvent(F)}},[k,a,h]),s.jsx(me.input,{type:"radio","aria-hidden":!0,defaultChecked:a,...l,tabIndex:-1,ref:j,style:{...l.style,...I,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});ws.displayName=ya;function ks(o){return o?"checked":"unchecked"}var ba=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],pe="RadioGroup",[Sa]=bs(pe,[ys,js]),Is=ys(),As=js(),[Ea,_a]=Sa(pe),Fs=i.forwardRef((o,g)=>{const{__scopeRadioGroup:a,name:h,defaultValue:l,value:r,required:_=!1,disabled:j=!1,orientation:k,dir:I,loop:A=!0,onValueChange:T,...q}=o,R=Is(a),F=_t(I),[O,v]=jt({prop:r,defaultProp:l??null,onChange:T,caller:pe});return s.jsx(Ea,{scope:a,name:h,required:_,disabled:j,value:O,onValueChange:v,children:s.jsx(Nt,{asChild:!0,...R,orientation:k,dir:F,loop:A,children:s.jsx(me.div,{role:"radiogroup","aria-required":_,"aria-orientation":k,"data-disabled":j?"":void 0,dir:F,...q,ref:g})})})});Fs.displayName=pe;var Ps="RadioGroupItem",Ls=i.forwardRef((o,g)=>{const{__scopeRadioGroup:a,disabled:h,...l}=o,r=_a(Ps,a),_=r.disabled||h,j=Is(a),k=As(a),I=i.useRef(null),A=Ue(g,I),T=r.value===l.value,q=i.useRef(!1);return i.useEffect(()=>{const R=O=>{ba.includes(O.key)&&(q.current=!0)},F=()=>q.current=!1;return document.addEventListener("keydown",R),document.addEventListener("keyup",F),()=>{document.removeEventListener("keydown",R),document.removeEventListener("keyup",F)}},[]),s.jsx(Rt,{asChild:!0,...j,focusable:!_,active:T,children:s.jsx(Ns,{disabled:_,required:r.required,
6checked:T,...k,...l,name:r.name,ref:A,onCheck:()=>r.onValueChange(l.value),onKeyDown:Le(R=>{R.key==="Enter"&&R.preventDefault()}),onFocus:Le(l.onFocus,()=>{var R;q.current&&((R=I.current)==null||R.click())})})})});Ls.displayName=Ps;var ja="RadioGroupIndicator",Ts=i.forwardRef((o,g)=>{const{__scopeRadioGroup:a,...h}=o,l=As(a);return s.jsx(Cs,{...l,...h,ref:g})});Ts.displayName=ja;var Us=Fs,Ms=Ls,Na=Ts;const qs=i.forwardRef(({className:o,...g},a)=>s.jsx(Us,{className:Ss("grid gap-2",o),...g,ref:a}));qs.displayName=Us.displayName;const Ds=i.forwardRef(({className:o,...g},a)=>s.jsx(Ms,{ref:a,className:Ss("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",o),...g,children:s.jsx(Na,{className:"flex items-center justify-center",children:s.jsx(kt,{className:"h-2.5 w-2.5 fill-current text-current"})})}));Ds.displayName=Ms.displayName;const Ra=["Individuelle Accident","Frais de Scolarité","Voyage"];function Ca(o){const{isEditing:g,userType:a,entityFromUrlEspace:h,linkedEntities:l}=o;return g?l.length>0&&l.every(r=>se(r.espace)):a==="syndics"||se(h??"")||l.length>0&&l.every(r=>se(r.espace))}function wa(o){const{isEditing:g,userType:a,entityFromUrlEspace:h,linkedEntities:l}=o;return g?l.length>0&&l.every(r=>r.espace===N.entreprise.key):a==="entreprise"||h===N.entreprise.key||l.length>0&&l.every(r=>r.espace===N.entreprise.key)}function ka(o){const{isEditing:g,isFides:a,entityIdFromUrl:h,entityFromUrlEspace:l,targetIsManager:r,callerEntityIds:_,loadedEntityIds:j}=o;return g?[...j]:h?!a&&l===N.syndic.key&&!r?[]:[h]:a?[]:[..._]}function Ia(o,g,a){return g?o.filter(h=>It.includes(h)):a?o.filter(h=>!Ra.includes(h)):o}const gs=[{key:"syndic",label:"Syndics",icon:J},{key:"ecole",label:"Ãcoles",icon:ue},{key:"association",label:"Scouts",icon:Te},{key:"entreprise",label:"Entreprises",icon:J}],xs=o=>Xt([...new Set(o.map(Es))]),W=[{value:"super_admin",label:"Super Admin (FIDES)"},{value:"admin_technique",label:"Admin Technique (FIDES)"},{value:"superviseur",label:"Superviseur (FIDES)"},{value:"gestionnaire",label:"Gestionnaire (FIDES)"},{value:"manager",label:"Manager"},{value:"utilisateur",label:"Utilisateur"},{value:"utilisateur_fondation",label:"Utilisateur Fondation"}],Aa={syndics:[N.syndic.key],ecole:[N.ecole.key],fondation:[N.ecole.key],scouts:[N.association.key],entreprise:[N.entreprise.key],fides:_s.map(o=>o.key)},Fa=[{value:"fondation",label:"Fondation"},{value:"ecole",label:"Ãcole"},{value:"entreprise",label:"Entreprise"},{value:"scouts",label:"Scouts"},{value:"syndics",label:"Syndics"},{value:"fides",label:"Fides"}],vs={fondation:["utilisateur_fondation"],ecole:["manager","utilisateur"],scouts:["manager","utilisateur"],syndics:["manager","utilisateur"],fides:Wt},ri=()=>{const{id:o}=At(),[g]=Ft(),a=!!o,h=Pt(),{toast:l}=Lt(),{isFides:r,user:_,roles:j}=Tt(),k=Ut(),I=()=>ma(k),A=ls(j),{currentEspace:T}=Mt(),{canBlock:q}=aa(T),{espace:R,loading:F}=qt(),O=(e,t)=>{if(e.code===da){l({title:"Session expirée",description:ua,variant:"destructive"}),h(ea.auth);return}l({title:t,description:e.message,variant:"destructive"})},v=g.get("entity_id"),fe=ra(`?${g.toString()}`,r)||(v?Dt(Ot("school",v),{tab:"utilisateurs"}):"/utilisateurs"),[d,Os]=i.useState(""),[V,qe]=i.useState(""),[te,De]=i.useState(""),[Oe,he]=i.useState(""),[ie,ge]=i.useState(""),xe=i.useRef(""),[re,Be]=i.useState(""),[ne,Bs]=i.useState(""),[B,oe]=i.useState([]),[Ge,Gs]=i.useState([]),[ae,zs]=i.useState(!1),[Vs,$s]=i.useState(!1),[P,ve]=i.useState([]),[ze,Ys]=i.useState([]),[Ve,Ks]=i.useState([]),[Hs,$e]=i.useState(null),[Ye,D]=i.useState(!1),[Z,Ke]=i.useState(""),[Xs,Qs]=i.useState(new Set),[Ws,Js]=i.useState([]),[ye,He]=i.useState([]),[le,be]=i.useState({}),[Xe,Zs]=i.useState(!1),[Se,Qe]=i.useState(!1),[U,et]=i.useState(null),[st,tt]=i.useState(!1),[Ee,at]=i.useState({}),[_e,We]=i.useState([]),[Je,Ze]=i.useState(!1),je=B.includes("manager"),es=i.useMemo(()=>new Set(ka({isEditing:a,isFides:r,entityIdFromUrl:v,entityFromUrlEspace:U,targetIsManager:je,callerEntityIds:ze,loadedEntityIds:Ve})),[a,r,v,U,je,ze,Ve]),S=Hs??es,M=!a&&r&&!v,w=r?a?Bt(j,Ge):!0:a?ae&&q("utilisateurs","utilisateurs","update")&&Gt(j,Ge):q("utilisateurs","utilisateurs","create"),Ne=a&&w&&zt(j),it=d==="syndics"||se(U??"")||P.some(e=>S.has(e.id)&&se(e.espace)),rt=d==="entreprise"||U===N.entreprise.key||P.some(e=>S.has(e.id)&&e.espace===N.entreprise.key),ss=Ia(Ws,it,rt);i.useEffect(()=>{!M||!d||(oe([]),$e(null),he(""))},[d]),i.useEffect(()=>{b.from("contrat_espace_config").select("type_contrat").eq("is_active",!0).then(({data:e})=>{e&&Js(xs(e.map(t=>t.type_contrat)))}),ta(({afterId:e,pageSize:t})=>{const n=b.from("fondation_ecoles").select("id, parent_entity_id, child_entity_id",{count:"exact"}).order("id").limit(t);return e?n.gt("id",e):n}).then(e=>{const t={};e.forEach(n=>{var c;n.parent_entity_id&&n.child_entity_id&&(t[c=n.parent_entity_id]??(t[c]=[])).push(n.child_entity_id)}),at(t)}).catch(e=>console.error("Erreur de chargement des liens syndic/immeubles:",e))},[]);const Re=e=>Promise.all(e.map(t=>b.from("ecoles").select("id, nom, espace, is_fondation, code_postal, ville").eq("espace",t).order("nom"))).then(t=>t.flatMap(n=>n.data??[]));i.useEffect(()=>{if(a)return;const e=d?Aa[d]:U?[U==="immeuble"?"syndic":U]:void 0;e!=null&&e.length&&Re(e).then(ve)},[d,a,U]),i.useEffect(()=>{if(a||r||!v||U!=="syndic")return;const e=Ee[v]??[];if(e.length===0){We([]),Ze(!0);return}b.from("ecoles").select("id, nom, espace, code_postal, ville").in("id",e).order("nom").then(({data:t})=>{We(t??[]),Ze(!0)})},[a,r,v,U,Ee]),i.useEffect(()=>{!v||a||b.from("ecoles").select("espace, is_fondation").eq("id",v).single().then(({data:e})=>{e&&(et(e.espace),tt(!!e.is_fondation))})},[v,a]),i.useEffect(()=>{r||!_||a||b.from("ecole_utilisateurs").select("entity_id").eq("user_id",_.id).then(({data:e})=>{Ys((e??[]).map(t=>t.entity_id).filter(t=>typeof t=="string"))})},[r,_,a]),i.useEffect(()=>{if(!a)return;(async()=>{var y;const[t,n,c,E,x]=await Promise.all([b.from("profiles").select("*").eq("user_id",o).single(),b.from("user_roles").select("role").eq("user_id",o),b.from("ecole_utilisateurs").select("entity_id, ecoles!ecole_utilisateurs_entity_id_fkey(espace)").eq("user_id",o),b.from("ecole_gestionnaires").select("entity_id, ecoles!ecole_gestionnaires_entity_id_fkey(espace)").eq("gestionnaire_id",o),b.from("user_module_access").select("type_contrat, is_active").eq("user_id",o)]);if(t.data){const f=t.data;qe(f.prenom),De(f.nom),he(f.fonction||""),ge(f.email),xe.current=f.email??"",Be(f.telephone||""),Qe(!!f.sso_agse)}else $s(!0);const u=((y=n.data)==null?void 0:y.map(f=>f.role))??[],m=Ie(u);if(n.data){const f=Qt(u);oe(m?u:f?[f]:[]),Gs(u)}const L=m?E:c;if(L.data){const f=L.data,p=f.map(C=>C.entity_id).filter(C=>typeof C=="string"),de=p.length>0&&f.every(C=>{var H;return se(((H=C.ecoles)==null?void 0:H.espace)??"")}),ke=!r&&de?f.filter(C=>{var H;return((H=C.ecoles)==null?void 0:H.espace)==="immeuble"}).map(C=>C.entity_id).filter(C=>typeof C=="string"):p;if(Ks(ke),ke.length>0){const C=new Set(ke),H=[...new Set(f.filter($=>C.has($.entity_id)).map($=>{var os;return(os=$.ecoles)==null?void 0:os.espace}).filter($=>!!$))],ns=[...new Set(H.flatMap($=>$==="immeuble"?["syndic"]:[$]))];ns.length>0&&ve(await Re(ns))}else ve(await Re(_s.map(C=>C.key)))}if(x.data){const f={};x.data.forEach(p=>{const de=Es(p.type_contrat);f[de]=(f[de]??!1)||p.is_active}),be(f),Zs(!0)}zs(!0)})()},[o,a,r]),i.useEffect(()=>{if(S.size===0){He([]);return}(async()=>{const t=Array.from(S),[n,c]=await Promise.all([Pe(t,m=>b.from("contrats").select("type_contrat").in("entity_id",m)),Pe(t,m=>b.from("fondation_ecoles").select("parent_entity_id").in("child_entity_id",m))]),E=n.map(m=>m.type_contrat);let x=[];if(c.length>0){const m=[...new Set(c.map(y=>y.parent_entity_id).filter(y=>typeof y=="string"))];x=(await Pe(m,y=>b.from("contrats").select("type_contrat").in("entity_id",y).eq("is_shared",!0))).map(y=>y.type_contrat)}const u=xs([...E,...x]);if(He(u),!a&&!Xe){const m={};u.forEach(L=>{m[L]=!0}),be(m)}})()},[S,a,Xe]);const nt=e=>{oe(t=>t.includes(e)?t.filter(n=>n!==e):[...t,e])},Ce=e=>{$e(t=>{const n=new Set(t??es);return n.has(e)?n.delete(e):n.add(e),n})},ot=e=>{be(t=>({...t,[e]:t[e]===!1}
6))},we=()=>[...new Set([...ye,...Object.keys(le)])].map(t=>({type_contrat:t,is_active:ye.includes(t)?le[t]!==!1:le[t]===!0})),K=P.filter(e=>S.has(e.id)),G=Ca({isEditing:a,userType:d,entityFromUrlEspace:U,linkedEntities:K}),lt=wa({isEditing:a,userType:d,entityFromUrlEspace:U,linkedEntities:K}),ct=Array.from(new Set([...K.filter(e=>e.espace==="immeuble").map(e=>e.id),..._e.filter(e=>S.has(e.id)).map(e=>e.id)])),dt=new Set(Object.entries(Ee).filter(([,e])=>e.some(t=>ct.includes(t))).map(([e])=>e)),ut=G?(()=>{const e=P.filter(t=>t.espace==="syndic"&&(S.has(t.id)||dt.has(t.id)));return e.length>0?e:K})():P.filter(e=>S.has(e.id)),mt=(()=>{if(K.length>0){const e=new Set(K.map(n=>n.espace==="immeuble"?"syndic":n.espace)),t=Vt.find(n=>e.has(n));if(t)return t}return r?d:R})(),pt=ca(mt),ce=a?Ie(B)||ae&&S.size===0:d==="fides",ts=!ce,ft=async()=>{if(!ie.trim()){l({title:"Email requis",variant:"destructive"});return}if(!r&&G&&!je&&S.size===0){l({title:"Sélectionnez au moins un immeuble (interlocuteur)",variant:"destructive"});return}if(D(!0),!w){l({title:"Droits insuffisants pour modifier cet utilisateur",variant:"destructive"}),D(!1);return}const e=ce?"":Oe;if(a&&!r){const t=await Ae("create-user",{action:"update",user_id:o,prenom:V.charAt(0).toUpperCase()+V.slice(1),nom:te.toUpperCase(),fonction:e,telephone:re,roles:B,module_access:we()});if(Fe(t)){O(t,"Erreur"),D(!1);return}I(),l({title:"Utilisateur mis à jour"}),h(fe),D(!1);return}if(a){const t=ie.trim().toLowerCase();if(Ne&&t!==xe.current.toLowerCase()){const u=la(t);if(u){l({title:u,variant:"destructive"}),D(!1);return}const m=await Ae("create-user",{action:"update_email",user_id:o,email:t});if(Fe(m)){O(m,"Ãchec de la modification de l'email"),D(!1);return}xe.current=t,ge(t)}const{error:n}=await b.from("profiles").update({prenom:V.charAt(0).toUpperCase()+V.slice(1),nom:te.toUpperCase(),fonction:e,telephone:re,sso_agse:Se}).eq("user_id",o),{error:c}=await b.from("user_roles").delete().eq("user_id",o);let E=null;if(B.length>0&&(E=(await b.from("user_roles").insert(B.map(m=>({user_id:o,role:m})))).error),n||c||E){console.error("user update failed",{profErr:n,delErr:c,insErr:E}),l({title:"Ãchec de la mise à jour",description:"Veuillez réessayer.",variant:"destructive"}),D(!1);return}if(!Ie(B)&&(await b.from("ecole_utilisateurs").delete().eq("user_id",o),S.size>0)){const u=Array.from(S),m=await Promise.all(u.map(y=>pa(y))),L=u.map((y,f)=>({entityId:y,tenantId:m[f]})).filter(y=>!!y.tenantId);L.length>0&&await b.from("ecole_utilisateurs").insert(L.map(({entityId:y,tenantId:f})=>({entity_id:y,tenant_id:f,user_id:o})))}await b.from("user_module_access").delete().eq("user_id",o);const x=we();x.length>0&&await b.from("user_module_access").insert(x.map(({type_contrat:u,is_active:m})=>({user_id:o,type_contrat:u,is_active:m}))),I(),l({title:"Utilisateur mis à jour"}),h(fe)}else{if(B.length===0){l({title:"Sélectionnez au moins un rôle",variant:"destructive"}),D(!1);return}if(!ne){l({title:"Mot de passe requis",variant:"destructive"}),D(!1);return}const t=oa(ne);if(t){l({title:t,variant:"destructive"}),D(!1);return}const n=await Ae("create-user",{email:ie,password:ne,prenom:V.charAt(0).toUpperCase()+V.slice(1),nom:te.toUpperCase(),fonction:e,telephone:re,roles:B,entity_ids:Array.from(S),sso_agse:Se,module_access:we()});Fe(n)?O(n,"Erreur"):(I(),l({title:"Utilisateur créé avec succès"}),h(fe))}D(!1)},ht=()=>{if(a&&!ae)return[];const e=(()=>{if(ce)return W.filter(c=>{if(!vs.fides.includes(c.value)||c.value==="admin_technique"&&!j.includes("admin_technique"))return!1;const E=ls([c.value]);return A>=3?!0:A===2?E<2:!1});if(G)return W.filter(c=>["manager","utilisateur"].includes(c.value));if(a||!M)return v&&st?W.filter(c=>c.value==="utilisateur_fondation"):v?W.filter(c=>["manager","utilisateur"].includes(c.value)):W;const n=vs[d];return n?W.filter(c=>n.includes(c.value)):W})(),t=a?Jt(j):Zt(j);return r?e:e.filter(n=>t.includes(n.value))},gt=()=>d==="fondation"?P.filter(e=>e.is_fondation):d==="ecole"?P.filter(e=>!e.is_fondation&&e.espace===N.ecole.key):d==="scouts"?P.filter(e=>e.espace===N.association.key):d==="syndics"?P.filter(e=>e.espace===N.syndic.key):P,xt=(!a||ae)&&!ce&&(r||!F)&&(a||!M||d!=="fondation"&&d!=="entreprise"),vt=a?r&&!v:M&&!!d&&d!=="entreprise"||!M&&r&&!v||!M&&!r&&G&&!!v,as=!a&&M&&["entreprise"].includes(d),yt=a||!M||!!d&&!as,is=ht(),rs=gt(),z=Z.trim()?rs.filter(e=>e.nom.toLowerCase().includes(Z.trim().toLowerCase())):rs,bt=()=>d==="fides"?"Suivi et gestion de":"Rattaché à ",St=()=>{if(d==="fondation"){const e=z.filter(t=>t.is_fondation);return[{icon:ha,label:"Fondations",entities:e}]}if(d==="ecole"){const e=z.filter(t=>!t.is_fondation);return[{icon:ue,label:"Ãcoles",entities:e}]}if(d==="scouts")return[{icon:Te,label:"Scouts",entities:z}];if(d==="syndics")return[{icon:J,label:"Syndics",entities:z}];if(d==="fides"){const e=z.filter(x=>x.is_fondation),t=z.filter(x=>
6!x.is_fondation&&x.espace===N.ecole.key),n=z.filter(x=>x.espace===N.entreprise.key),c=z.filter(x=>x.espace===N.syndic.key),E=z.filter(x=>x.espace===N.association.key);return[{icon:ue,label:"Ãcoles / Fondations",entities:[...e,...t]},{icon:J,label:"Entreprises",entities:n},{icon:J,label:"Syndics",entities:c},{icon:Te,label:"Scouts",entities:E}]}return null};return a&&ae&&Vs?s.jsxs("div",{className:"p-6 md:p-8",children:[s.jsx(hs,{className:"mb-4 gap-1 text-muted-foreground",fallbackPath:"/utilisateurs"}),s.jsx($t,{message:"Cet utilisateur n'appartient pas à vos entités."})]}):s.jsxs("div",{className:"p-6 md:p-8",children:[s.jsx(hs,{className:"mb-4 gap-1 text-muted-foreground",fallbackPath:"/utilisateurs"}),s.jsx("h1",{className:"mb-6 text-2xl font-bold text-foreground",children:a?"Modifier l'utilisateur":"Nouvel utilisateur"}),M&&s.jsxs(X,{className:"mb-6 p-6",children:[s.jsx("h2",{className:"form-section-title mb-4",children:"Type d'utilisateur"}),s.jsx("div",{className:"max-w-sm",children:s.jsxs(ds,{value:d,onValueChange:e=>Os(e),children:[s.jsx(us,{children:s.jsx(ms,{placeholder:"Sélectionner le type d'utilisateur"})}),s.jsx(ps,{children:Fa.filter(e=>e.value!=="fides"||A>=2).map(e=>s.jsx(fs,{value:e.value,children:e.label},e.value))})]})})]}),as&&s.jsx(X,{className:"mb-6 p-6",children:s.jsx("p",{className:"text-sm text-muted-foreground",children:"La création d'utilisateurs pour cet espace sera disponible ultérieurement."})}),yt&&s.jsxs(s.Fragment,{children:[s.jsxs(X,{className:"mb-6 p-6",children:[s.jsx("h2",{className:"form-section-title mb-4",children:"Informations"}),s.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx(Q,{className:"field-label",children:"Prénom"}),s.jsx(Y,{value:V,onChange:e=>qe(e.target.value),disabled:!w})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(Q,{className:"field-label",children:"Nom"}),s.jsx(Y,{value:te,onChange:e=>De(e.target.value),disabled:!w})]}),xt&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(Q,{className:"field-label",children:"Fonction"}),s.jsxs(ds,{value:Oe,onValueChange:he,disabled:!w,children:[s.jsx(us,{children:s.jsx(ms,{placeholder:"Sélectionner"})}),s.jsx(ps,{children:pt.map(e=>s.jsx(fs,{value:e,children:e},e))})]})]}),(a||!M)&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(Q,{className:"field-label",children:v?G?"Syndic":lt?"Entreprise":"Ãcole":"Entité de rattachement"}),s.jsx(Y,{value:ut.map(e=>e.nom).join(", ")||"â",disabled:!0,className:"bg-muted"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsxs(Q,{className:"field-label",children:["Email ",s.jsx("span",{className:"required-marker",children:"*"})]}),s.jsx(Y,{type:"email",value:ie,onChange:e=>ge(e.target.value),disabled:a&&!Ne}),Ne&&s.jsx("p",{className:"text-xs text-muted-foreground",children:"Modifier l'email change l'identifiant de connexion de l'utilisateur."})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx(Q,{className:"field-label",children:"Téléphone"}),s.jsx(Y,{type:"tel",name:"telephone",autoComplete:"off","data-lpignore":"true","data-1p-ignore":!0,value:re,onChange:e=>Be(e.target.value),disabled:!w})]}),!a&&s.jsxs("div",{className:"space-y-2",children:[s.jsx(Q,{className:"field-label",children:"Mot de passe"}),s.jsx(Y,{type:"password",autoComplete:"new-password",value:ne,onChange:e=>Bs(e.target.value),minLength:12,placeholder:na,disabled:!w})]})]}),(()=>{const e=P.filter(n=>S.has(n.id)).map(n=>n.espace);return d==="scouts"||e.includes("association")?s.jsxs("div",{className:"mt-4 flex items-start gap-2 rounded-md border border-border bg-muted/40 p-3",children:[s.jsx(ee,{id:"sso-agse",checked:Se,onCheckedChange:n=>Qe(n===!0),className:"mt-0.5",disabled:!w}),s.jsxs("label",{htmlFor:"sso-agse",className:"text-sm cursor-pointer",children:[s.jsx("span",{className:"font-medium",children:"Connexion via SSO AGSE"}),s.jsx("span",{className:"block text-xs text-muted-foreground",children:"L'utilisateur se connectera avec son compte AGSE. Le paramétrage du fournisseur sera disponible ultérieurement."})]})]}):null})()]}),a&&w&&s.jsxs(X,{className:"mb-6 p-6",children:[s.jsx("h2",{className:"form-section-title mb-4",children:"Mot de passe"}),s.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:"Réinitialisez le mot de passe de cet utilisateur. Il devra utiliser le nouveau mot de passe pour se connecter."}),s.jsx(ia,{targetUserId:o,targetUserName:Yt({prenom:V,nom:te})})]}),s.jsxs(X,{className:"mb-6 p-6",children:[s.jsxs("h2",{className:"form-section-title mb-4",children:[ts?"Rôle":"Rôles",!a&&s.jsx("span",{className:"required-marker",children:"*"})]}),ts?s.jsx(qs,{className:"grid gap-3 sm:grid-cols-2",value:B[0]??"",onValueChange:e=>oe([e]),disabled:!w,children:is.map(e=>s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Ds,{id:e.value,value:e.value,disabled:!w}),s.jsx("label",{htmlFor:e.value,className:"text-sm cursor-pointer",children:e.label})]},e.value))}):s.jsx("div",{className:"grid gap-3 sm:grid-cols-2",children:is.map(e=>s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(ee,{id:e.value,checked:B.includes(e.value),onCheckedChange:()=>nt(e.value),disabled:!w}),s.jsx("label",{htmlFor:e.value,className:"text-sm cursor-pointer",children:e.label})]},e.value))})]}),vt&&s.jsxs(X,{className:"mb-6 p-6",children:[s.jsx("h2",{className:"form-section-title mb-4",children:M&&d?bt():"Rattachement aux entités"}),a||!M?s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:G?r?"Sélectionnez les syndics auxquels cet utilisateur a accès.":"Sélectionnez les immeubles auxquels cet utilisateur a accès en tant qu'interlocuteur.":"Sélectionnez les entités auxquelles cet utilisateur a accès."}),s.jsx(Y,{placeholder:G?r?"Rechercher un syndic...":"Rechercher un immeuble...":"Rechercher une entité par nomâ¦",value:Z,onChange:e=>Ke(e.target.value),className:"mb-4 max-w-md"}),(()=>{const e=P.reduce((c,E)=>{var x;return(c[x=E.espace]??(c[x]=[])).push(E),c},{});!r&&G&&(e.immeuble=_e);const t=new Set(K.map(c=>
6c.espace==="immeuble"?"syndic":c.espace));return(r&&a?t.size>0?gs.filter(c=>t.has(c.key)):gs:G?r?[{key:"syndic",label:"Syndics",icon:J}]:[{key:"immeuble",label:"Immeubles",icon:J}]:[{key:"ecole",label:"Ãcoles",icon:ue}]).map(({key:c,label:E,icon:x})=>{const u=c==="syndic",m=c==="immeuble",L=e[c]||[],y=Z.trim()?L.filter(p=>p.nom.toLowerCase().includes(Z.trim().toLowerCase())):L,f=L.filter(p=>S.has(p.id)).length;return s.jsxs("div",{className:"mb-5 last:mb-0",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[s.jsx(x,{className:"h-4 w-4 text-primary"}),s.jsx("span",{className:"font-medium text-sm",children:E}),f>0&&s.jsxs(cs,{variant:"secondary",className:"text-xs",children:[f," rattaché",f>1?"s":""]})]}),m&&Je&&L.length===0?s.jsx("p",{className:"text-xs text-muted-foreground ml-6",children:"Aucun immeuble n'existe encore pour ce syndic. Créez d'abord un immeuble avant de pouvoir créer un utilisateur."}):y.length===0?s.jsx("p",{className:"text-xs text-muted-foreground ml-6",children:"Aucune entité"}):u||m?s.jsx("div",{className:"grid gap-x-4 gap-y-3 sm:grid-cols-2 lg:grid-cols-3 ml-6",children:y.map(p=>s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(ee,{id:`entity-${p.id}`,checked:S.has(p.id),onCheckedChange:()=>Ce(p.id)}),s.jsxs("label",{htmlFor:`entity-${p.id}`,className:"text-sm cursor-pointer truncate",children:[p.nom,(p.code_postal||p.ville)&&s.jsxs("span",{className:"text-muted-foreground",children:[" ","â"," ",[p.code_postal,p.ville].filter(Boolean).join(" ")]})]})]},p.id))}):s.jsx("div",{className:"grid gap-2 sm:grid-cols-2 lg:grid-cols-3 ml-6",children:y.map(p=>s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(ee,{id:`entity-${p.id}`,checked:S.has(p.id),onCheckedChange:()=>Ce(p.id)}),s.jsxs("label",{htmlFor:`entity-${p.id}`,className:"text-sm cursor-pointer truncate",children:[p.nom,p.espace==="ecole"&&p.code_postal&&s.jsxs("span",{className:"text-xs text-muted-foreground",children:[" ","(",p.code_postal,")"]})]})]},p.id))})]},c)})})()]}):s.jsxs(s.Fragment,{children:[(d==="ecole"||d==="fides"||d==="scouts"||d==="syndics")&&s.jsx(Y,{placeholder:d==="syndics"?"Rechercher un syndic...":"Rechercher par nomâ¦",value:Z,onChange:e=>Ke(e.target.value),className:"mb-4 max-w-md"}),(()=>{const e=St();return e?e.map(t=>{const n=t.entities.filter(u=>S.has(u.id)).length,c=t.icon,E=Xs.has(t.label),x=()=>{Qs(u=>{const m=new Set(u);return m.has(t.label)?m.delete(t.label):m.add(t.label),m})};return s.jsxs("div",{className:"mb-5 last:mb-0",children:[s.jsxs("button",{type:"button",onClick:x,className:"flex items-center gap-2 mb-2 w-full text-left hover:opacity-80 transition-opacity","aria-expanded":!E,children:[s.jsx(Kt,{className:`h-4 w-4 text-muted-foreground transition-transform ${E?"-rotate-90":""}`}),s.jsx(c,{className:"h-4 w-4 text-primary"}),s.jsx("span",{className:"font-medium text-sm",children:t.label}),n>0&&s.jsxs(cs,{variant:"secondary",className:"text-xs",children:[n," rattaché",n>1?"s":""]})]}),!E&&(t.entities.length===0?s.jsx("p",{className:"text-xs text-muted-foreground ml-6",children:"Aucune entité"}):s.jsx("div",{className:"grid gap-2 sm:grid-cols-2 lg:grid-cols-3 ml-6",children:t.entities.map(u=>s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(ee,{id:`entity-${u.id}`,checked:S.has(u.id),onCheckedChange:()=>Ce(u.id)}),s.jsxs("label",{htmlFor:`entity-${u.id}`,className:"text-sm cursor-pointer truncate",children:[u.nom,u.espace==="ecole"&&u.code_postal&&s.jsxs("span",{className:"text-xs text-muted-foreground",children:[" ","(",u.code_postal,")"]}),u.espace==="syndic"&&(u.code_postal||u.ville)&&s.jsxs("span",{className:"text-muted-foreground",children:[" ","â"," ",[u.code_postal,u.ville].filter(Boolean).join(" ")]})]})]},u.id))}))]},t.label)}):null})()]})]}),ss.length>0&&s.jsxs(X,{className:"mb-6 p-6",children:[s.jsx("h2",{className:"form-section-title mb-2",children:"Modules"}),s.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"Modules activés selon les contrats souscrits par les entités rattachées. Les modules grisés ne sont pas couverts par un contrat actif."}),s.jsx("div",{className:"grid gap-3 sm:grid-cols-2",children:ss.map(e=>{const t=ye.includes(e);return s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(ee,{id:`module-${e}`,checked:t&&le[e]!==!1,onCheckedChange:()=>t&&ot(e),disabled:!t||!w}),s.jsx("label",{htmlFor:`module-${e}`,className:`text-sm ${t?"cursor-pointer":"cursor-not-allowed text-muted-foreground"}`,children:e})]},e)})})]}),w&&s.jsx("div",{className:"flex justify-end",children:s.jsxs(Ht,{onClick:ft,disabled:Ye||!a&&!r&&G&&Je&&_e.length===0,className:"gap-2",children:[s.jsx(fa,{className:"h-4 w-4"}),Ye?"Enregistrementâ¦":"Enregistrer"]})})]})]})};export{ri 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.