ensureSystemRole() recopie desormais la description depuis la migration
RBAC pour que les chemins prod (migration) et dev (fixtures) produisent
un etat identique.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- AppFixtures : rattachement des users aux entites Role via
RoleRepositoryInterface. Re-seed idempotent des roles systeme dans
ensureSystemRole() pour compenser le purger Doctrine qui vide la table
role avant load(), afin que "make db-reset && make fixtures" reste un
workflow one-shot.
- CreateUserCommand : flag --admin attache au role systeme admin + is_admin,
sinon au role user. Gestion d'erreur explicite si les roles systeme sont
absents (FAILURE + message pointant vers la migration).
- CreateUserCommand devient final, descriptions traduites en francais.
Ticket #343 - 6/7 : fixtures et command alignes sur le RBAC relationnel.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Suppression de la colonne JSON roles (persiste jusqu'a la migration Task 5)
- Ajout is_admin bool (seul levier de bypass RBAC via getRoles())
- Ajout ManyToMany User-Role (EAGER, table user_role)
- Ajout ManyToMany User-Permission directes (EAGER, table user_permission)
- getEffectivePermissions() : union dedupliquee triee, utilisee par le
futur PermissionVoter (#345)
- getRbacRoles() pour ne pas shadow getRoles() de UserInterface Symfony
- Tests unitaires couvrant derivation getRoles, union, deduplication, tri
Ticket #343 - 3/7 : migration du User vers le modele RBAC relationnel.
Fetch EAGER documente : evite le lazy-load au refresh JWT.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>