import React from 'react'; import { useAuth } from '@/lib/auth'; type Role = 'STUDENT' | 'ADMIN' | 'ORG_MEMBER' | 'ORG_ADMIN' | 'SUPER_ADMIN'; interface RoleGuardProps { children: React.ReactNode; allowedRoles?: Role[]; requireSuperAdmin?: boolean; fallback?: React.ReactNode; } /** * RoleGuard component to conditionally render content based on user roles. * * Usage: * * * */ export const RoleGuard: React.FC = ({ children, allowedRoles, requireSuperAdmin = false, fallback = null }) => { const { user } = useAuth(); if (!user) return <>{fallback}; const userRole = user.role as Role; // Special case for Super Admin logic if (requireSuperAdmin) { if (userRole === 'SUPER_ADMIN' || userRole === 'ADMIN') { return <>{children}; } return <>{fallback}; } // Default role check if (allowedRoles && allowedRoles.length > 0) { if (allowedRoles.includes(userRole)) { return <>{children}; } return <>{fallback}; } return <>{children}; }; export default RoleGuard;