From 681775d367f166f6f49b87addd1a069338188e03 Mon Sep 17 00:00:00 2001 From: tristan Date: Fri, 17 Apr 2026 10:45:57 +0200 Subject: [PATCH] refactor(frontend) : RBAC - nettoyage UI admin users/roles Supprime la colonne actions des tables users et roles (la ligne cliquable ouvre deja le drawer). Deplace la suppression d'un role dans le drawer d'edition (bouton danger avec icone, desactive pour les roles systeme). Harmonise les boutons annuler en variant tertiary et ajoute les icones manquantes (plus pour nouveau role, poubelle pour supprimer). Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/i18n/locales/fr.json | 6 ++-- .../core/components/RoleDeleteModal.vue | 2 ++ .../modules/core/components/RoleDrawer.vue | 13 +++++++- .../core/components/UserRbacDrawer.vue | 2 +- frontend/modules/core/pages/admin/roles.vue | 30 ++++--------------- frontend/modules/core/pages/admin/users.vue | 13 -------- 6 files changed, 23 insertions(+), 43 deletions(-) diff --git a/frontend/i18n/locales/fr.json b/frontend/i18n/locales/fr.json index 998f3dc..9acd89e 100644 --- a/frontend/i18n/locales/fr.json +++ b/frontend/i18n/locales/fr.json @@ -72,8 +72,7 @@ "label": "Libellé", "code": "Code", "permissions": "Permissions", - "system": "Système", - "actions": "Actions" + "system": "Système" }, "form": { "label": "Libellé", @@ -103,8 +102,7 @@ "username": "Nom d'utilisateur", "admin": "Administrateur", "roles": "Roles", - "directPermissions": "Permissions directes", - "actions": "Actions" + "directPermissions": "Permissions directes" }, "drawer": { "title": "Permissions de {username}", diff --git a/frontend/modules/core/components/RoleDeleteModal.vue b/frontend/modules/core/components/RoleDeleteModal.vue index f9be735..e18e3dd 100644 --- a/frontend/modules/core/components/RoleDeleteModal.vue +++ b/frontend/modules/core/components/RoleDeleteModal.vue @@ -22,6 +22,8 @@ diff --git a/frontend/modules/core/components/RoleDrawer.vue b/frontend/modules/core/components/RoleDrawer.vue index 6b054f6..687cc71 100644 --- a/frontend/modules/core/components/RoleDrawer.vue +++ b/frontend/modules/core/components/RoleDrawer.vue @@ -53,8 +53,18 @@
+ () const saving = ref(false) diff --git a/frontend/modules/core/components/UserRbacDrawer.vue b/frontend/modules/core/components/UserRbacDrawer.vue index 15d3b4c..4a03ac9 100644 --- a/frontend/modules/core/components/UserRbacDrawer.vue +++ b/frontend/modules/core/components/UserRbacDrawer.vue @@ -76,7 +76,7 @@
@@ -37,25 +38,6 @@ {{ t('admin.roles.table.system') }} - @@ -63,6 +45,7 @@ v-model="drawerOpen" :role="selectedRole" @saved="onRoleSaved" + @delete="onDeleteRequest" /> @@ -93,7 +76,6 @@ const columns = [ { key: 'code', label: t('admin.roles.table.code') }, { key: 'permissions', label: t('admin.roles.table.permissions') }, { key: 'system', label: t('admin.roles.table.system') }, - { key: 'actions', label: t('admin.roles.table.actions') }, ] // Transformer les roles en items compatibles MalioDataTable @@ -105,7 +87,6 @@ const roleItems = computed(() => permissions: role.permissions.length, isSystem: role.isSystem, system: '', // colonne geree par le slot - actions: '', // colonne geree par le slot })) ) @@ -148,9 +129,9 @@ function openEditDrawer(role: Role) { drawerOpen.value = true } -function confirmDelete(role: Role) { - if (role.isSystem) return - roleToDelete.value = role +function onDeleteRequest() { + if (!selectedRole.value || selectedRole.value.isSystem) return + roleToDelete.value = selectedRole.value deleteModalOpen.value = true } @@ -163,6 +144,7 @@ async function handleDelete() { }) deleteModalOpen.value = false roleToDelete.value = null + drawerOpen.value = false await loadRoles() } finally { deleting.value = false diff --git a/frontend/modules/core/pages/admin/users.vue b/frontend/modules/core/pages/admin/users.vue index 990aaa2..0016a4b 100644 --- a/frontend/modules/core/pages/admin/users.vue +++ b/frontend/modules/core/pages/admin/users.vue @@ -25,17 +25,6 @@ {{ t('admin.users.table.admin') }} - @@ -68,7 +57,6 @@ const columns = [ { key: 'admin', label: t('admin.users.table.admin') }, { key: 'roles', label: t('admin.users.table.roles') }, { key: 'directPermissions', label: t('admin.users.table.directPermissions') }, - { key: 'actions', label: t('admin.users.table.actions') }, ] const userItems = computed(() => @@ -78,7 +66,6 @@ const userItems = computed(() => admin: user.isAdmin, roles: user.roles.length, directPermissions: user.directPermissions.length, - actions: '', })) )