31 lines
1.5 KiB
Markdown
31 lines
1.5 KiB
Markdown
# 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](../adr/0004-pin-action-sensible-audit.md) (PIN + audit),
|
|
[ADR-0007](../adr/0007-rgpd-anonymisation-tombstone.md) (anonymisation RGPD),
|
|
[ADR-0006](../adr/0006-http-409-conflit-422-validation.md) (409/422).
|
|
|
|
## Tables
|
|
`user` (+ `anonymized_at` pour RGPD), `audit_log`, `role` (FK). Detail :
|
|
`docs/merise/mlt.md` section 10.1-10.5.
|