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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<SidebarProviderProps> = ({ 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<SidebarProviderProps> = ({ 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),
|
||||
|
|
|
|||
|
|
@ -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]);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue