From c8420421eb7d62a5003aab7c9726a2d7d582923d Mon Sep 17 00:00:00 2001 From: Lucas Santana Date: Fri, 20 Dec 2024 13:29:31 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20ajusta=20verifica=C3=A7=C3=A3o=20de=20ro?= =?UTF-8?q?les=20no=20ProtectedRoute?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Adiciona logs detalhados para debug do fluxo de autenticação - Pega role diretamente dos metadados do usuário - Simplifica lógica de verificação de roles com switch case - Melhora mensagens de debug para identificar problemas de acesso --- src/components/auth/ProtectedRoute.tsx | 31 ++++++++++++++++---------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/components/auth/ProtectedRoute.tsx b/src/components/auth/ProtectedRoute.tsx index 6c97f2c..f4cc6e1 100644 --- a/src/components/auth/ProtectedRoute.tsx +++ b/src/components/auth/ProtectedRoute.tsx @@ -11,6 +11,10 @@ export function ProtectedRoute({ children, allowedRoles = [] }: ProtectedRoutePr 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...
; } @@ -20,27 +24,30 @@ export function ProtectedRoute({ children, allowedRoles = [] }: ProtectedRoutePr 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(userRole || '')) { - console.log('Role atual:', userRole); - console.log('Roles permitidas:', allowedRoles); + if (!allowedRoles.includes(currentRole)) { + console.log('ProtectedRoute - Acesso negado'); // Redireciona para a página apropriada - if (userRole === 'school') { - return ; - } else if (userRole === 'teacher') { - return ; - } else if (userRole === 'student') { - return ; + switch (currentRole) { + case 'school': + return ; + case 'teacher': + return ; + case 'student': + return ; + default: + return ; } - - // Se não tiver role definido, volta para home - return ; } return <>{children};