import { z } from "zod";
import type { Route } from "./+types/signup";
const signupSchema = z.object({
email: z.string().email("Invalid email address"),
password: z.string().min(8, "Password must be at least 8 characters"),
confirmPassword: z.string(),
}).refine((data) => data.password === data.confirmPassword, {
message: "Passwords don't match",
path: ["confirmPassword"],
});
export async function action({ request }: Route.ActionArgs) {
const formData = await request.formData();
const data = Object.fromEntries(formData);
const result = signupSchema.safeParse(data);
if (!result.success) {
const errors = result.error.flatten().fieldErrors;
return {
errors: Object.fromEntries(
Object.entries(errors).map(([key, value]) => [key, value?.[0]])
),
};
}
// Proceed with validated data
await signup(result.data.email, result.data.password);
return redirect("/dashboard");
}