From 76b1c83add58d0acffc12443850af47ba525a652 Mon Sep 17 00:00:00 2001 From: Pablo Lara Date: Tue, 1 Oct 2024 14:29:58 +0200 Subject: [PATCH] chore: tweaks authFormSchema using zod validation for client side --- types/authFormSchema.ts | 65 ++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/types/authFormSchema.ts b/types/authFormSchema.ts index 89c8904f56..e9190fa75b 100644 --- a/types/authFormSchema.ts +++ b/types/authFormSchema.ts @@ -1,30 +1,43 @@ import { z } from "zod"; export const authFormSchema = (type: string) => - z.object({ - // Sign Up - companyName: - type === "sign-in" ? z.string().optional() : z.string().min(3).optional(), - firstName: - type === "sign-in" - ? z.string().optional() - : z - .string() - .min(3, { - message: "The name must be at least 3 characters.", - }) - .max(20), - confirmPassword: - type === "sign-in" ? z.string().optional() : z.string().min(6), - termsAndConditions: - type === "sign-in" - ? z.enum(["true"]).optional() - : z.enum(["true"], { - errorMap: () => ({ - message: "You must accept the terms and conditions.", + z + .object({ + // Sign Up + companyName: + type === "sign-in" + ? z.string().optional() + : z.string().min(3).optional(), + firstName: + type === "sign-in" + ? z.string().optional() + : z + .string() + .min(3, { + message: "The name must be at least 3 characters.", + }) + .max(20), + confirmPassword: + type === "sign-in" + ? z.string().optional() + : z.string().min(3, { + message: "It must contain at least 12 characters.", }), - }), - // both - email: z.string().email(), - password: z.string().min(6), - }); + termsAndConditions: + type === "sign-in" + ? z.enum(["true"]).optional() + : z.enum(["true"], { + errorMap: () => ({ + message: "You must accept the terms and conditions.", + }), + }), + // Fields for Sign In and Sign Up + email: z.string().email(), + password: z.string().min(3, { + message: "It must contain at least 12 characters.", + }), + }) + .refine((data) => data.password === data.confirmPassword, { + message: "The password must match", + path: ["confirmPassword"], + });