From fc55a25f0b8b9b94b1198daf37441916571d4f2d Mon Sep 17 00:00:00 2001 From: Ida Dittrich Date: Mon, 5 Jan 2026 07:08:00 +0100 Subject: [PATCH] fix:added more rolelabel logging to see why missing pages --- src/api/permissionApi.ts | 22 +++++++++++++++++++ src/core/PageManager/SidebarProvider.tsx | 27 ++++++++++++++++++++++- src/hooks/usePermissions.ts | 28 ++++++++++++++++++------ src/hooks/useUsers.ts | 4 +++- 4 files changed, 72 insertions(+), 9 deletions(-) diff --git a/src/api/permissionApi.ts b/src/api/permissionApi.ts index f78ecb7..81138ed 100644 --- a/src/api/permissionApi.ts +++ b/src/api/permissionApi.ts @@ -38,12 +38,34 @@ export async function fetchPermissions( params.item = item; } + console.log('📡 fetchPermissions: Requesting permissions:', { + context, + item, + params, + url: '/api/rbac/permissions' + }); + const data = await request({ url: '/api/rbac/permissions', method: 'get', params }); + console.log('📥 fetchPermissions: Received permissions response:', { + context, + item, + response: data, + view: data?.view, + read: data?.read, + create: data?.create, + update: data?.update, + delete: data?.delete, + type: typeof data, + isArray: Array.isArray(data), + keys: data ? Object.keys(data) : [], + fullResponse: JSON.stringify(data, null, 2) + }); + return data; } diff --git a/src/core/PageManager/SidebarProvider.tsx b/src/core/PageManager/SidebarProvider.tsx index f513441..4cade1d 100644 --- a/src/core/PageManager/SidebarProvider.tsx +++ b/src/core/PageManager/SidebarProvider.tsx @@ -3,6 +3,7 @@ import { allPageData, SidebarItem } from './data'; import { useLanguage } from '../../providers/language/LanguageContext'; import { resolveLanguageText } from './pageInterface'; import { usePermissions } from '../../hooks/usePermissions'; +import { getUserDataCache } from '../../utils/userCache'; import { FaHome, FaCogs } from 'react-icons/fa'; // Configuration for parent groups that don't have a page definition @@ -159,8 +160,18 @@ export const SidebarProvider: React.FC = ({ children }) => .filter(page => !page.parentPath && !page.hide && page.showInSidebar !== false) .sort((a, b) => (a.order || 0) - (b.order || 0)); + // Log user info for debugging + const cachedUser = getUserDataCache(); + console.log('👤 SidebarProvider: Current user info:', { + username: cachedUser?.username, + roleLabels: cachedUser?.roleLabels, + roleLabelsLength: Array.isArray(cachedUser?.roleLabels) ? cachedUser.roleLabels.length : 0, + privilege: cachedUser?.privilege + }); + // Process each main page - console.log('📋 SidebarProvider: Processing pages, total:', mainPages.length); + console.log('📋 SidebarProvider: Processing pages, total:', mainPages.length, 'pages to check'); + const pageAccessResults: Array<{ path: string; name: string; hasAccess: boolean }> = []; for (const pageData of mainPages) { console.log('🔍 SidebarProvider: Checking access for page:', { path: pageData.path, @@ -288,6 +299,20 @@ export const SidebarProvider: React.FC = ({ children }) => // Sort all items by order const sortedItems = items.sort((a, b) => (a.order || 0) - (b.order || 0)); + + // Summary of page access checks + const accessiblePages = pageAccessResults.filter(r => r.hasAccess); + const deniedPages = pageAccessResults.filter(r => !r.hasAccess); + + console.log('📊 SidebarProvider: Page access summary:', { + totalPagesChecked: pageAccessResults.length, + accessiblePages: accessiblePages.length, + deniedPages: deniedPages.length, + accessiblePagePaths: accessiblePages.map(p => p.path), + deniedPagePaths: deniedPages.map(p => p.path), + deniedPageDetails: deniedPages.map(p => ({ path: p.path, name: p.name })) + }); + console.log('📊 SidebarProvider: Final sidebar items built and sorted:', { totalItems: sortedItems.length, sortedPaths: sortedItems.map(item => item.link), diff --git a/src/hooks/usePermissions.ts b/src/hooks/usePermissions.ts index e82f832..58d1eea 100644 --- a/src/hooks/usePermissions.ts +++ b/src/hooks/usePermissions.ts @@ -99,11 +99,16 @@ export const usePermissions = () => { context, item, permissions: result, - hasView: result?.view, - hasCreate: result?.create, - hasUpdate: result?.update, - hasDelete: result?.delete, - fullResponse: result + view: result?.view, + viewType: typeof result?.view, + viewValue: result?.view, + read: result?.read, + create: result?.create, + update: result?.update, + delete: result?.delete, + isArray: Array.isArray(result), + keys: result ? Object.keys(result) : [], + fullResponse: JSON.stringify(result, null, 2) }); return result; } catch (error: any) { @@ -199,8 +204,17 @@ export const usePermissions = () => { context, item, hasAccess, - permissions: permissions, - viewPermission: permissions.view + viewPermission: permissions.view, + viewPermissionType: typeof permissions.view, + viewPermissionValue: permissions.view, + allPermissions: { + view: permissions.view, + read: permissions.read, + create: permissions.create, + update: permissions.update, + delete: permissions.delete + }, + fullPermissionsObject: JSON.stringify(permissions, null, 2) }); return hasAccess; }, [checkPermission]); diff --git a/src/hooks/useUsers.ts b/src/hooks/useUsers.ts index 88fc71c..ea143ef 100644 --- a/src/hooks/useUsers.ts +++ b/src/hooks/useUsers.ts @@ -73,9 +73,11 @@ export function useCurrentUser() { roleLabels: data?.roleLabels, privilege: data?.privilege, hasRoleLabels: !!data?.roleLabels, + roleLabelsLength: Array.isArray(data?.roleLabels) ? data.roleLabels.length : 0, + roleLabelsContent: Array.isArray(data?.roleLabels) ? data.roleLabels : 'not an array', hasPrivilege: !!data?.privilege, allKeys: data ? Object.keys(data) : [], - fullData: data + fullData: JSON.stringify(data, null, 2) }); // Always cache user data - permissions are checked via RBAC API, not client-side