From 55f8249f2c16066874c9f1d675dbca8be851055c Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 17 May 2026 13:52:36 +0200 Subject: [PATCH] Load role permissions when opening the Edit Role dialog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dialog reads from rolePermissionsForView / roleUsersForView, but editRole(role) only ever populated the form fields and showed the dialog — those arrays were left at whatever state the rest of the page had set them to. Result: opening Edit Role for a role with existing permissions showed "No permissions assigned to this role yet", and the list only "appeared" because adding a permission triggered a refresh. Mirror viewRole's pattern: clear both arrays, GET /admin/roles/{id}, populate from the response, then show the dialog after $nextTick. Closes #14 --- static/js/permissions.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/static/js/permissions.js b/static/js/permissions.js index cd63797..bd66f10 100644 --- a/static/js/permissions.js +++ b/static/js/permissions.js @@ -709,7 +709,7 @@ window.app = Vue.createApp({ } }, - editRole(role) { + async editRole(role) { this.editingRole = true this.selectedRole = role this.roleForm = { @@ -717,6 +717,28 @@ window.app = Vue.createApp({ description: role.description || '', is_default: role.is_default || false } + this.rolePermissionsForView = [] + this.roleUsersForView = [] + + try { + const response = await LNbits.api.request( + 'GET', + `/libra/api/v1/admin/roles/${role.id}`, + this.g.user.wallets[0].adminkey + ) + this.rolePermissionsForView = [...(response.data.permissions || [])] + this.roleUsersForView = [...(response.data.users || [])] + } catch (error) { + console.error('Failed to load role details:', error) + this.$q.notify({ + type: 'negative', + message: 'Failed to load role permissions', + caption: error.message || 'Unknown error', + timeout: 5000 + }) + } + + await this.$nextTick() this.showCreateRoleDialog = true },