correção

This commit is contained in:
2026-03-03 15:14:58 +00:00
parent 8dc232f2fe
commit b41fc3e19b

View File

@@ -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)
}
}