feat(audit) : contexte forensique dans le journal d'activité (IP, appareil, device id) #33
Reference in New Issue
Block a user
Delete Branch "feature/SIRH-41-ajouter-plus-d-info-dans-le-journal-d-activite"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Certains comptes sont partagés par plusieurs personnes (ex. compte « Usine »), y compris depuis des smartphones. Le journal d'activité ne stockait que le
username→ impossible de distinguer les intervenants. Cette PR ajoute un contexte forensique automatique à chaque entrée du journal.Ce qui est ajouté (capté automatiquement, sans friction utilisateur)
Type · OS · Navigateur(ex.Mobile · Android · Chrome)X-Device-Id, stocké enlocalStorage, borné à 64 car.) — distingue les appareils derrière un compte partagéImplémentation
UserAgentParser(service maison, sans dépendance) — détection ordonnée OS/navigateur, testéeaudit_logs+ migration réversible (pas de backfill, rétro-compatible)AuditLogger::log()viaRequestStack— aucun processor modifiéAuditLogProvider+ DTO TS aligné) viaAuditLogReadRepositoryInterface(suit le pattern existant des autres read-repos)useDeviceId+ injection du headerX-Device-IddansuseApi(sur toutes les requêtes, SSR-safe)framework.trusted_proxiesdocumenté (commenté) pour une IP correcte derrière un reverse proxydoc/audit-logging.md+CLAUDE.mdHors périmètre (étapes suivantes)
audit-logs.vue) non modifié — l'affichage des nouvelles colonnes fera l'objet d'une refonte séparée. Les données sont prêtes côté API.documentation-content.ts) n'est pas touchée : le journal est un outil cachéROLE_SUPER_ADMINsans article existant ni niveau de doc super-admin.À noter pour le déploiement
framework.trusted_proxiesactivé (livré commenté).Tests
OK (249 tests, 533 assertions)— sortie PHPUnit propre (aucune notice).🤖 Generated with Claude Code