Louis
Administration

Journal d'audit

Append-only. Visible sur /admin/audit (les 200 dernières entrées).

Append-only. Visible sur /admin/audit (les 200 dernières entrées).

Actions tracées (v0.1)

ActionDéclencheurMétadonnées
auth.loginConnexion réussieacteur, email
auth.login.failedÉchec de connexionemail, reason : unknown / inactive / bad_password
user.createCréation de compte adminacteur, email cible
user.updateModification de profilacteur, cible
user.disable / user.enableDésactivation / réactivationacteur, cible
user.deleteSuppression de compteacteur, cible
user.roleChangement de rôleacteur, cible, nouveau rôle
provider.addAjout d'une clé provideracteur, type:label
provider.deleteSuppression d'une clé provideracteur, type:label
provider.toggleActivation / désactivationacteur, type:label, nouvel état
connector.addAjout d'un connecteur (PISTE / Pappers)acteur, type:label
connector.deleteSuppression d'un connecteuracteur, type:label
doc.deleteSuppression d'un documentacteur, filename
cabinet.updateModification de la config cabinet (nom, footer, mention légale)acteur

Schéma de la table

Voir ../../src/db/schema/audit-log.ts.

Colonnes : id, userId (acteur, nullable pour les events système), action (kebab-case namespacé), target (la ressource), meta (jsonb), createdAt.

Rétention

Pas de purge automatique en v0.1. Si vous voulez limiter la croissance, ajouter un cron Postgres :

-- À adapter à votre politique (90 jours dans cet exemple)
DELETE FROM audit_log WHERE created_at < NOW() - INTERVAL '90 days';

Failure mode

Si l'insertion dans audit_log échoue (DB momentanément down, schéma obsolète), recordAudit log un warning JSON et ne propage pas l'erreur. L'action fonctionnelle (ex: suppression d'un user) continue. C'est un choix de design : un crash d'audit ne doit pas bloquer une action légitime, mais l'admin doit voir le warning dans son monitoring.

Surveiller dans les logs : {"level":"warn","scope":"audit",...}.

On this page