diff --git a/config/sidebar.php b/config/sidebar.php index 54018b8..0b11e48 100644 --- a/config/sidebar.php +++ b/config/sidebar.php @@ -8,6 +8,8 @@ declare(strict_types=1); * This file defines the sidebar sections displayed in the frontend. * Each item references the module that owns it via the `module` key. * Items whose module is not active (see config/modules.php) are filtered out. + * Items may also declare a `permission` key (RBAC permission code) : the item + * is hidden from users who do not hold that permission. * * This config is decoupled from the modules themselves: you can freely * move an item from one section to another without touching the module code. @@ -33,10 +35,18 @@ return [ 'module' => 'core', ], [ - 'label' => 'sidebar.core.roles', - 'to' => '/admin/roles', - 'icon' => 'mdi:shield-account-outline', - 'module' => 'core', + 'label' => 'sidebar.core.roles', + 'to' => '/admin/roles', + 'icon' => 'mdi:shield-account-outline', + 'module' => 'core', + 'permission' => 'core.roles.view', + ], + [ + 'label' => 'sidebar.core.users', + 'to' => '/admin/users', + 'icon' => 'mdi:account-group-outline', + 'module' => 'core', + 'permission' => 'core.users.view', ], [ 'label' => 'sidebar.general.logout', diff --git a/frontend/i18n/locales/fr.json b/frontend/i18n/locales/fr.json index eaf2273..998f3dc 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 rôles", + "users": "Utilisateurs" } }, "dashboard": { @@ -62,38 +63,64 @@ }, "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", "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": "Rôles", + "directPermissionsSection": "Permissions directes", + "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 à jour avec succès" + } } } } diff --git a/frontend/modules/core/components/EffectivePermissions.vue b/frontend/modules/core/components/EffectivePermissions.vue new file mode 100644 index 0000000..1e6bcab --- /dev/null +++ b/frontend/modules/core/components/EffectivePermissions.vue @@ -0,0 +1,68 @@ + + + diff --git a/frontend/modules/core/components/PermissionGroup.vue b/frontend/modules/core/components/PermissionGroup.vue index 1288a22..8eb589f 100644 --- a/frontend/modules/core/components/PermissionGroup.vue +++ b/frontend/modules/core/components/PermissionGroup.vue @@ -30,13 +30,7 @@