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:
@@ -169,13 +169,41 @@ Secrets requis dans Gitea :
|
||||
- `RELEASE_TOKEN` — PAT avec droits `write:repository`
|
||||
- `REGISTRY_TOKEN` — token pour le registry Docker
|
||||
|
||||
## Déploiement — seed RBAC (recette / prod)
|
||||
|
||||
Le RBAC métier (rôles `bureau` / `compta` / `commerciale` / `usine` + matrice § 2.7)
|
||||
est seedé par une **commande applicative idempotente** (présente dans le build prod,
|
||||
contrairement aux fixtures Doctrine en `require-dev`). À jouer dans l'étape de release,
|
||||
**après** les migrations et la synchronisation des permissions :
|
||||
|
||||
```bash
|
||||
php bin/console doctrine:migrations:migrate --no-interaction
|
||||
php bin/console app:sync-permissions # pose les permissions commercial.clients.*
|
||||
php bin/console app:seed-rbac # PROD : rôles + matrice § 2.7 (sans comptes démo)
|
||||
```
|
||||
|
||||
En **recette / staging**, ajouter le flag pour disposer de logins de test (mot de passe
|
||||
fourni explicitement, jamais en dur) :
|
||||
|
||||
```bash
|
||||
php bin/console app:seed-rbac --with-demo-users --password='<mot-de-passe>'
|
||||
# ou via la variable d'env RBAC_DEMO_PASSWORD
|
||||
```
|
||||
|
||||
La commande est rejouable sans effet de bord (aucun doublon de rôle, de lien ou de compte).
|
||||
En dev, `make db-reset` produit le même résultat (rôles + matrice + comptes démo).
|
||||
|
||||
## Credentials (dev)
|
||||
|
||||
| Username | Password | Role |
|
||||
|----------|----------|------|
|
||||
| admin | admin | ROLE_ADMIN |
|
||||
| alice | alice | ROLE_USER |
|
||||
| bob | bob | ROLE_USER |
|
||||
| Username | Password | Role | RBAC métier |
|
||||
|----------|----------|------|-------------|
|
||||
| admin | admin | ROLE_ADMIN | bypass (is_admin) |
|
||||
| alice | alice | ROLE_USER | — |
|
||||
| bob | bob | ROLE_USER | — |
|
||||
| bureau | demo | ROLE_USER | clients : view + manage |
|
||||
| compta | demo | ROLE_USER | clients : view + accounting.view/manage |
|
||||
| commerciale | demo | ROLE_USER | clients : view + manage (Information obligatoire — RG-1.04) |
|
||||
| usine | demo | ROLE_USER | aucun accès clients |
|
||||
|
||||
## Conventions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user