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