"use client"; import { useState } from "react"; import Link from "next/link"; import { useRouter, useSearchParams } from "next/navigation"; import { ActionButton } from "@/components/ui/action-button"; import { Alert, AlertTitle } from "@/components/ui/alert"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { useClientConfig } from "@/lib/clientConfig"; import { zodResolver } from "@hookform/resolvers/zod"; import { AlertCircle, Lock } from "lucide-react"; import { signIn } from "next-auth/react"; import { useForm } from "react-hook-form"; import { z } from "zod"; const signInSchema = z.object({ email: z.string().email(), password: z.string(), }); const SIGNIN_FAILED = "Incorrect email or password"; const OAUTH_FAILED = "OAuth login failed: "; const VERIFY_EMAIL_ERROR = "Please verify your email address before signing in"; export default function CredentialsForm() { const [signinError, setSigninError] = useState(""); const router = useRouter(); const searchParams = useSearchParams(); const clientConfig = useClientConfig(); const oAuthError = searchParams.get("error"); if (oAuthError && !signinError) { setSigninError(`${OAUTH_FAILED} ${oAuthError}`); } const form = useForm>({ resolver: zodResolver(signInSchema), defaultValues: { email: "", password: "", }, }); if (clientConfig.auth.disablePasswordAuth) { return (
{signinError && ( {signinError} )} Password authentication is currently disabled.
); } return (
{ const resp = await signIn("credentials", { redirect: false, email: value.email.trim(), password: value.password, }); if (!resp || !resp?.ok || resp.error) { if (resp?.error === "CredentialsSignin") { setSigninError(SIGNIN_FAILED); } else if (resp?.error === VERIFY_EMAIL_ERROR) { router.replace( `/check-email?email=${encodeURIComponent(value.email.trim())}`, ); } else { setSigninError(resp?.error ?? SIGNIN_FAILED); } return; } router.replace("/"); })} className="space-y-4" > {signinError && ( {signinError} )} ( Email )} /> ( Password )} /> Sign In
Forgot your password?

Don't have an account?{" "} Sign up

); }