Documentation

Activity log (perso)

Page user /account/activity — historique des actions sensibles (sécurité, sessions, partages).

Différent de LoginHistory (technique, par device) et de AuditLog (global, admin-facing). L'activity log perso est une vue lisible des actions sensibles que l'user a effectuées sur son compte.

Page : /account/activity. Accessible aussi depuis la sidebar user.

Source de données

On lit AuditLog filtré sur userId = session.user.id puis on whitelist les actions visibles côté user — sinon le journal serait pollué par les opérations admin / cron / webhook qui ont son ID au passage.

const VISIBLE_ACTIONS = new Set([
  "user.register",
  "user.password_changed",
  "user.email_changed",
  "user.2fa_enabled",
  "user.2fa_disabled",
  "auth.password_reset_requested",
  "auth.password_reset",
]);

const VISIBLE_PREFIXES = ["session.", "apikey.", "org.", "coupon.redeem"];

API : GET /api/user/activity?cursor=... — pagination cursor.

Rendu

Liste card-only via <DataList hideToggle defaultView="card">. Chaque action a une icône + libellé humain (mapping ACTION_DISPLAY dans activity-list.tsx).

Exemple :

  • 🔑 Mot de passe modifié — il y a 3 jours
  • 🛡️ Authentification à deux facteurs activée — la semaine dernière
  • 📧 Email modifié — il y a 1 mois

Étendre

Pour qu'une nouvelle action apparaisse dans l'activity log :

  1. Logger via logAudit({ userId, action: "user.something" })
  2. Whitelist dans app/api/user/activity/route.ts (ajouter à VISIBLE_ACTIONS ou VISIBLE_PREFIXES)
  3. Mapper un libellé + icône dans activity-list.tsx → ACTION_DISPLAY

Allez plus loin

On this page