From 85ff7e565b49abf07595e66f4df5ea8eb5bc6566 Mon Sep 17 00:00:00 2001 From: Geonhee Min Date: Fri, 7 Nov 2025 05:41:16 +0000 Subject: [PATCH] =?UTF-8?q?issue=20#=20=EB=A1=9C=EA=B7=B8=EC=9D=B8,=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85,=20=EB=B9=84=EB=B0=80?= =?UTF-8?q?=EB=B2=88=ED=98=B8=20=EC=B4=88=EA=B8=B0=ED=99=94=20Form=20schem?= =?UTF-8?q?a=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/form/index.ts | 3 +++ src/data/form/login.schema.ts | 13 +++++++++++++ src/data/form/resetPassword.schema.ts | 8 ++++++++ src/data/form/signup.schema.ts | 23 +++++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 src/data/form/index.ts create mode 100644 src/data/form/login.schema.ts create mode 100644 src/data/form/resetPassword.schema.ts create mode 100644 src/data/form/signup.schema.ts diff --git a/src/data/form/index.ts b/src/data/form/index.ts new file mode 100644 index 0000000..334dd49 --- /dev/null +++ b/src/data/form/index.ts @@ -0,0 +1,3 @@ +export { SignUpSchema } from './signup.schema'; +export { LoginSchema } from './login.schema'; +export { ResetPasswordSchema } from './resetPassword.schema'; \ No newline at end of file diff --git a/src/data/form/login.schema.ts b/src/data/form/login.schema.ts new file mode 100644 index 0000000..d380697 --- /dev/null +++ b/src/data/form/login.schema.ts @@ -0,0 +1,13 @@ +import * as z from 'zod'; +import { zodResolver } from '@/hookform/resolvers/zod'; +import { useForm } from 'react-hook-form'; + +const LoginSchema = z.object({ + email: z + .email() + , password: z + .string() + .min(8, "비밀번호는 8-12 자리여야 합니다.") + .max(12, "비밀번호는 8-12 자리여야 합니다.") + .regex(\^[a-z](?=.*[0-9])(?=.*[!@#$]).*$\) +}); \ No newline at end of file diff --git a/src/data/form/resetPassword.schema.ts b/src/data/form/resetPassword.schema.ts new file mode 100644 index 0000000..ad100e5 --- /dev/null +++ b/src/data/form/resetPassword.schema.ts @@ -0,0 +1,8 @@ +import * as z from 'zod'; +import { zodResolver } from '@/hookform/resolvers/zod'; +import { useForm } from 'react-hook-form'; + +const ResetPasswordSchema = z.object({ + email: z + .email() +}); \ No newline at end of file diff --git a/src/data/form/signup.schema.ts b/src/data/form/signup.schema.ts new file mode 100644 index 0000000..66c1819 --- /dev/null +++ b/src/data/form/signup.schema.ts @@ -0,0 +1,23 @@ +import * as z from 'zod'; +import { zodResolver } from '@/hookform/resolvers/zod'; +import { useForm } from 'react-hook-form'; + +const SignUpSchema = z.object({ + email: z + .email() + , password: z + .string() + .min(8, "비밀번호는 8-12 자리여야 합니다.") + .max(12, "비밀번호는 8-12 자리여야 합니다.") + .regex(\^[a-z](?=.*[0-9])(?=.*[!@#$]).*$\, "영문 소문자로 시작하고 숫자와 특수문자(!@#$)를 포함해야 합니다.") + , name: z + .string() + , nickname: z + .string() + , passwordConfirm: z + .string() +}) +.refine((data) => data.password === data.passwordConfirm, { + path: ["passwordConfirm"], + error: "비밀번호가 일치하지 않습니다." +}); \ No newline at end of file