fix(rbac) : rattache le rôle de base « user » et gate le frontend par permission #32
Reference in New Issue
Block a user
Delete Branch "fix/rbac-default-user-role"
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?
Un utilisateur non-admin avec des permissions sur le rôle RBAC « user » ne voyait rien : le ROLE_USER legacy n'a aucun lien avec le RBAC et
getEffectivePermissions()ne lit querbacRoles+ permissions directes, alors qu'aucun user n'était rattaché au rôle « user » (tableuser_rolevide, jamais backfillée).Backend
DefaultUserRoleAssigner+UserDefaultRoleListener(prePersist) : tout nouvel utilisateur est rattaché au rôle « user » sur tous les chemins de persistance (API, MCP, fixtures).app:assign-default-roles(backfill idempotent des users existants) + ajout audeploy.shaprèssync-permissions.AppFixtures: seed des rôles système déplacé avant la création des users.Frontend (gating par permission au lieu de ROLE_ADMIN legacy)
permission+ augmentationPageMeta:definePageMeta({ permission })(string = requise, array = any), ROLE_ADMIN bypasse.SidebarFilteraccepte une liste de permissions (any) ; section « Administration » dégatée du rôle.team-absencesreste en ROLE_ADMIN : le module Absence n'est pas encore RBAC-isé côté backend (dette identifiée).Tests
UserDefaultRoleListenerTest,AssignDefaultRolesCommandTest, extension deSidebarFilterTest(gate permission en tableau). Suite complète verte (231 tests). Build frontend OK.Déploiement
Le
deploy.shlanceapp:assign-default-roles(idempotent). Pour débloquer la prod immédiatement sans déploiement : rattacher les users existants au rôle « user » dansuser_role.Un user avec des permissions sur le rôle RBAC « user » ne voyait rien : le ROLE_USER legacy n'a aucun lien avec le RBAC et getEffectivePermissions() ne lit que rbacRoles + permissions directes, alors qu'aucun user n'était rattaché au rôle « user » (table user_role vide, jamais backfillée). Backend - DefaultUserRoleAssigner + UserDefaultRoleListener (prePersist) : tout nouvel utilisateur est rattaché au rôle « user » sur tous les chemins de persistance. - Commande app:assign-default-roles (backfill idempotent) + ajout au deploy.sh. - AppFixtures : seed des rôles système avant la création des users. Frontend (gating par permission au lieu de ROLE_ADMIN legacy) - Nouveau middleware « permission » + augmentation PageMeta : definePageMeta ({ permission }) (string = requise, array = any), ROLE_ADMIN bypasse. - Pages directory/reporting/admin gatées par permission ; SidebarFilter accepte une liste de permissions (any) ; section admin sans gate de rôle. - team-absences reste en ROLE_ADMIN (module Absence non RBAC-isé côté backend).