"use client"; import { useState } from "react"; import { signIn } from "next-auth/react"; import { useRouter } from "next/navigation"; export default function LoginPage() { const router = useRouter(); const [mode, setMode] = useState<"login" | "register">("login"); const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); console.log("[login] submit fired, mode:", mode); setError(""); setLoading(true); try { if (mode === "register") { if (!name.trim()) { setError("Name required"); setLoading(false); return; } console.log("[login] POST /api/auth/register"); const res = await fetch("/api/auth/register", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name, email, password }), }); console.log("[login] register status", res.status); if (!res.ok) { const data = await res.json().catch(() => ({})); setError(data.error || `Registration failed (${res.status})`); setLoading(false); return; } } console.log("[login] calling signIn"); const result = await signIn("credentials", { email, password, redirect: false, }); console.log("[login] signIn result:", result); if (!result || result.error) { setError(mode === "register" ? "Account created but sign-in failed. Try logging in." : "Invalid email or password"); setLoading(false); return; } setLoading(false); router.push("/"); router.refresh(); } catch (err) { setError(err instanceof Error ? err.message : "Something went wrong"); setLoading(false); } } return (
{mode === "login" ? "Don't have an account?" : "Already have an account?"}{" "}