corentin_wakdo/docs/domaines/users.md
Imugiii f7caf2d50c
All checks were successful
CI / secret-scan (pull_request) Successful in 9s
CI / php-lint (pull_request) Successful in 21s
CI / static-tests (pull_request) Successful in 44s
CI / js-tests (pull_request) Successful in 17s
CI / auto-merge (pull_request) Successful in 5s
docs(domaines): documentation par domaine fonctionnel (7 fiches)
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.
2026-06-17 13:53:56 +00:00

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. Vues admin/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 ; details JSON = noms de champs / role (pas de PII). Throttle RG-T22.
  • RG-T16 : allowlist (email/prenom/nom/role_id/is_active) ; is_active pose 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.