From 978aae592a70bb02cf35c1684fa54ee0de06fd7b Mon Sep 17 00:00:00 2001 From: alma Date: Fri, 18 Apr 2025 10:39:38 +0200 Subject: [PATCH] clean sidebar role 2 --- components/main-nav.tsx | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/components/main-nav.tsx b/components/main-nav.tsx index bcd5c4b8..15ea61ef 100644 --- a/components/main-nav.tsx +++ b/components/main-nav.tsx @@ -105,18 +105,31 @@ export function MainNav() { // Function to check if user has a specific role const hasRole = (requiredRoles: string[]) => { - if (!session?.user?.role) return false; + if (!session?.user?.role) { + console.log('No user roles found'); + return false; + } + const userRoles = Array.isArray(session.user.role) ? session.user.role : [session.user.role]; + console.log('Raw user roles:', userRoles); - // Add console.log to debug roles - console.log('User roles:', userRoles); - console.log('Required roles:', requiredRoles); + // Clean up user roles by removing prefixes and converting to lowercase + const cleanUserRoles = userRoles.map(role => + role.replace(/^[\/]/, '') // Remove leading slash + .replace(/^ROLE_/, '') // Remove ROLE_ prefix + .toLowerCase() + ); + console.log('Clean user roles:', cleanUserRoles); - return userRoles.some(role => { - // Remove ROLE_ prefix if it exists - const cleanRole = role.replace('ROLE_', ''); - return requiredRoles.includes(cleanRole) || cleanRole === 'Admin'; - }); + // Clean required roles + const cleanRequiredRoles = requiredRoles.map(role => role.toLowerCase()); + console.log('Clean required roles:', cleanRequiredRoles); + + // Check if user has any of the required roles + const hasAnyRole = cleanRequiredRoles.some(role => cleanUserRoles.includes(role)); + console.log('Has any role:', hasAnyRole); + + return hasAnyRole; }; // Status configurations