From 617ee314b35de074a97fdeb3632c67ac5cd0afef Mon Sep 17 00:00:00 2001 From: Matthieu Date: Wed, 22 Apr 2026 11:17:40 +0200 Subject: [PATCH] fix(users) : corrige l'affichage et l'ecrasement des sites sur le drawer RBAC Le drawer RBAC de /admin/users initialisait l'etat des sites a partir du payload /api/users (groupe user:list) qui n'expose pas la collection sites. Consequence : la section "Sites autorises" affichait toujours 0 case cochee, et la sauvegarde ecrasait silencieusement les sites existants en BDD. - Ajout d'une operation GET /users/{id}/rbac (groupe user:rbac:read) dediee au chargement du detail pour l'edition : payload list reste leger, detail riche sur une URI symetrique au PATCH existant. - Drawer charge desormais GET /users/{id}/rbac pour initialiser sites, roles et directPermissions ; UserListItem ne contient plus sites (inutilise). - Colonne "Sites" retiree de la table /admin/users : l'info est consultee via le drawer, pas la liste (evite aussi la fuite cross-site pour les users avec core.users.view mais sans sites.bypass_scope). - Garde anti-ecrasement dans UserRbacProcessor : respect de la semantique merge-patch+json (cle absente = preservee, cle = [] = vidage explicite). Restaure les collections ManyToMany absentes du payload a partir du snapshot Doctrine. Couvre roles, directPermissions et sites. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../core/components/UserRbacDrawer.vue | 49 +++++---- frontend/modules/core/pages/admin/users.vue | 27 +---- frontend/shared/types/rbac.ts | 14 ++- src/Module/Core/Domain/Entity/User.php | 10 ++ .../State/Processor/UserRbacProcessor.php | 103 ++++++++++++++++++ .../State/Processor/UserRbacProcessorTest.php | 10 ++ 6 files changed, 168 insertions(+), 45 deletions(-) diff --git a/frontend/modules/core/components/UserRbacDrawer.vue b/frontend/modules/core/components/UserRbacDrawer.vue index 2d6be9c..f4d61df 100644 --- a/frontend/modules/core/components/UserRbacDrawer.vue +++ b/frontend/modules/core/components/UserRbacDrawer.vue @@ -112,7 +112,7 @@