RBAC #345 - Voter Symfony + usePermissions composable #4

Closed
matthieu wants to merge 13 commits from feat/rbac-voter into feat/rbac-api

13 Commits

Author SHA1 Message Date
Matthieu
c1a620f593 build(core) : RBAC #345 - nuxt-test and test-all makefile targets 2026-04-15 17:19:35 +02:00
Matthieu
6cc576f000 test(frontend) : RBAC #345 - vitest setup + usePermissions unit tests 2026-04-15 17:15:27 +02:00
Matthieu
91b2ae0c65 build(core) : RBAC #345 - sync permissions in db-reset 2026-04-15 16:39:44 +02:00
Matthieu
45f40ed1b3 feat(frontend) : RBAC #345 - usePermissions composable
Ajout de isAdmin et effectivePermissions dans UserData, creation du
composable usePermissions() (can/canAny/canAll) avec bypass admin.
2026-04-15 16:38:15 +02:00
Matthieu
6df4316950 test(core) : RBAC #345 - functional coverage voter + last admin guard 2026-04-15 16:38:15 +02:00
Matthieu
d1e4402368 feat(core) : RBAC #345 - expose effectivePermissions via /api/me
- Ajoute #[Groups(['me:read'])] sur getEffectivePermissions() dans User.php
- Fixe la serialisation de isAdmin : le prefixe "is" etait strip par Symfony,
  expose desormais via le getter avec #[SerializedName('isAdmin')] + groups lecture,
  la propriete conserve uniquement le groupe d'ecriture user:rbac:write
- Cree MeApiTest avec 4 tests fonctionnels (isAdmin admin, permissions vides user,
  401 sans auth, effectivePermissions avec role portant une permission)
2026-04-15 16:10:11 +02:00
Matthieu
b05c10097f refactor(core) : RBAC #345 - replace ROLE_ADMIN placeholders with RBAC codes 2026-04-15 16:02:57 +02:00
Matthieu
80b63cd7d7 feat(core) : RBAC #345 - UserRbacProcessor last admin guard 2026-04-15 16:00:34 +02:00
Matthieu
ba5eb804f2 feat(core) : RBAC #345 - UserProcessor DELETE guard
Introduit AdminHeadcountGuardInterface pour permettre le mock en tests
unitaires, puis cree UserProcessor qui protege DELETE /api/users/{id}
contre la suppression du dernier administrateur via la garde domaine.
2026-04-15 15:57:19 +02:00
Matthieu
ab2f11d40d feat(core) : RBAC #345 - PermissionVoter symfony 2026-04-15 15:51:23 +02:00
Matthieu
4325b1d8a0 feat(core) : RBAC #345 - AdminHeadcountGuard domain service 2026-04-15 15:45:55 +02:00
Matthieu
b7aa445cef feat(core) : RBAC #345 - add core.roles.view permission 2026-04-15 15:42:42 +02:00
Matthieu
fd4ed25c63 docs(core) : RBAC #345 - spec voter + usePermissions 2026-04-15 15:28:51 +02:00