'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import { Button } from '@repo/shadcn/button'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@repo/shadcn/form'; import { Input } from '@repo/shadcn/input'; import { signIn } from 'next-auth/react'; import { useRouter, useSearchParams } from 'next/navigation'; import { useState, useTransition } from 'react'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { UserFormValue, formSchema } from '../schemas/login'; export default function UserAuthForm() { const router = useRouter(); const searchParams = useSearchParams(); const callbackUrl = searchParams.get('callbackUrl'); const [loading, startTransition] = useTransition(); const [error, SetError] = useState(null); const defaultValues = { username: '', password: '', }; const form = useForm({ resolver: zodResolver(formSchema), defaultValues, }); const onSubmit = async (data: UserFormValue) => { SetError(null); // Limpia cualquier error previo al intentar iniciar sesión startTransition(async () => { try { const login = await signIn('credentials', { username: data.username, password: data.password, redirect: false, // No queremos una redirección automática aquí }); if (login?.error) { const errorMessage = login.error === 'CredentialsSignin' ? 'Usuario o contraseña incorrectos' : 'Contacte al Administrador'; SetError(errorMessage); toast.error(errorMessage); } // Si la autenticación es exitosa y `redirect: false`, necesitamos redirigir manualmente if (login?.ok && !login?.error) { toast.success('Ingreso Exitoso!'); router.push(callbackUrl ?? '/dashboard'); } } catch (error) { console.error('Error durante el inicio de sesión:', error); toast.error('Hubo un error inesperado'); } }); }; return ( <>

Sistema Integral Fondemi

Ingresa tus datos

( Usuario )} />
( Contraseña )} />
{error && ( {error} )}{' '}
No tienes una cuenta?{" "} Registrate
); }