import { OnboardingLayout } from "@/components/layouts/onboarding-layout"; import { AlertBlock } from "@/components/shared/alert-block"; import { Logo } from "@/components/shared/logo"; import { Button } from "@/components/ui/button"; import { CardContent, CardDescription, CardTitle } from "@/components/ui/card"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { authClient } from "@/lib/auth-client"; import { IS_CLOUD } from "@dokploy/server"; import { zodResolver } from "@hookform/resolvers/zod"; import type { GetServerSidePropsContext } from "next"; import Link from "next/link"; import { useRouter } from "next/router"; import { type ReactElement, useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; const loginSchema = z.object({ email: z .string() .min(1, { message: "Email is required", }) .email({ message: "Email must be a valid email", }), }); type Login = z.infer; type AuthResponse = { is2FAEnabled: boolean; authId: string; }; export default function Home() { const [temp, _setTemp] = useState({ is2FAEnabled: false, authId: "", }); const [error, setError] = useState(null); const [isLoading, setIsLoading] = useState(false); const _router = useRouter(); const form = useForm({ defaultValues: { email: "", }, resolver: zodResolver(loginSchema), }); useEffect(() => { form.reset(); }, [form, form.reset, form.formState.isSubmitSuccessful]); const onSubmit = async (values: Login) => { setIsLoading(true); const { error } = await authClient.forgetPassword({ email: values.email, redirectTo: "/reset-password", }); if (error) { setError(error.message || "An error occurred"); setIsLoading(false); } else { toast.success("Email sent", { duration: 2000, }); } setIsLoading(false); }; return (
Dokploy Reset Password Enter your email to reset your password
{error && ( {error} )} {!temp.is2FAEnabled ? (
( Email )} />
) : null}
Login
); } Home.getLayout = (page: ReactElement) => { return {page}; }; export async function getServerSideProps(_context: GetServerSidePropsContext) { if (!IS_CLOUD) { return { redirect: { permanent: true, destination: "/", }, }; } return { props: {}, }; }