import Link from "next/link"; import { useState } from "react"; import { useRouter } from "next/router"; import { toast } from "react-hot-toast"; import SubmitButton from "@/components/SubmitButton"; interface FormData { name: string; email: string; password: string; passwordConfirmation: string; } export default function Register() { const router = useRouter(); const [submitLoader, setSubmitLoader] = useState(false); const [form, setForm] = useState({ name: "", email: "", password: "", passwordConfirmation: "", }); async function registerUser() { if ( form.name !== "" && form.email !== "" && form.password !== "" && form.passwordConfirmation !== "" ) { if (form.password === form.passwordConfirmation) { const { passwordConfirmation, ...request } = form; setSubmitLoader(true); const load = toast.loading("Creating Account..."); const response = await fetch("/api/auth/register", { body: JSON.stringify(request), headers: { "Content-Type": "application/json", }, method: "POST", }); const data = await response.json(); toast.dismiss(load); setSubmitLoader(false); if (response.ok) { setForm({ name: "", email: "", password: "", passwordConfirmation: "", }); toast.success("User Created!"); router.push("/login"); } else { toast.error(data.response); } } else { toast.error("Passwords do not match."); } } else { toast.error("Please fill out all the fields."); } } return ( <>

Linkwarden

Get started

Create a new account

Display Name

setForm({ ...form, name: e.target.value })} className="w-full rounded-md p-3 mx-auto border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

Email

setForm({ ...form, email: e.target.value })} className="w-full rounded-md p-3 mx-auto border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

Password

setForm({ ...form, password: e.target.value })} className="w-full rounded-md p-3 mx-auto border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

Re-enter Password

setForm({ ...form, passwordConfirmation: e.target.value }) } className="w-full rounded-md p-3 mx-auto border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

Have an account?

Login
); }