import { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import axios from 'axios'; import { useAuth } from '../../modules/auth'; import { Button } from '../../components/ui'; const loginSchema = z.object({ email: z.string().min(1, 'E-mail é obrigatório').email('E-mail inválido'), password: z.string().min(1, 'Senha é obrigatória'), }); type LoginFormData = z.infer; export function LoginPage() { const { login } = useAuth(); const navigate = useNavigate(); const [apiError, setApiError] = useState(null); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(loginSchema), }); async function onSubmit(data: LoginFormData) { setApiError(null); try { await login(data.email, data.password); navigate('/', { replace: true }); } catch (err) { if (axios.isAxiosError(err)) { const status = err.response?.status; if (status === 401) { setApiError('E-mail ou senha incorretos'); } else if (status === 403) { setApiError('Usuário inativo'); } else { setApiError('Erro ao realizar login. Tente novamente.'); } } else { setApiError('Erro ao realizar login. Tente novamente.'); } } } return (
ISIS

Sistema de Gestão

{errors.email &&

{errors.email.message}

}
{errors.password && (

{errors.password.message}

)}
{apiError &&

{apiError}

}
Esqueceu sua senha?
); }