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)