From a9ef20969e3fccef985be8487a1d65a3d82c7fe0 Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Sat, 24 Jan 2026 00:06:08 +0000 Subject: [PATCH] Refer permissions by UUID rather than scope. --- frontend/auth/admin/AdminApp.vue | 4 +- frontend/src/admin/AdminOrgDetail.vue | 16 ++- frontend/src/admin/AdminOverview.vue | 12 +-- paskia/db/operations.py | 141 ++++++++++++++++---------- paskia/db/structs.py | 6 +- paskia/fastapi/admin.py | 36 ++++--- paskia/migrate/__init__.py | 32 +++--- 7 files changed, 149 insertions(+), 98 deletions(-) diff --git a/frontend/auth/admin/AdminApp.vue b/frontend/auth/admin/AdminApp.vue index 20a259e..68a8f6b 100644 --- a/frontend/auth/admin/AdminApp.vue +++ b/frontend/auth/admin/AdminApp.vue @@ -299,13 +299,13 @@ async function performPermissionDeletion(permissionScope) { } function deletePermission(p) { - const userCount = permissionSummary.value[p.scope]?.userCount || 0 + const userCount = permissionSummary.value[p.uuid]?.userCount || 0 // Count roles that have this permission let roleCount = 0 for (const org of orgs.value) { for (const role of org.roles) { - if (role.permissions.includes(p.scope)) { + if (role.permissions.includes(p.uuid)) { roleCount++ } } diff --git a/frontend/src/admin/AdminOrgDetail.vue b/frontend/src/admin/AdminOrgDetail.vue index 2012f5a..7aeecb0 100644 --- a/frontend/src/admin/AdminOrgDetail.vue +++ b/frontend/src/admin/AdminOrgDetail.vue @@ -26,6 +26,12 @@ const sortedRoles = computed(() => { }) }) +// Get org's grantable permissions as full permission objects (with UUIDs) +const orgPermissions = computed(() => { + const uuidSet = new Set(props.selectedOrg.permissions || []) + return props.permissions.filter(p => uuidSet.has(p.uuid)) +}) + function permissionDisplayName(scope) { return props.permissions.find(p => p.scope === scope)?.display_name || scope } @@ -302,17 +308,17 @@ defineExpose({ focusFirstElement })
-