feat(admin): gestion des comptes back-office (CRUD users + RGPD, PIN+audit) (P3) #38
No reviewers
Labels
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: AcadeNice/corentin_wakdo#38
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/p3-users"
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?
Lot U du cycle P3 (Users/RBAC/Stats). Gestion complete des comptes back-office (mlt domaine 10) : toutes les mutations sont des actions sensibles (RG-T13) avec re-autorisation par PIN equipier + ligne audit_log dans la meme transaction (RG-T14), throttle PIN par acteur agissant (RG-T22). - UserRepository : all (JOIN role) / find / emailExists / activeRoleExists / create / update (allowlist RG-T16) / setPasswordHash / clearPin / deactivate / anonymise (RGPD mlt 10.5, tombstone idempotent) / activeAdminCount / isAdmin. - UserController (user.read/create/update/deactivate) : index ; create/store ; edit/update ; deactivate ; reset-pin ; erase-PII. Helper resolvePin mutualise le flux throttle+verif+pin.failed. details JSON d'audit = noms de champs/role (pas de PII). Conflit d'unicite email -> 409 (convention PR-0). - Garde-fous d'integrite : pas d'auto-desactivation (mlt 10.3 PRE-2 -> 403) ; on ne peut ni desactiver, ni retrograder, ni anonymiser le DERNIER admin actif (anti-lockout) ; erase deja anonymise -> 409. - Vues admin/users/{index,form,confirm} (PIN inline), 11 routes, nav Administration. Tests : unit 251, integration 285 / 867 assertions (WAKDO_DB_TESTS=1, dont UserControllerTest 18 + UserRepositoryDbTest 5), PHPStan L6 propre.