From b41fc3e19bcdc2d8ded8fab960b7393e1d3c3d18 Mon Sep 17 00:00:00 2001 From: 230417 <230417@epvc.pt> Date: Tue, 3 Mar 2026 15:14:58 +0000 Subject: [PATCH] =?UTF-8?q?corre=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/pages/AuthLogin.tsx | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/web/src/pages/AuthLogin.tsx b/web/src/pages/AuthLogin.tsx index c99f5f1..3a0c254 100644 --- a/web/src/pages/AuthLogin.tsx +++ b/web/src/pages/AuthLogin.tsx @@ -12,6 +12,7 @@ import { Button } from '../components/ui/button' import { Card } from '../components/ui/card' import { LogIn } from 'lucide-react' import { supabase } from '../lib/supabase' +import { useApp } from '../context/AppContext' export default function AuthLogin() { const [email, setEmail] = useState('') @@ -21,21 +22,19 @@ export default function AuthLogin() { // Utilização do hook do react-router-dom para navegação entre páginas web const navigate = useNavigate() + const { user } = useApp() /** * Hook executado na montagem inicial do componente. - * Interage diretamente com o método `getSession` do Supabase para verificar - * de forma assíncrona se o utilizador possui um token de sessão válido na cache/local storage. - * Se os dados do utilizador confirmarem autenticação ativa, redireciona o fluxo para '/explorar'. + * Interage diretamente com o AppContext para verificar + * de forma reativa se o utilizador já está logado. + * Se os dados do utilizador confirmarem autenticação ativa, redireciona o fluxo consoante a role. */ useEffect(() => { - supabase.auth.getSession().then(({ data }) => { - // Confirma a existência num objeto global não nulo associado ao session - if (data.session) { - navigate('/explorar', { replace: true }) - } - }) - }, [navigate]) + if (user) { + navigate(user.role === 'barbearia' ? '/painel' : '/explorar', { replace: true }) + } + }, [user, navigate]) /** * Manipula a submissão do formulário na view para validar as credenciais. @@ -49,18 +48,19 @@ export default function AuthLogin() { try { // Comunicação via API REST do Supabase para Login // A biblioteca gera pedido POST com as credenciais (Email e JSON PW) para endpoint /token - const { error } = await supabase.auth.signInWithPassword({ + const { data, error } = await supabase.auth.signInWithPassword({ email, password, }) if (error) throw error - // Sucesso na verificação origina redirecionamento do Auth - navigate('/explorar', { replace: true }) + // Sucesso na verificação origina redirecionamento baseado na rule (metadados guardados no Auth) + const role = data.user?.user_metadata?.role + if (role) { + navigate(role === 'barbearia' ? '/painel' : '/explorar', { replace: true }) + } } catch (e: any) { setError('Credenciais inválidas ou email não confirmado') - } finally { - // Reset da flag de estado da UI, quer dê erro quer não setLoading(false) } }