All checks were successful
docs/domaines/ : une fiche par domaine livre (perimetre / ce qui est livre / regles metier RG-T* / decisions -> ADR / tables), + index. auth, catalogue, stock-recettes, users, rbac, stats, borne. Commande = P4 (schema pret, non documentee ici). Troisieme et derniere PR du jeu de documentation socle.
1.5 KiB
1.5 KiB
Domaine — Comptes utilisateurs
Perimetre
Gestion des comptes back-office (mlt domaine 10.1-10.3 + 10.5) : creation, edition, desactivation, reinitialisation de PIN, effacement RGPD.
Ce qui est livre
UserRepository(App\Auth) : all (JOIN role) / find / emailExists / activeRoleExists / create / update (allowlist) / setPasswordHash / clearPin / deactivate / anonymise / activeAdminCount / isAdmin.UserController: index (user.read), create/store (user.create), edit/update (user.update), deactivate (user.deactivate), reset-pin, erase-PII. Vuesadmin/users/{index,form,confirm}.
Regles metier
- RG-T13/14 : toutes les mutations sont sensibles -> PIN equipier +
audit_log(user.create/update/deactivate/erase_pii) dans la meme transaction ;detailsJSON = noms de champs / role (pas de PII). Throttle RG-T22. - RG-T16 : allowlist (email/prenom/nom/role_id/is_active) ;
is_activepose serveur a la creation. Unicite email -> 409. - Self-protection : pas d'auto-desactivation (403 SELF_DEACTIVATION) ; on ne retire pas le statut du dernier admin actif (update/deactivate/erase) ; effacement deja fait -> 409.
Decisions
ADR-0004 (PIN + audit), ADR-0007 (anonymisation RGPD), ADR-0006 (409/422).
Tables
user (+ anonymized_at pour RGPD), audit_log, role (FK). Detail :
docs/merise/mlt.md section 10.1-10.5.