feat(admin): RBAC - matrice roles/permissions + roles custom (PIN+audit diff) (P3) #39
No reviewers
Labels
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: AcadeNice/corentin_wakdo#39
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/p3-roles"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lot R du cycle P3 (Users/RBAC/Stats), dernier lot. Gestion RBAC (mlt 10.4 MANAGE_RBAC, permission role.manage) : matrice roles x permissions + roles personnalises (RG-4). Action a fort impact (escalade de privileges) -> PIN equipier + audit_log dans la meme transaction (RG-T13/14), throttle PIN (RG-T22). - RoleRepository (App\Auth) : roles (CRUD, code immuable), matrice (permissionIds/ CodesFor, setPermissions tx + variante raw replacePermissions pour enrobage controleur), sources visibles (role_visible_source, tx + raw). Catalogue de permissions fige (lecture seule). - RoleController (role.manage) : index ; create/store (role custom : code+label+ default_route+order_source) ; edit/update (champs role + matrice + sources, en UNE transaction). audit role.manage avec details=DIFF des codes de permission (ajoutes/retires, RG-6), calcule avant la reecriture delete-and-reinsert. - Matrice soumise en champs SCALAIRES (perm_<id>, source_<enum>) : Request::formBody ne garde que les scalaires, donc pas de name[] ni de JS. - Garde-fous anti-lockout : le role admin conserve role.manage ET reste actif ; code immuable apres creation ; order_source borne a l'ENUM ; code dupli -> 409. - Vues admin/roles/{index,form}, 5 routes, nav Roles (gated role.manage). Tests : unit 263, integration 301 / 916 assertions (WAKDO_DB_TESTS=1, dont RoleControllerTest 12 + RoleRepositoryDbTest 4), PHPStan L6 propre.