1import{P as B}from"./PageHeader-zEsZEras.js";import{A as F}from"./AdminCard-XSiyNSba.js";import{_ as v}from"./AdminButton-Bxfszd9C.js";import{_ as E}from"./AdminToggle-B1-RwON7.js";import{_ as G}from"./AdminTextField-CQSkpPv8.js";import{_ as J}from"./AdminSelect-DUFm0S8x.js";import{_ as q}from"./AdminTable-DoN30a5i.js";import{_ as V}from"./AdminBadge-DRj9wXbA.js";import{_ as R}from"./AdminPagination-Bn4GkrqL.js";import{_ as K}from"./AdminEmptyState-CMMBzj7j.js";import{_ as Q}from"./AdminModal-DVzMhuU1.js";import{g as j,p as W,d as X}from"./http-BbXTuv6R.js";import{u as Y}from"./useAdminToast-nqTJN-8H.js";import{r as i,l as Z,d as ee,c as P,o as w,f as l,a as s,w as n,k as o,F as L,h as te,t as r}from"./app-C5tBqdOy.js";import"./usePopover-BW68ddYn.js";import"./csrf-DE4nagIp.js";function se(_){return j("logs",_)}function ae(){return j("logs/settings")}function le(_){return W("logs/settings",_)}function ne(){return X("logs")}const ie={class:"flex flex-col gap-5"},oe={class:"flex justify-end"},re={class:"mb-6 grid gap-4 md:grid-cols-2"},ue={class:"px-6 py-4 text-sm text-slate-700"},de={class:"px-6 py-4"},me={class:"font-medium text-slate-800"},pe={class:"text-xs text-slate-500"},ce={class:"px-6 py-4"},fe={class:"flex items-center gap-2"},ve={class:"font-medium text-slate-800"},_e={class:"mt-1 text-xs text-slate-500"},ge={class:"px-6 py-4"},xe={class:"px-6 py-4 text-xs text-slate-500"},ye={class:"mt-1 break-all"},be={class:"mt-6"},he={class:"flex justify-end gap-2"},He={__name:"Index",setup(_){const{addToast:u}=Y(),g=i([]),x=i(!1),m=i(!1),p=i(!1),T=i(!1),y=i(""),b=i(""),c=i(!0),f=i(!0),d=i({current_page:1,last_page:1,per_page:20,total:0}),A=i(!1),$=[{value:"",label:"Toutes"},{value:"GET",label:"GET"},{value:"POST",label:"POST"},{value:"PUT",label:"PUT"},{value:"PATCH",label:"PATCH"},{value:"DELETE",label:"DELETE"}];function k(t){return t==="GET"?"info":t==="POST"?"success":t==="PUT"||t==="PATCH"?"warning":t==="DELETE"?"danger":"neutral"}function U(t){const e=Number(t||0);return e>=500?"danger":e>=400?"warning":e>=200?"success":"neutral"}function M(t){return t?new Intl.DateTimeFormat("fr-MA",{dateStyle:"medium",timeStyle:"short"}).format(new Date(t)):"-"}function z(t){if(!t||typeof t!="object")return"-";const e=JSON.stringify(t);return e.length>120?`${e.slice(0,120)}...`:e}async function h(t=1){x.value=!0;try{const e=await se({search:y.value||void 0,method:b.value||void 0,page:t});g.value=e?.data??[],d.value=e?.meta??d.value}catch{u({type:"error",message:"Impossible de charger les journaux."})}finally{x.value=!1}}async function H(){m.value=!0;try{const t=await ae();c.value=!!t?.data?.enabled,f.value=!!t?.data?.include_super_admin}catch{u({type:"error",message:"Impossible de charger le paramètre de journalisation."})}finally{m.value=!1}}async function N(){p.value=!0;try{const t=await le({enabled:!!c.value,include_super_admin:!!f.value});c.value=!!t?.data?.enabled,f.value=!!t?.data?.include_super_admin,u({type:"success",message:"Paramètres de journalisation enregistrés."})}catch{u({type:"error",message:"Mise à jour du paramètre impossible."})}finally{p.value=!1}}async function C(){await Promise.all([H(),h(d.value.current_page||1)])}function I(){A.value=!0}function S(){A.value=!1}async function O(){T.value=!0;try{const t=await ne(),e=Number(t?.data?.deleted||0);S(),g.value=[],d.value={...d.value,current_page:1,last_page:1,total:0},await h(1),u({type:"success",message:`${e} log(s) supprimé(s).`})}catch{u({type:"error",message:"Suppression impossible."})}finally{T.value=!1}}let D;return Z([y,b],()=>{clearTimeout(D),D=setTimeout(()=>h(1),300)}),ee(async()=>{await C()}),(t,e)=>(w(),P(L,null,[l(B,null,{title:n(()=>[...e[4]||(e[4]=[o("Journaux admin",-1)])]),subtitle:n(()=>[...e[5]||(e[5]=[o(" Historique des actions effectuées dans la partie administration. ",-1)])]),actions:n(()=>[l(v,{variant:"secondary",onClick:C},{default:n(()=>[...e[6]||(e[6]=[o(" Actualiser ",-1)])]),_:1}),l(v,{variant:"danger",onClick:I},{default:n(()=>[...e[7]||(e[7]=[o(" Supprimer tous les logs ",-1)])]),_:1})]),_:1}),l(F,{class:"mb-6"},{default:n(()=>[s("div",ie,[l(E,{modelValue:c.value,"onUpdate:modelValue":e[0]||(e[0]=a=>c.value=a),label:"Activer la journalisation",hint:"Si désactivée, les actions ne seront plus enregistrées.",disabled:m.value||p.value},null,8,["modelValue","disabled"]),l(E,{modelValue:f.value,"onUpdate:modelValue":e[1]||(e[1]=a=>f.value=a),label:"Logger les actions des super admins",hint:"Désactivez pour ignorer les actions faites par les super admins.",disabled:m.value||p.value},null,8,["modelValue","disabled"]),s("div",oe,[l(v,{loading:p.value,disabled:m.value,onClick:N},{default:n(()=>[...e[8]||(e[8]=[o(" Enregistrer ",-1)])]),_:1},8,["loading","disabled"])])])]),_:1}),s("div",re,[l(G,{modelValue:y.value,"onUpdate:modelValue":e[2]||(e[2]=a=>y.value=a),label:"Recherche",placeholder:"Utilisateur, route ou action"},null,8,["modelValue"]),l(J,{modelValue:b.value,"onUpdate:modelValue":e[3]||(e[3]=a=>b.value=a),label:"Méthode HTTP",options:$},null,8,["modelValue"])]),l(q,{"is-empty":!x.value&&g.value.length===0},{head:n(()=>[...e[9]||(e[9]=[s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Date",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Utilisateur",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Action",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Statut",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Détails",-1)])]),body:n(()=>[(w(!0),P(L,null,te(g.value,a=>(w(),P("tr",{key:a.id,class:"text-slate-600"},[s("td",ue,r(M(a.created_at)),1),s("td",de,[s("div",me,r(a.user?.name||"Utilisateur supprimé"),1),s("div",pe,r(a.user?.email||"-"),1)]),s("td",ce,[s("div",fe,[l(V,{variant:k(a.method)},{default:n(()=>[o(r(a.method),1)]),_:2},1032,["variant"]),s("span",ve,r(a.path),1)]),s("div",_e,r(a.controller_action||"-"),1)]),s("td",ge,[l(V,{variant:U(a.status_code)},{default:n(()=>[o(r(a.status_code||"-"),1)]),_:2},1032,["variant"])]),s("td",xe,[s("div",null,"IP: "+r(a.ip_address||"-"),1),s("div",ye,"Payload: "+r(z(a.payload)),1)])]))),128))]),empty:n(()=>[l(K,{title:x.value?"Chargement...":"Aucun log trouvé.",description:"Ajustez les filtres ou réessayez plus tard."},null,8,["title"])]),_:1},8,["is-empty"]),s("div",be,[l(R,{meta:d.value,onChange:h},null,8,["meta"])]),l(Q,{open:A.value,title:"Supprimer tous les logs",size:"sm",onClose:S},{footer:n(()=>[s("div",he,[l(v,{variant:"ghost",size:"sm",onClick:S},{default:n(()=>[...e[10]||(e[10]=[o(" Annuler ",-1)])]),_:1}),l(v,{variant:"danger",size:"sm",loading:T.value,onClick:O},{default:n(()=>[...e[11]||(e[11]=[o(" Supprimer tout ",-1)])]),_:1},8,["loading"])])]),default:n(()=>[e[12]||(e[12]=s("p",{class:"text-sm text-slate-600"}," Cette action va supprimer définitivement tous les journaux d'administration. ",-1))]),_:1},8,["open"])],64))}};export{He 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.