"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { signIn } from "next-auth/react"; import DragonEye from "@/components/DragonEye"; export default function AuthPage() { const [tab, setTab] = useState<"login" | "register">("login"); // Login state const [loginEmail, setLoginEmail] = useState(""); const [loginPassword, setLoginPassword] = useState(""); const [loginError, setLoginError] = useState(""); const [loginLoading, setLoginLoading] = useState(false); // Register state const [regName, setRegName] = useState(""); const [regEmail, setRegEmail] = useState(""); const [regPassword, setRegPassword] = useState(""); const [regConfirm, setRegConfirm] = useState(""); const [regError, setRegError] = useState(""); const [regSuccess, setRegSuccess] = useState(""); const [regLoading, setRegLoading] = useState(false); const router = useRouter(); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setLoginLoading(true); setLoginError(""); const result = await signIn("credentials", { email: loginEmail, password: loginPassword, redirect: false, }); if (result?.ok) { router.push("/dashboard"); } else { setLoginError("Email ou mot de passe incorrect."); setLoginLoading(false); } }; const handleRegister = async (e: React.FormEvent) => { e.preventDefault(); setRegError(""); setRegSuccess(""); if (regPassword !== regConfirm) { setRegError("Les mots de passe ne correspondent pas."); return; } setRegLoading(true); const res = await fetch("/api/auth/register", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ email: regEmail, password: regPassword, name: regName }), }); const data = await res.json(); if (!res.ok) { setRegError(data.error || "Erreur lors de l'inscription."); setRegLoading(false); return; } setRegSuccess("Compte créé ! Connexion en cours..."); const result = await signIn("credentials", { email: regEmail, password: regPassword, redirect: false, }); if (result?.ok) { router.push("/dashboard"); } else { setRegError("Compte créé mais connexion échouée. Veuillez vous connecter."); setRegLoading(false); } }; const inputClass = (hasError: boolean) => `w-full bg-[#0d1210] border px-4 py-3 text-sm font-mono text-white placeholder-[#2a3a2a] outline-none rounded-sm transition-all duration-200 ${ hasError ? "border-red-500/50" : "border-[#1a2a1a] focus:border-[#4aff8c]/40" }`; return (
{/* Header */}
Analytics Dashboard

WYVIEW

{/* Tabs */}
{/* Login Form */} {tab === "login" && (
{ setLoginEmail(e.target.value); setLoginError(""); }} className={inputClass(!!loginError)} /> { setLoginPassword(e.target.value); setLoginError(""); }} className={inputClass(!!loginError)} /> {loginError && (

— {loginError}

)}
)} {/* Register Form */} {tab === "register" && (
{ setRegName(e.target.value); setRegError(""); }} className={inputClass(false)} /> { setRegEmail(e.target.value); setRegError(""); }} className={inputClass(!!regError)} /> { setRegPassword(e.target.value); setRegError(""); }} className={inputClass(!!regError)} /> { setRegConfirm(e.target.value); setRegError(""); }} className={inputClass(!!regError && regPassword !== regConfirm)} /> {regError && (

— {regError}

)} {regSuccess && (

✓ {regSuccess}

)}
)}
WYVIEW v1.0 /// CROWMATE
); }