fix:added more rolelabel logging to see why missing pages

This commit is contained in:
Ida Dittrich 2026-01-05 07:08:00 +01:00
parent 48754d6243
commit fc55a25f0b
4 changed files with 72 additions and 9 deletions

View file

@ -38,12 +38,34 @@ export async function fetchPermissions(
params.item = item; params.item = item;
} }
console.log('📡 fetchPermissions: Requesting permissions:', {
context,
item,
params,
url: '/api/rbac/permissions'
});
const data = await request({ const data = await request({
url: '/api/rbac/permissions', url: '/api/rbac/permissions',
method: 'get', method: 'get',
params 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; return data;
} }

View file

@ -3,6 +3,7 @@ import { allPageData, SidebarItem } from './data';
import { useLanguage } from '../../providers/language/LanguageContext'; import { useLanguage } from '../../providers/language/LanguageContext';
import { resolveLanguageText } from './pageInterface'; import { resolveLanguageText } from './pageInterface';
import { usePermissions } from '../../hooks/usePermissions'; import { usePermissions } from '../../hooks/usePermissions';
import { getUserDataCache } from '../../utils/userCache';
import { FaHome, FaCogs } from 'react-icons/fa'; import { FaHome, FaCogs } from 'react-icons/fa';
// Configuration for parent groups that don't have a page definition // Configuration for parent groups that don't have a page definition
@ -159,8 +160,18 @@ export const SidebarProvider: React.FC<SidebarProviderProps> = ({ children }) =>
.filter(page => !page.parentPath && !page.hide && page.showInSidebar !== false) .filter(page => !page.parentPath && !page.hide && page.showInSidebar !== false)
.sort((a, b) => (a.order || 0) - (b.order || 0)); .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 // 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) { for (const pageData of mainPages) {
console.log('🔍 SidebarProvider: Checking access for page:', { console.log('🔍 SidebarProvider: Checking access for page:', {
path: pageData.path, path: pageData.path,
@ -288,6 +299,20 @@ export const SidebarProvider: React.FC<SidebarProviderProps> = ({ children }) =>
// Sort all items by order // Sort all items by order
const sortedItems = items.sort((a, b) => (a.order || 0) - (b.order || 0)); 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:', { console.log('📊 SidebarProvider: Final sidebar items built and sorted:', {
totalItems: sortedItems.length, totalItems: sortedItems.length,
sortedPaths: sortedItems.map(item => item.link), sortedPaths: sortedItems.map(item => item.link),

View file

@ -99,11 +99,16 @@ export const usePermissions = () => {
context, context,
item, item,
permissions: result, permissions: result,
hasView: result?.view, view: result?.view,
hasCreate: result?.create, viewType: typeof result?.view,
hasUpdate: result?.update, viewValue: result?.view,
hasDelete: result?.delete, read: result?.read,
fullResponse: result 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; return result;
} catch (error: any) { } catch (error: any) {
@ -199,8 +204,17 @@ export const usePermissions = () => {
context, context,
item, item,
hasAccess, 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; return hasAccess;
}, [checkPermission]); }, [checkPermission]);

View file

@ -73,9 +73,11 @@ export function useCurrentUser() {
roleLabels: data?.roleLabels, roleLabels: data?.roleLabels,
privilege: data?.privilege, privilege: data?.privilege,
hasRoleLabels: !!data?.roleLabels, 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, hasPrivilege: !!data?.privilege,
allKeys: data ? Object.keys(data) : [], 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 // Always cache user data - permissions are checked via RBAC API, not client-side