import { useState, useEffect } from 'react' import { useAuth } from '../context/AuthContext' const ACTION_LABELS = { connexion: 'Connexion', changement_mot_de_passe: 'Changement mot de passe', recommandation_ajout: 'Recommandation ajoutée', recommandation_modification: 'Recommandation modifiée', recommandation_suppression: 'Recommandation supprimée', invite_ajout: 'Invité ajouté', invite_modification: 'Invité modifié', invite_suppression: 'Invité supprimé', invite_email_envoye: 'Email invitation envoyé', candidature_demarrage: 'Candidature démarrée', candidature_refus: 'Candidature refusée', absence_ajout: 'Absence ajoutée', absence_suppression: 'Absence supprimée', } export default function AdminLogs() { const { authFetch } = useAuth() const [logs, setLogs] = useState([]) const [page, setPage] = useState(1) const [pages, setPages] = useState(1) const [loading, setLoading] = useState(true) const load = async (p) => { setLoading(true) setPage(p) try { const r = await authFetch(`/api/activity-logs?page=${p}&limit=50`) if (r.ok) { const d = await r.json(); setLogs(d.logs); setPages(d.pages) } } catch {} finally { setLoading(false) } } useEffect(() => { load(1) }, []) return (
Chargement...
) : logs.length === 0 ? (Aucune activité enregistrée
) : (| Date | Utilisateur | Action | Détails |
|---|---|---|---|
| {new Date(log.created_at).toLocaleDateString('fr-FR', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' })} | {log.user_prenom} {log.user_nom} | {ACTION_LABELS[log.action] || log.action} | {log.details ? (() => { try { return JSON.stringify(JSON.parse(log.details), null, 1).replace(/[{}"]/g, '').replace(/,/g, ', ').trim() } catch { return log.details } })() : '-'} |