diff --git a/app/dashboard/company/layout.tsx b/app/dashboard/company/layout.tsx index 9d56c39f..8295d6fb 100644 --- a/app/dashboard/company/layout.tsx +++ b/app/dashboard/company/layout.tsx @@ -185,13 +185,16 @@ function CompanyDashboardContent({ } // Generate sidebar items with dynamic company slug + // Use currentCompany.slug as fallback when companySlug from params is undefined + const effectiveSlug = companySlug || currentCompany.slug + const sidebarItems: SidebarGroupType[] = [ { title: 'Dashboard', items: [ { title: 'Overview', - url: `/dashboard/company/${companySlug}`, + url: `/dashboard/company/${effectiveSlug}`, icon: LayoutDashboard, }, ], @@ -201,17 +204,17 @@ function CompanyDashboardContent({ items: [ { title: 'Events', - url: `/dashboard/company/${companySlug}/events`, + url: `/dashboard/company/${effectiveSlug}/events`, icon: Calendar, }, { title: 'Hackathons', - url: `/dashboard/company/${companySlug}/hackathons`, + url: `/dashboard/company/${effectiveSlug}/hackathons`, icon: Trophy, }, { title: 'Team', - url: `/dashboard/company/${companySlug}/team`, + url: `/dashboard/company/${effectiveSlug}/team`, icon: Users, }, ], @@ -221,7 +224,7 @@ function CompanyDashboardContent({ items: [ { title: 'Analytics', - url: `/dashboard/company/${companySlug}/analytics`, + url: `/dashboard/company/${effectiveSlug}/analytics`, icon: BarChart3, }, ], @@ -231,12 +234,12 @@ function CompanyDashboardContent({ items: [ { title: 'Company Settings', - url: `/dashboard/company/${companySlug}/settings`, + url: `/dashboard/company/${effectiveSlug}/settings`, icon: Settings, }, { title: 'Subscription', - url: `/dashboard/company/${companySlug}/subscription`, + url: `/dashboard/company/${effectiveSlug}/subscription`, icon: CreditCard, }, ], diff --git a/lib/hooks/useRoleProtection.ts b/lib/hooks/useRoleProtection.ts index 048a95c2..aa333fe2 100644 --- a/lib/hooks/useRoleProtection.ts +++ b/lib/hooks/useRoleProtection.ts @@ -20,11 +20,15 @@ export function useRoleProtection(requiredRole: 'student' | 'company_member') { return } - // Check if user is a company member (FIXED: changed from 'company_users' to 'company_members') + // Check if user is a company member and get their company slug const { data: companyMembership } = await supabase .from('company_members') - .select('id') + .select(` + id, + company:companies(slug) + `) .eq('user_id', user.id) + .eq('status', 'active') .maybeSingle() const isCompanyMember = !!companyMembership @@ -39,7 +43,15 @@ export function useRoleProtection(requiredRole: 'student' | 'company_member') { } else if (requiredRole === 'student') { if (isCompanyMember) { // User is a company member trying to access student routes - router.push('/dashboard/company') + // Redirect to their company dashboard with the correct slug + const company = companyMembership.company as unknown as { slug: string } | null + const companySlug = company?.slug + if (companySlug) { + router.push(`/dashboard/company/${companySlug}`) + } else { + // Fallback if slug is not available + router.push('/dashboard/company') + } return } }