PageSourceSearch

https://baobab-scholar.com/build/assets/show-DfyOeaXT.js

js baobab-scholar.com collected 2026-10-02 01:25:04 UTC 15,703 bytes, 1 lines download raw bytes

1import{at as ue,a as fe,u as ge,r as v,j as e,p as Ne,P as ve,z as be,G as _e,B as ye,H as we,J as Se,K as u,b as K,L as Ce,aC as ke,aM as W,aX as Ae,aY as Me,aq as Ee,m as c,n as d,a5 as ze,Y as a,W as o,X as x,T as b,q as _,v as m,w as l,x as y,y as t,t as M}from"./app-Cmw2D6MA.js";import{L as Re,B as Te,C as Ue,d as G}from"./ConfirmationModal-DNNyrQMg.js";import{U as g}from"./UserService-lRqrK8D4.js";import{P as Be}from"./pencil-B3xUHpOo.js";import{L as Ie}from"./layers-FeiOGwAn.js";import"./ApiRoute-BN4CwzK7.js";const Pe={is_enable:{label:"Actif",variant:"success"},is_disable:{label:"Inactif",variant:"warning"},is_blocked:{label:"Bloqué",variant:"danger"}},Fe=()=>{var I,P,L,$,Y,q,H,O,F,V,J;const{userId:S}=ue(),X=fe(),{user:C}=ge(),[s,Q]=v.useState(null),[E,z]=v.useState(!0),[Z,R]=v.useState(!1),[w,D]=v.useState({title:"",message:"",confirmButtonText:"",action:null}),T=((I=C==null?void 0:C.roles)==null?void 0:I.map(n=>n.name))||[],ee=T.includes("admin"),se=T.includes("superadmin"),k=async()=>{var n,i;z(!0);try{const r=await g.getById(S);Q(r==null?void 0:r.data)}catch(r){M.error(((i=(n=r.response)==null?void 0:n.data)==null?void 0:i.message)||"Erreur lors de la récupération des détails.")}finally{z(!1)}};v.useEffect(()=>{S&&k()},[S]);const f=(n,i,r,j)=>{D({title:n,message:i,confirmButtonText:r,action:j}),R(!0)},ne=()=>R(!1),N=(n,i,{isDelete:r}={})=>async({code_admin:j})=>{await n(s==null?void 0:s.id,{code_admin:j}),M.success(i),r?X("/admin/users"):k()},ie=N(g.block,"Utilisateur bloqué."),re=N(g.unblock,"Utilisateur débloqué."),le=N(g.disable,"Utilisateur désactivé."),te=N(g.enable,"Utilisateur activé."),ce=N(g.delete,"Utilisateur supprimé.",{isDelete:!0}),A=n=>async({code_admin:i})=>{await g.resetMacAddress(s==null?void 0:s.id,{code_admin:i,platform:n,verification_method:"admin"}),M.success(`Appareil ${n==="both"?"mobile + desktop":n} réinitialisé.`),k()},de=A("mobile"),ae=A("desktop"),oe=A("both"),xe=()=>{var n;if(se)return!0;if(ee){const i=((n=s==null?void 0:s.role)==null?void 0:n.map(r=>r.name))||[];return!i.includes("admin")&&!i.includes("superadmin")}return!1};if(E||!s)return e.jsxs("div",{className:"flex flex-col items-center gap-2 py-20 text-muted-foreground",children:[e.jsx(Ne,{size:"lg",className:"text-primary"}),e.jsx("p",{children:"Chargement…"})]});const U=Pe[s.status]||{label:"—",variant:"neutral"},h=n=>n?G(n).format("DD MMM YYYY HH:mm"):"—",B=n=>n?G(n).format("DD MMMM YYYY à HH:mm"):"—",me=((s==null?void 0:s.semestres)||[]).map(n=>n.sigle||n.nom).filter(Boolean).join(", "),p=s==null?void 0:s.jeton,he=n=>{const i={valide:["Validé","success"],en_attente:["En attente","warning"],rejete:["Rejeté","danger"],refuse:["Refusé","danger"]},[r,j]=i[n]||[n||"—","neutral"];return e.jsx(a,{variant:j,children:r})},pe=[["INE",s==null?void 0:s.ine],["Surnom",s==null?void 0:s.surnom],["Email",s==null?void 0:s.email],["Téléphone",s==null?void 0:s.telephone],["WhatsApp",s==null?void 0:s.whatsapp],["Genre",s==null?void 0:s.sexe],["Pays",(P=s==null?void 0:s.country)==null?void 0:P.name],["Université",((L=s==null?void 0:s.universite)==null?void 0:L.nom)||(($=s==null?void 0:s.universite)==null?void 0:$.sigle)],["Département",(Y=s==null?void 0:s.departement)==null?void 0:Y.nom],["Filière",(q=s==null?void 0:s.filiere)==null?void 0:q.nom],["Semestres",me],["Filière (collaborateur)",s==null?void 0:s.collaborateur_filiere],["Inscription",B(s==null?void 0:s.created_at)],["Mise à jour",B(s==null?void 0:s.updated_at)]];return e.jsxs("div",{className:"mx-auto max-w-7xl",children:[e.jsx(ve,{title:`${(s==null?void 0:s.nom)||""} ${(s==null?void 0:s.prenom)||""}`.trim()||"Utilisateur",breadcrumb:[{label:"Utilisateurs",href:"/admin/users"},{label:"Détail"}],actions:xe()&&e.jsxs(be,{children:[e.jsx(_e,{asChild:!0,children:e.jsx(ye,{variant:"secondary",size:"icon",children:e.jsx(we,{size:18})})}),e.jsxs(Se,{children:[e.jsx(u,{asChild:!0,children:e.jsxs(K,{to:`/admin/users/edit/${s==null?void 0:s.id}`,children:[e.jsx(Be,{size:16})," Modifier"]})}),(s==null?void 0:s.status)==="is_enable"&&e.jsxs(u,{onSelect:()=>f("Confirmer le blocage","Entrez le code administrateur pour confirmer le blocage.","Bloquer",ie),children:[e.jsx(Ce,{size:16})," Bloquer"]}),(s==null?void 0:s.status)==="is_blocked"&&e.jsxs(u,{onSelect:()=>f("Confirmer le déblocage","Entrez le code administrateur pour confirmer le déblocage.","Débloquer",re),children:[e.jsx(Re,{size:16})," Débloquer"]}),(s==null?void 0:s.status)==="is_enable"&&e.jsxs(u,{onSelect:()=>f("Confirmer la désactivation","Entrez le code administrateur pour confirmer la désactivation.","Désactiver",le),children:[e.jsx(Te,{size:16})," Désactiver"]}),(s==null?void 0:s.status)==="is_disable"&&e.jsxs(u,{onSelect:()=>f("Confirmer l'activation","Entrez le code administrateur pour confirmer l'activation.","Activer",te),children:[e.jsx(ke,{size:16})," Activer"]}),e.jsx(W,{}),e.jsxs(u,{onSelect:()=>f("Réinitialiser l'appareil mobile","Entrez le code administrateur pour libérer l'appareil MOBILE de cet utilisateur.","Réinitialiser mobile",de),children:[e.jsx(Ae,{size:16})," Réinit. appareil mobile"]}),e.jsxs(u,{onSelect:()=>f("Réinitialiser l'appareil desktop","Entrez le code administrateur pour libérer l'appareil DESKTOP de cet utilisateur.","Réinitialiser desktop",ae),children:[e.jsx(Me,{size:16})," Réinit. appareil desktop"]}),e.jsxs(u,{onSelect:()=>f("Réinitialiser les deux appareils","Entrez le code administrateur pour libérer les appareils MOBILE et DESKTOP en même temps.","Réinitialiser les deux",oe),children:[e.jsx(Ie,{size:16})," Réinit. mobile + desktop"]}),e.jsx(W,{}),e.jsxs(u,{destructive:!0,onSelect:()=>f("Confirmer la suppression","Entrez le code administrateur pour confirmer la suppression.","Supprimer",ce),children:[e.jsx(Ee,{size:16})," Supprimer"]})]})]})}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[e.jsxs("div",{className:"space-y-6",children:[e.jsx(c,{children:e.jsxs(d,{className:"flex flex-col items-center gap-3 text-center",children:[e.jsx(ze,{size:"xl",name:`${(s==null?void 0:s.nom)||""} ${(s==null?void 0:s.prenom)||""}`,src:s!=null&&s.avatar_url?`/storage/${s.avatar_url}`:void 0}),e.jsxs("div",{children:[e.jsxs("p",{className:"font-semibold text-foreground",children:[s==null?void 0:s.nom," ",s==null?void 0:s.prenom]}),e.jsx(a,{variant:U.variant,className:"mt-1",children:U.label})]}),e.jsx("div",{className:"flex flex-wrap justify-center gap-1",children:Array.isArray(s==null?void 0:s.role)&&s.role.length>0?s.role.map(n=>e.jsx(a,{variant:"info",children:n.name},n.id)):e.jsx(a,{variant:"neutral",children:"Aucun rôle"})})]})}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsx(x,{children:"Jetons & contributions"})}),e.jsxs(d,{className:"space-y-3 text-sm",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-2 text-center",children:[e.jsxs("div",{className:"rounded-lg bg-primary/10 p-2",children:[e.jsx("p",{className:"text-lg font-bold text-primary",children:(p==null?void 0:p.total)??0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Jetons"})]}),e.jsxs("div",{className:"rounded-lg bg-muted p-2",children:[e.jsx("p",{className:"text-lg font-bold",children:(p==null?void 0:p.retirable)??0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Retirables"})]}),e.jsxs("div",{className:"rounded-lg bg-muted p-2",children:[e.jsx("p",{className:"text-lg font-bold",children:(p==null?void 0:p.non_retirable)??0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Non retir."})]})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"font-medium",children:"Documents soumis"}),e.jsx(a,{variant:"info",children:(s==null?void 0:s.documents_count)??0})]})]})]}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsx(x,{children:"Parrainage"})}),e.jsxs(d,{className:"space-y-1 text-sm",children:[e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Mon code :"})," ",(s==null?void 0:s.referral_code)||"—"]}
1),e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Parrainé par :"})," ",s!=null&&s.parrain?`${s.parrain.nom||""} ${s.parrain.prenom||""}`.trim()+(s.parrain.referral_code?` (${s.parrain.referral_code})`:""):"—"]}),e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Récompense créditée :"})," ",s!=null&&s.referral_reward_credited?"Oui":"Non"]})]})]}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsx(x,{children:"Appareils liés (tokens)"})}),e.jsxs(d,{className:"space-y-2 text-sm",children:[[["mobile","Mobile"],["desktop","Desktop"],["web","Web"]].map(([n,i])=>{const r=((s==null?void 0:s.devices)||[]).find(je=>je.platform===n),j=r&&r.device_uuid;return e.jsxs("div",{className:"rounded-lg border border-border p-2.5",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"font-medium",children:i}),e.jsx(a,{variant:j?"success":"neutral",children:j?"Lié":"Vide"})]}),j?e.jsxs("div",{className:"mt-1 space-y-0.5",children:[e.jsxs("p",{className:"break-all text-xs text-muted-foreground",children:["Token : ",r.device_uuid]}),r.device_token&&e.jsxs("p",{className:"break-all text-xs text-muted-foreground",children:["Push : ",r.device_token]}),r.last_login_at&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Connexion : ",h(r.last_login_at)]})]}):e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Aucun appareil lié (slot libre)."})]},n)}),e.jsxs("div",{className:"pt-1 text-xs text-muted-foreground",children:[e.jsxs("p",{children:["Dernière synchro : ",h(s==null?void 0:s.last_device_sync)]}),e.jsxs("p",{children:["Dernier reset MAC : ",h(s==null?void 0:s.last_mac_reset_at)]})]})]})]}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsx(x,{children:"Dernière connexion"})}),e.jsx(d,{className:"space-y-1 text-sm",children:s!=null&&s.derniere_connexion?e.jsxs(e.Fragment,{children:[e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Date :"})," ",h(s.derniere_connexion.attempt_at)]}),e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"IP :"})," ",s.derniere_connexion.ip_address||"—"]}),e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Device :"})," ",s.derniere_connexion.device||s.derniere_connexion.device_uuid||"—"]})]}):e.jsx("p",{className:"text-muted-foreground",children:"Aucune connexion enregistrée."})})]})]}),e.jsxs("div",{className:"space-y-6 lg:col-span-2",children:[e.jsxs(c,{children:[e.jsx(o,{children:e.jsx(x,{children:"Informations"})}),e.jsx(d,{children:e.jsx("dl",{className:"divide-y divide-border",children:pe.map(([n,i])=>e.jsxs("div",{className:"flex items-center justify-between gap-4 py-2 text-sm",children:[e.jsx("dt",{className:"font-medium text-foreground",children:n}),e.jsx("dd",{className:"text-right text-muted-foreground",children:i||"—"})]},n))})})]}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsxs(x,{children:["Documents téléversés (",(s==null?void 0:s.documents_count)??0,")"]})}),e.jsx(d,{className:"p-0",children:((H=s==null?void 0:s.documents)==null?void 0:H.length)>0?e.jsxs(b,{wrapClassName:"border-0",children:[e.jsx(_,{children:e.jsxs(m,{className:"hover:bg-transparent",children:[e.jsx(l,{children:"Nom"}),e.jsx(l,{children:"Type"}),e.jsx(l,{children:"Validation"}),e.jsx(l,{children:"Date"})]})}),e.jsx(y,{children:s.documents.map(n=>e.jsxs(m,{children:[e.jsx(t,{className:"max-w-[14rem] truncate font-medium",children:n.nom||"—"}),e.jsx(t,{className:"text-xs text-muted-foreground",children:n.statut||"—"}),e.jsx(t,{children:he(n.approval_status)}),e.jsx(t,{className:"text-xs text-muted-foreground",children:h(n.created_at)})]},n.id))})]}):e.jsx("p",{className:"px-6 py-4 text-sm text-muted-foreground",children:"Aucun document téléversé."})})]}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsxs(x,{children:["Collections créées (",(s==null?void 0:s.collections_count)??0,")"]})}),e.jsx(d,{className:"p-0",children:((O=s==null?void 0:s.collections)==null?void 0:O.length)>0?e.jsxs(b,{wrapClassName:"border-0",children:[e.jsx(_,{children:e.jsxs(m,{className:"hover:bg-transparent",children:[e.jsx(l,{children:"Nom"}),e.jsx(l,{children:"Date"})]})}),e.jsx(y,{children:s.collections.map(n=>e.jsxs(m,{children:[e.jsx(t,{className:"max-w-md truncate font-medium",children:n.nom||"—"}),e.jsx(t,{className:"text-xs text-muted-foreground",children:h(n.created_at)})]},n.id))})]}):e.jsx("p",{className:"px-6 py-4 text-sm text-muted-foreground",children:"Aucune collection créée."})})]}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsxs(x,{children:["Filleuls / parrainés (",(s==null?void 0:s.filleuls_count)??0,")"]})}),e.jsx(d,{className:"p-0",children:((F=s==null?void 0:s.filleuls)==null?void 0:F.length)>
10?e.jsxs(b,{wrapClassName:"border-0",children:[e.jsx(_,{children:e.jsxs(m,{className:"hover:bg-transparent",children:[e.jsx(l,{children:"Nom & prénom"}),e.jsx(l,{children:"Email"}),e.jsx(l,{children:"Récompense"}),e.jsx(l,{children:"Inscrit le"})]})}),e.jsx(y,{children:s.filleuls.map(n=>e.jsxs(m,{children:[e.jsx(t,{className:"font-medium",children:e.jsxs(K,{to:`/admin/users/detail/${n.id}`,className:"text-primary hover:underline",children:[n.nom||"—"," ",n.prenom||""]})}),e.jsx(t,{className:"text-xs text-muted-foreground",children:n.email||"—"}),e.jsx(t,{children:n.referral_reward_credited?e.jsx(a,{variant:"success",children:"Créditée"}):e.jsx(a,{variant:"neutral",children:"En attente"})}),e.jsx(t,{className:"text-xs text-muted-foreground",children:h(n.created_at)})]},n.id))})]}):e.jsx("p",{className:"px-6 py-4 text-sm text-muted-foreground",children:"Aucun filleul."})})]}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsx(x,{children:"Sessions"})}),e.jsx(d,{className:"p-0",children:((V=s==null?void 0:s.sessions)==null?void 0:V.length)>0?e.jsxs(b,{wrapClassName:"border-0",children:[e.jsx(_,{children:e.jsxs(m,{className:"hover:bg-transparent",children:[e.jsx(l,{children:"ID"}),e.jsx(l,{children:"IP"}),e.jsx(l,{children:"Agent"}),e.jsx(l,{children:"Dernière activité"})]})}),e.jsx(y,{children:s.sessions.map((n,i)=>e.jsxs(m,{children:[e.jsx(t,{children:n.id||"—"}),e.jsx(t,{children:n.ip_address||"—"}),e.jsx(t,{className:"max-w-xs truncate text-xs text-muted-foreground",children:n.user_agent||"—"}),e.jsx(t,{className:"text-xs text-muted-foreground",children:h(n.last_activity||n.created_at)})]},n.id||i))})]}):e.jsx("p",{className:"px-6 py-4 text-sm text-muted-foreground",children:"Aucune session enregistrée."})})]}),e.jsxs(c,{children:[e.jsx(o,{children:e.jsx(x,{children:"Tentatives de connexion"})}),e.jsx(d,{className:"p-0",children:((J=s==null?void 0:s.login_attempts)==null?void 0:J.length)>0?e.jsxs(b,{wrapClassName:"border-0",children:[e.jsx(_,{children:e.jsxs(m,{className:"hover:bg-transparent",children:[e.jsx(l,{children:"Date"}),e.jsx(l,{children:"IP"}),e.jsx(l,{children:"Device"}),e.jsx(l,{children:"Résultat"}),e.jsx(l,{children:"Raison"})]})}),e.jsx(y,{children:s.login_attempts.map((n,i)=>e.jsxs(m,{children:[e.jsx(t,{className:"text-xs text-muted-foreground",children:h(n.attempt_at)}),e.jsx(t,{children:n.ip_address||"—"}),e.jsx(t,{children:n.device||n.device_uuid||"—"}),e.jsx(t,{children:n.success?e.jsx(a,{variant:"success",children:"Succès"}):e.jsx(a,{variant:"danger",children:"Échec"})}),e.jsx(t,{className:"text-xs text-muted-foreground",children:n.failure_reason||"—"})]},n.attempt_id||i))})]}):e.jsx("p",{className:"px-6 py-4 text-sm text-muted-foreground",children:"Aucune tentative enregistrée."})})]})]})]}),e.jsx(Ue,{show:Z,onClose:ne,onSubmit:w.action,isLoading:E,title:w.title,message:w.message,confirmButtonText:w.confirmButtonText})]})};export{Fe 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.