fix:added more rolelabel logging to see why missing pages
This commit is contained in:
parent
48754d6243
commit
fc55a25f0b
4 changed files with 72 additions and 9 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
|
|
||||||
|
|
@ -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]);
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue