import React from 'react'; import { Navigate, useLocation } from 'react-router-dom'; import { useAuth, AuthContextType } from '../../hooks/useAuth'; interface ProtectedRouteProps { children: React.ReactNode; allowedRoles?: string[]; } export function ProtectedRoute({ children, allowedRoles = [] }: ProtectedRouteProps) { const { user, loading, userRole } = useAuth(); const location = useLocation(); console.log('ProtectedRoute - User:', user?.user_metadata); console.log('ProtectedRoute - UserRole do contexto:', userRole); console.log('ProtectedRoute - Roles permitidas:', allowedRoles); if (loading) { return
Carregando...
; } // Se não houver usuário, redireciona para login if (!user) { return ; } // Pegar o role diretamente dos metadados do usuário const currentRole = user.user_metadata?.role; console.log('ProtectedRoute - Role dos metadados:', currentRole); // Se não houver roles requeridas, permite acesso if (allowedRoles.length === 0) { return <>{children}; } // Se o usuário não tiver o role necessário if (!allowedRoles.includes(currentRole)) { console.log('ProtectedRoute - Acesso negado'); // Redireciona para a página apropriada switch (currentRole) { case 'school': return ; case 'teacher': return ; case 'student': return ; default: return ; } } return <>{children}; }