import { Navigate, useLocation } from 'react-router-dom' import { useAuthStore } from '@/store/authStore' import { usePermissions, type EffectiveRole } from '@/hooks/usePermissions' interface ProtectedRouteProps { requiredRole?: EffectiveRole children: React.ReactNode } export function ProtectedRoute({ requiredRole, children }: ProtectedRouteProps) { const { isAuthenticated, isLoading } = useAuthStore() const location = useLocation() const { effectiveRole } = usePermissions() if (isLoading) { return (
) } if (!isAuthenticated) { return } if (requiredRole) { const ROLE_HIERARCHY: Record = { super_admin: 4, owner: 3, engineer: 2, viewer: 1, } if (ROLE_HIERARCHY[effectiveRole] < ROLE_HIERARCHY[requiredRole]) { return } } return <>{children} } export default ProtectedRoute