From 4589aaab2f31a20ded7d2267a9c369a953284db2 Mon Sep 17 00:00:00 2001 From: alma Date: Thu, 17 Apr 2025 17:16:41 +0200 Subject: [PATCH] clean pages 3 rest 3 --- components/sidebar.tsx | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/components/sidebar.tsx b/components/sidebar.tsx index 616eb524..14c6bb87 100644 --- a/components/sidebar.tsx +++ b/components/sidebar.tsx @@ -49,26 +49,33 @@ export function Sidebar({ isOpen, onClose }: SidebarProps) { const pathname = usePathname(); // Function to check if user has a specific role - const hasRole = (requiredRole: string | string[]) => { - if (!session?.user?.role) return false; + const hasRole = (requiredRole: string | string[] | undefined) => { + if (!requiredRole || !session?.user?.role) { + console.log('No required role or user roles found'); + return false; + } + const userRoles = Array.isArray(session.user.role) ? session.user.role : [session.user.role]; - // Add console.log to debug roles - console.log('User roles:', userRoles); - console.log('Required role:', requiredRole); - - // Clean up user roles by removing ROLE_ prefix and / prefix + // Clean up user roles by removing prefixes and converting to lowercase for comparison const cleanUserRoles = userRoles.map(role => - role.replace('ROLE_', '').replace('/', '') + role.replace(/^[\/]/, '').toLowerCase() ); - + + console.log('Clean user roles:', cleanUserRoles); + + // If requiredRole is an array, check if user has any of the roles if (Array.isArray(requiredRole)) { - return requiredRole.some(role => - cleanUserRoles.includes(role) || cleanUserRoles.includes('Admin') + const cleanRequiredRoles = requiredRole.map(role => role.toLowerCase()); + console.log('Required roles (array):', cleanRequiredRoles); + return cleanRequiredRoles.some(role => + cleanUserRoles.includes(role.toLowerCase()) || cleanUserRoles.includes('admin') ); } - return cleanUserRoles.includes(requiredRole) || cleanUserRoles.includes('Admin'); + // For single role requirement + console.log('Required role (single):', requiredRole.toLowerCase()); + return cleanUserRoles.includes(requiredRole.toLowerCase()) || cleanUserRoles.includes('admin'); }; // Base menu items (available for everyone)