feat(core) : add idempotent app:seed-rbac command (roles + matrix + demo users)

- RbacSeeder : source unique des 4 roles metier (bureau/compta/commerciale/usine),
  de la matrice RBAC § 2.7 (role -> permissions) et des comptes demo. Operations
  idempotentes et non destructives (ensureRoles / attachMatrix / ensureDemoUsers).
- app:seed-rbac : commande applicative presente en build prod (contrairement aux
  fixtures require-dev). Sans option : roles + matrice. --with-demo-users +
  --password / RBAC_DEMO_PASSWORD : un compte demo par role. Garde-fou : exit
  non-zero + invite a lancer app:sync-permissions si les codes manquent.
- RbacDemoFixtures (dev/test) : appelle le meme seeder (DRY). La matrice est
  attachee post-sync par app:seed-rbac (la table permission est purgee au load).
- makefile : etape seed-rbac apres sync-permissions (db-reset + test-db-setup).
- Doc deploiement (README) + credentials des comptes demo (CLAUDE.md / README).
This commit is contained in:
Matthieu
2026-06-01 22:22:33 +02:00
parent 8d50f1fbe7
commit 275c6ff5b5
7 changed files with 503 additions and 9 deletions
+4 -2
View File
@@ -3,7 +3,7 @@
## Contexte
CRM/ERP en architecture **modular monolith DDD**. Le backend est la source de verite unique (modules actifs, sidebar). Le frontend scanne `frontend/modules/*/` comme layers Nuxt et consomme l'API pour la navigation. Multi-tenant : chaque module est activable/desactivable.
Doc humaine : @README.md — Spec audit : @doc/audit-log.md
Doc humaine : `README.md` — Spec audit : `doc/audit-log.md` (à lire à la demande, non chargés en permanence).
## Stack
- Backend : PHP 8.4, Symfony 8, API Platform 4, Doctrine ORM, PostgreSQL 16 (port 5437)
@@ -37,7 +37,7 @@ Doc humaine : @README.md — Spec audit : @doc/audit-log.md
@.claude/rules/git.md
@.claude/rules/workflow.md
## Commandes (liste complete dans @README.md)
## Commandes (liste complete dans `README.md`)
- Demarrer : `make start`
- Dev front (hot reload) : `make dev-nuxt` (port 3004)
@@ -70,3 +70,5 @@ Editer uniquement `config/modules.php` (commenter la ligne). Cascade automatique
## Credentials (dev)
`admin` / `admin` (ROLE_ADMIN) ; `alice` / `alice`, `bob` / `bob` (ROLE_USER).
Comptes demo des roles metier (seedes par `RbacDemoFixtures` / `app:seed-rbac --with-demo-users`, mot de passe `demo`) : `bureau` / `demo`, `compta` / `demo`, `commerciale` / `demo`, `usine` / `demo`. Matrice RBAC § 2.7 (M1 Clients) attachee aux roles correspondants.