"use client"; import { getCsrfToken, signIn } from "next-auth/react"; import { useTranslations } from "next-intl"; import { useRouter, useSearchParams } from "next/navigation"; import { useEffect, useState } from "react"; import { Loader } from "./loading/Loader"; export function SignIn() { const t = useTranslations("SignIn"); const [csrfToken, setCsrfToken] = useState(""); const [errorState, setErrorState] = useState(false); const [loading, setLoading] = useState(false); const [successState, setSuccessState] = useState(false); const search = useSearchParams(); const error = search.get("error"); const router = useRouter(); useEffect(() => { if (error) { setErrorState(true); } }, [error]); useEffect(() => { async function loadProviders() { const csrf = await getCsrfToken(); setCsrfToken(csrf); } loadProviders(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); const formData = new FormData(e.currentTarget); const password = formData.get("password"); const res = await signIn("credentials", { password, redirect: false, }); if (res?.error) { setErrorState(true); } else { setErrorState(false); setSuccessState(true); router.push("/"); router.refresh(); } setLoading(false); }; return (
); }