PageSourceSearch

https://app.ethicog.ai/_nuxt/C1h7Mz4c.js

js ethicog.ai collected 2026-10-05 15:34:40 UTC 11,408 bytes, 1 lines download raw bytes

1import{_ as ne}from"./CiOIIpu6.js";import{_ as de}from"./B3FytjbN.js";import{a6 as ue,a4 as ce,a2 as me,S as pe,c as p,r as C,a9 as fe,g as U,h as x,Z as e,k as r,ad as _e,e as f,p as i,i as a,d as j,a1 as ve,q as B,a0 as ge,y as h,$ as we,u as M,a5 as D}from"./9h935L-y.js";import{_ as be}from"./M-1EgL-0.js";import{_ as xe}from"./wR52EOm_.js";import{_ as he}from"./BBmy0oKU.js";import{_ as ye}from"./DEyu9955.js";import{_ as ke}from"./C73ufj0m.js";import{_ as Ue}from"./DmZq9Sap.js";import{u as Ve,a as Ae,b as qe}from"./C5UgIdMQ.js";import{U as Se}from"./_Rpeq1Iu.js";import"./DbDqPIt5.js";import{u as Ee}from"./C1AjffTE.js";import{_ as Ce}from"./DxjxPQQM.js";import{g as De}from"./BvtkfH4W.js";import{u as Te}from"./DoERKxhI.js";import"./7PtWc7Km.js";import"./CrMijtuD.js";import"./Dsi2VH74.js";import"./TAgu7HZC.js";import"./DlDJFx8X.js";import"./Db764XlN.js";import"./hVCpGeW3.js";import"./UccViGix.js";import"./BpXJftin.js";import"./BCSrQubj.js";import"./Bvy1cGbp.js";const Ie={class:"flex flex-col sm:flex-row justify-between gap-4"},Re={class:"flex gap-2"},je={class:"flex flex-col gap-8"},Le={key:0,class:"mb-6 p-4 bg-amber-50 border border-amber-200 rounded-lg"},Ne={class:"flex items-center justify-between"},$e={class:"flex items-center gap-2"},Pe={class:"flex flex-col"},Oe={class:"text-amber-800 font-medium"},Fe={key:0,class:"text-amber-600 text-sm"},Be={class:"flex flex-col lg:flex-row gap-8"},Me={class:"flex-1 flex flex-col gap-4"},Qe={class:"flex flex-col sm:flex-row justify-start gap-4"},ze={class:"flex flex-col sm:flex-row justify-start gap-4"},Ge={class:"flex flex-col sm:flex-row justify-start gap-4"},He={class:"flex-1 flex flex-col gap-4 mt-6 lg:mt-0 p-4 border rounded bg-gray-50 min-w-[320px] max-w-lg"},Ze={class:"flex items-center justify-between mb-2"},Je={class:"flex flex-col sm:flex-row justify-start gap-4"},Ke={class:"relative"},We={class:"flex items-center gap-2"},Xe={class:"flex justify-end gap-2 pt-4"},St={__name:"[id]",setup(Ye){const{t:Q}=ue(),z=ce().params.id,c=me(),T=Ve(),G=Ae(),l=pe({}),V=Se,H=p(()=>De(Q)),{data:v,isLoading:L}=Ee(),{data:o,isLoading:N,refetch:I}=qe({where:{id:z},select:{id:!0,email:!0,firstName:!0,lastName:!0,phone:!0,job:!0,role:!0,quota:!0,quotaUsed:!0,quotaResetedAt:!0,workspaceId:!0,verifiedAt:!0,passwordToken:!0,passwordTokenExpiresAt:!0,createdAt:!0,updatedAt:!0,workspace:{select:{id:!0,name:!0,defaultQuota:!0}}}}),y=p(()=>{var s,t;return(s=o.value)!=null&&s.passwordToken&&!((t=o.value)!=null&&t.verifiedAt)?{sentAt:o.value.createdAt,expiresAt:o.value.passwordTokenExpiresAt}:null}),g=C(!1),Z=p(()=>o.value&&o.value.role!=="ADMIN"&&(!v.value||o.value.id!==v.value.id));fe(()=>{const s=o.value;if(!(typeof s>"u")){if(s&&v.value&&s.workspaceId!==v.value.workspaceId){D("/manage/users");return}if(s){const t=V.shape,m=Object.keys(t).reduce((k,n)=>{if(n in s)k[n]=s[n];else{const w=t[n].defaultValue;w!==void 0&&(k[n]=w)}return k},{});Object.assign(l,m),l.role==="ADMIN"&&D("/manage/users")}else D("/manage/users")}});const J=p(()=>Te(o,l,V)),K=p(()=>{var s;return[{icon:"i-heroicons-users",label:"Utilisateurs",to:"/manage/users"},{label:(s=o.value)==null?void 0:s.email}]}),u=p(()=>T.isPending.value||N.value||L.value),A=p(()=>v.value&&o.value&&v.value.id===o.value.id),$=()=>{const s=Object.keys(V.shape).reduce((t,m)=>(["id","createdAt","updatedAt","email","workspaceId","role"].includes(m)||m in l&&(t[m]=l[m]),t),{});A.value||(s.role=l.role),T.mutateAsync({data:s,where:{id:o.value.id}}).then(()=>{c.add({title:"Succès",description:"L'utilisateur a été modifié avec succès.",color:"green"})}).catch(()=>{c.add({title:"Erreur",description:"Une erreur est survenue lors de la modification de l'utilisateur.",color:"red"})}).finally(()=>{I()})},W=()=>{T.mutateAsync({data:{quotaUsed:0,quotaResetedAt:new Date},where:{id:o.value.id}}).then(()=>{c.add({title:"Succès",description:"Le quota a été réinitialisé.",color:"green"})}).catch(()=>{c.add({title:"Erreur",description:"Erreur lors de la réinitialisation du quota.",color:"red"})}).finally(()=>{I()})},X=()=>{g.value=!0},Y=()=>{g.value=!1},ee=async()=>{try{await G.mutateAsync({where:{id:o.value.id}}),c.add({title:"Succès",description:"L'utilisateur a été supprimé avec succès.",color:"green"}
1),D("/manage/users")}catch{c.add({title:"Erreur",description:"Une erreur est survenue lors de la suppression de l'utilisateur.",color:"red"})}finally{g.value=!1}},R=C(!1),te=async()=>{var s;if(y.value){R.value=!0;try{await $fetch("/api/resend-invitation",{method:"POST",body:{passwordToken:o.value.passwordToken}}),c.add({title:"Succès",description:"Invitation renvoyée avec succès",color:"green"}),I()}catch(t){c.add({title:"Erreur",description:((s=t.data)==null?void 0:s.message)||"Erreur lors du renvoi de l'invitation",color:"red"})}finally{R.value=!1}}},oe=p(()=>{var s,t;return((s=o.value)==null?void 0:s.passwordToken)&&((t=o.value)==null?void 0:t.passwordTokenExpiresAt)&&new Date(o.value.passwordTokenExpiresAt)>new Date}),q=C(!1),se=async()=>{q.value=!0;try{const s=`${window.location.origin}/set-password?token=${o.value.passwordToken}`;await navigator.clipboard.writeText(s),c.add({title:"Lien copié",description:"Le lien de définition du mot de passe a été copié dans le presse-papier.",color:"green"})}catch{c.add({title:"Erreur",description:"Impossible de copier le lien.",color:"red"})}finally{q.value=!1}},S=C(!1),ae=async()=>{var s;S.value=!0;try{(await $fetch("/api/reset-user-password",{method:"POST",body:{userId:o.value.id}})).success&&c.add({title:"Succès",description:"Un email de réinitialisation de mot de passe a été envoyé à l'utilisateur.",color:"green"})}catch(t){console.error("Erreur lors de la réinitialisation du mot de passe:",t),c.add({title:"Erreur",description:((s=t.data)==null?void 0:s.statusMessage)||"Erreur lors de l'envoi de l'email de réinitialisation.",color:"red"})}finally{S.value=!1}};return(s,t)=>{const m=ne,k=de,n=ge,w=ve,b=be,_=xe,le=he,ie=ye,P=ke,re=Ue,O=_e("tooltip");return e(N)||e(L)?(f(),U(m,{key:0,class:"w-full h-full"})):e(o)?(f(),U(P,{key:1},{header:r(()=>[i("div",Ie,[a(k,{divider:"/",links:e(K)},null,8,["links"]),i("div",Re,[e(o).verifiedAt&&!e(A)&&e(oe)?M((f(),U(n,{key:0,color:"green",icon:"i-heroicons-clipboard-document",loading:e(q),disabled:e(q),onClick:se},{default:r(()=>t[9]||(t[9]=[h(" Copier lien ")])),_:1,__:[9]},8,["loading","disabled"])),[[O,"Copier le lien de définition du mot de passe"]]):e(o).verifiedAt&&!e(A)?M((f(),U(n,{key:1,color:"orange",icon:"i-heroicons-envelope",loading:e(S),disabled:e(S),onClick:ae},{default:r(()=>t[10]||(t[10]=[h(" Email réinitialisation ")])),_:1,__:[10]},8,["loading","disabled"])),[[O,"Envoyer un email de réinitialisation de mot de passe"]]):x("",!0),a(n,{color:"primary",label:"Enregistrer",icon:"i-heroicons-check",onClick:$,disabled:!e(J)},null,8,["disabled"]),e(Z)?(f(),U(n,{key:2,color:"red",label:"Supprimer",icon:"i-heroicons-trash",onClick:X})):x("",!0)])])]),default:r(()=>[i("div",je,[a(ie,{state:e(l),schema:e(V),class:"w-full",onSubmit:$},{default:r(()=>{var E;return[t[14]||(t[14]=i("h1",{class:"text-2xl font-bold mb-6"},"Profil Utilisateur",-1)),e(y)?(f(),j("div",Le,[i("div",Ne,[i("div",$e,[a(w,{name:"i-heroicons-clock",class:"w-5 h-5 text-amber-600"}),i("div",Pe,[i("span",Oe," Invitation envoyée le "+B(new Date(e(y).sentAt).toLocaleDateString("fr-FR",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})),1),e(y).expiresAt?(f(),j("span",Fe," Expire le "+B(new Date(e(y).expiresAt).toLocaleDateString("fr-FR",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})),1)):x("",!0)])]),a(n,{size:"sm",color:"amber",variant:"soft",icon:"i-heroicons-paper-airplane",loading:e(R),onClick:te},{default:r(()=>t[11]||(t[11]=[h(" Renvoyer l'invitation ")])),_:1,__:[11]},8,["loading"])])])):x("",!0),i("div",Be,[i("div",Me,[i("div",Qe,[a(_,{label:"Email",name:"email",class:"w-full sm:w-1/2"},{default:r(()=>[a(b,{modelValue:e(l).email,"onUpdate:modelValue":t[0]||(t[0]=d=>e(l).email=d),class:"w-full",disabled:""},null,8,["modelValue"])]),_:1}),a(_,{label:"Role",name:"role",class:"w-full sm:w-1/2"},{default:r(()=>[a(le,{modelValue:e(l).role,"onUpdate:modelValue":t[1]||(t[1]=d=>e(l).role=d),options:e(H),loading:e(u),disabled:e(u)||e(A)},null,8,["modelValue","options","loading","disabled"])]),_:1})]),i("div",ze,[a(_,{label:"Prénom",name:"firstName",class:"w-full sm:w-1/2"},{default:r(()=>[a(b,{modelValue:e(l).firstName,"onUpdate:modelValue":t[2]||(t[2]=d=>e(l).firstName=d),class:"w-full",loading:e(u),disabled:e(u)},null,8,["modelValue","loading","disabled"])]),_:1}),a(_,{label:"Nom",name:"lastName",class:"w-full sm:w-1/2"},{default:r(()=>[a(b,{modelValue:e(l).lastName,"onUpdate:modelValue":t[3]||(t[3]=d=>e(l).lastName=d),class:"w-full",loading:e(u),disabled:e(u)},null,8,["modelValue","loading","disabled"])]),_:1})]),i("div",Ge,[a(_,{label:"Téléphone",name:"phone",class:"w-full sm:w-1/2"},{default:r(()=>[a(b,{modelValue:e(l).phone,"onUpdate:modelValue":t[4]||(t[4]=d=>e(l).phone=d),class:"w-full",loading:e(u),disabled:e(u)},null,8,["modelValue","loading","disabled"])]),_:1}),a(_,{label:"Fonction dans l'entreprise",name:"job",class:"w-full sm:w-1/2"},{default:r(()=>[a(b,{modelValue:e(l).job,"onUpdate:modelValue":t[5]||(t[5]=d=>e(l).job=d),class:"w-full",loading:e(u),disabled:e(u)},null,8,["modelValue","loading","disabled"])]),_:1})])]),i("div",He,[i("div",Ze,[t[13]||(t[13]=i("h2",{class:"text-lg font-semibold"},"Quota",-1)),a(n,{color:"primary",icon:"i-heroicons-arrow-path",onClick:W,loading:e(u)},{default:r(()=>t[12]||(t[12]=[h(" Réinitialiser le quota ")])),_:1,__:[12]},8,["loading"])]),a(Ce,{"quota-used":e(o).quotaUsed??0,quota:e(o).quota??((E=e(o).workspace)==null?void 0:E.defaultQuota)??0,"quota-reseted-at":e(o).quotaResetedAt,size:"md"},null,8,["quota-used","quota","quota-reseted-at"]),i("div",Je,[a(_,{label:"Définir un quota personnalisé",name:"quota",class:"w-full"},{default:r(()=>{var d;return[i("div",Ke,[a(b,{modelValue:e(l).quota,"onUpdate:modelValue":t[6]||(t[6]=F=>e(l).quota=F),modelModifiers:{number:!0},type:"number",placeholder:(d=e(o).workspace)!=null&&d.defaultQuota?`Par défaut: ${e(o).workspace.defaultQuota}`:"",loading:e(u),disabled:e(u),min:"0",class:"pr-10"},null,8,["modelValue","placeholder","loading","disabled"]),e(l).quota!==null&&e(l).quota!==void 0&&e(l).quota!==""?(f(),j("button",{key:0,t
1ype:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-red-500",onClick:t[7]||(t[7]=F=>e(l).quota=null)},[a(w,{name:"i-heroicons-x-mark",class:"w-5 h-5"})])):x("",!0)])]}),_:1})])])])]}),_:1,__:[14]},8,["state","schema"])]),a(re,{modelValue:e(g),"onUpdate:modelValue":t[8]||(t[8]=E=>we(g)?g.value=E:null)},{default:r(()=>[a(P,null,{header:r(()=>[i("div",We,[a(w,{name:"i-heroicons-exclamation-triangle",class:"w-6 h-6 text-red-500"}),t[15]||(t[15]=i("span",{class:"font-bold text-red-600"},"Supprimer l'utilisateur",-1))])]),default:r(()=>[t[18]||(t[18]=i("div",{class:"py-4 space-y-2"},[i("div",{class:"text-red-600 font-semibold"}," Êtes-vous sûr de vouloir supprimer cet utilisateur ? ")],-1)),i("div",Xe,[a(n,{color:"gray",onClick:Y},{default:r(()=>t[16]||(t[16]=[h("Annuler")])),_:1,__:[16]}),a(n,{color:"red",onClick:ee},{default:r(()=>t[17]||(t[17]=[h("Supprimer")])),_:1,__:[17]})])]),_:1,__:[18]})]),_:1},8,["modelValue"])]),_:1})):x("",!0)}}};export{St 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.