From 17a331b31d661145048c2278ab46e37a14381b63 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 16 Apr 2026 09:58:10 +0200 Subject: [PATCH 1/8] feat(frontend) : ERP-27 - sidebar entry + i18n keys for admin users Co-Authored-By: Claude Sonnet 4.6 --- config/sidebar.php | 6 ++++++ frontend/i18n/locales/fr.json | 29 ++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/config/sidebar.php b/config/sidebar.php index 54018b8..edad75c 100644 --- a/config/sidebar.php +++ b/config/sidebar.php @@ -38,6 +38,12 @@ return [ 'icon' => 'mdi:shield-account-outline', 'module' => 'core', ], + [ + 'label' => 'sidebar.core.users', + 'to' => '/admin/users', + 'icon' => 'mdi:account-group-outline', + 'module' => 'core', + ], [ 'label' => 'sidebar.general.logout', 'to' => '/logout', diff --git a/frontend/i18n/locales/fr.json b/frontend/i18n/locales/fr.json index eaf2273..8d4c92e 100644 --- a/frontend/i18n/locales/fr.json +++ b/frontend/i18n/locales/fr.json @@ -24,7 +24,8 @@ "suppliers": "Répertoire fournisseurs" }, "core": { - "roles": "Gestion des roles" + "roles": "Gestion des roles", + "users": "Utilisateurs" } }, "dashboard": { @@ -94,6 +95,32 @@ "selectAll": "Tout selectionner", "noPermissions": "Aucune permission disponible" } + }, + "users": { + "title": "Gestion des utilisateurs", + "noUsers": "Aucun utilisateur", + "table": { + "username": "Nom d'utilisateur", + "admin": "Administrateur", + "roles": "Roles", + "directPermissions": "Permissions directes", + "actions": "Actions" + }, + "drawer": { + "title": "Permissions de {username}", + "selfWarning": "Vous modifiez vos propres droits", + "adminToggle": "Administrateur (bypass total)", + "rolesSection": "Roles", + "directPermissionsSection": "Permissions directes", + "summarySection": "Resume des permissions effectives", + "noEffectivePermissions": "Aucune permission effective", + "sourceRole": "via {role}", + "sourceDirect": "Direct", + "lastAdminWarning": "Impossible de retirer le statut administrateur du dernier admin" + }, + "toast": { + "updated": "Permissions mises a jour avec succes" + } } } } -- 2.39.5 From d0ee109afbd2887bf67cab7b9b7e36e03d865e13 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 16 Apr 2026 09:59:26 +0200 Subject: [PATCH 2/8] feat(frontend) : ERP-27 - EffectivePermissions component Co-Authored-By: Claude Opus 4.6 (1M context) --- .../core/components/EffectivePermissions.vue | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 frontend/modules/core/components/EffectivePermissions.vue diff --git a/frontend/modules/core/components/EffectivePermissions.vue b/frontend/modules/core/components/EffectivePermissions.vue new file mode 100644 index 0000000..98646ec --- /dev/null +++ b/frontend/modules/core/components/EffectivePermissions.vue @@ -0,0 +1,73 @@ + + + -- 2.39.5 From c36b8b6c095f27044a94c7807d87f36a99a467ea Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 16 Apr 2026 10:01:46 +0200 Subject: [PATCH 3/8] feat(frontend) : ERP-27 - UserRbacDrawer component Co-Authored-By: Claude Opus 4.6 (1M context) --- .../core/components/UserRbacDrawer.vue | 285 ++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 frontend/modules/core/components/UserRbacDrawer.vue diff --git a/frontend/modules/core/components/UserRbacDrawer.vue b/frontend/modules/core/components/UserRbacDrawer.vue new file mode 100644 index 0000000..a215f6a --- /dev/null +++ b/frontend/modules/core/components/UserRbacDrawer.vue @@ -0,0 +1,285 @@ + + + -- 2.39.5 From 580ea019411142f6114d4ae10975dcfaec11069c Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 16 Apr 2026 10:03:14 +0200 Subject: [PATCH 4/8] feat(frontend) : ERP-27 - admin users page with DataTable and RBAC drawer Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/modules/core/pages/admin/users.vue | 126 ++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 frontend/modules/core/pages/admin/users.vue diff --git a/frontend/modules/core/pages/admin/users.vue b/frontend/modules/core/pages/admin/users.vue new file mode 100644 index 0000000..8f496dd --- /dev/null +++ b/frontend/modules/core/pages/admin/users.vue @@ -0,0 +1,126 @@ + + + -- 2.39.5 From d49c317c49c4c20a945fdbe0084eb043ca06d8d1 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 16 Apr 2026 10:45:21 +0200 Subject: [PATCH 5/8] fix(frontend) : ERP-26/27 - review fixes: shared types, accents i18n, escape key, self-edit refresh, row-clickable guard Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/i18n/locales/fr.json | 36 +++++++++---------- .../core/components/EffectivePermissions.vue | 9 ++--- .../core/components/PermissionGroup.vue | 8 +---- .../core/components/RoleDeleteModal.vue | 8 +++++ .../modules/core/components/RoleDrawer.vue | 17 +-------- .../core/components/UserRbacDrawer.vue | 36 +++---------------- frontend/modules/core/pages/admin/roles.vue | 20 ++--------- frontend/modules/core/pages/admin/users.vue | 8 +---- frontend/shared/types/rbac.ts | 31 ++++++++++++++++ 9 files changed, 70 insertions(+), 103 deletions(-) create mode 100644 frontend/shared/types/rbac.ts diff --git a/frontend/i18n/locales/fr.json b/frontend/i18n/locales/fr.json index 8d4c92e..998f3dc 100644 --- a/frontend/i18n/locales/fr.json +++ b/frontend/i18n/locales/fr.json @@ -24,7 +24,7 @@ "suppliers": "Répertoire fournisseurs" }, "core": { - "roles": "Gestion des roles", + "roles": "Gestion des rôles", "users": "Utilisateurs" } }, @@ -63,33 +63,33 @@ }, "admin": { "roles": { - "title": "Gestion des roles", - "newRole": "Nouveau role", - "editRole": "Modifier le role", - "createRole": "Creer un role", - "noRoles": "Aucun role configure", + "title": "Gestion des rôles", + "newRole": "Nouveau rôle", + "editRole": "Modifier le rôle", + "createRole": "Créer un rôle", + "noRoles": "Aucun rôle configuré", "table": { - "label": "Libelle", + "label": "Libellé", "code": "Code", "permissions": "Permissions", - "system": "Systeme", + "system": "Système", "actions": "Actions" }, "form": { - "label": "Libelle", + "label": "Libellé", "code": "Code", "description": "Description", "permissions": "Permissions" }, "delete": { - "title": "Supprimer le role", - "message": "Etes-vous sur de vouloir supprimer le role \"{label}\" ? Cette action est irreversible.", - "systemTooltip": "Role systeme non supprimable" + "title": "Supprimer le rôle", + "message": "Êtes-vous sûr de vouloir supprimer le rôle \"{label}\" ? Cette action est irréversible.", + "systemTooltip": "Rôle système non supprimable" }, "toast": { - "created": "Role cree avec succes", - "updated": "Role mis a jour avec succes", - "deleted": "Role supprime avec succes" + "created": "Rôle créé avec succès", + "updated": "Rôle mis à jour avec succès", + "deleted": "Rôle supprimé avec succès" }, "permissions": { "selectAll": "Tout selectionner", @@ -110,16 +110,16 @@ "title": "Permissions de {username}", "selfWarning": "Vous modifiez vos propres droits", "adminToggle": "Administrateur (bypass total)", - "rolesSection": "Roles", + "rolesSection": "Rôles", "directPermissionsSection": "Permissions directes", - "summarySection": "Resume des permissions effectives", + "summarySection": "Résumé des permissions effectives", "noEffectivePermissions": "Aucune permission effective", "sourceRole": "via {role}", "sourceDirect": "Direct", "lastAdminWarning": "Impossible de retirer le statut administrateur du dernier admin" }, "toast": { - "updated": "Permissions mises a jour avec succes" + "updated": "Permissions mises à jour avec succès" } } } diff --git a/frontend/modules/core/components/EffectivePermissions.vue b/frontend/modules/core/components/EffectivePermissions.vue index 98646ec..1e6bcab 100644 --- a/frontend/modules/core/components/EffectivePermissions.vue +++ b/frontend/modules/core/components/EffectivePermissions.vue @@ -40,14 +40,9 @@