All files / src/lib/schema auth.ts

0% Statements 0/31
0% Branches 0/1
0% Functions 0/1
0% Lines 0/31

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32                                                               
import { z } from 'zod';

export const loginSchema = z.object({
  email: z
    .email('올바른 이메일 형식이 아닙니다.')
    .max(50, '이메일은 최대 50자까지 입력할 수 있습니다.'),
  password: z.string().min(1, '비밀번호를 입력해주세요'),
});

export const signupSchema = loginSchema
  .extend({
    nickname: z
      .string()
      .min(2, '닉네임은 2자 이상이어야 합니다.')
      .max(14, '닉네임은 14자 이하로 입력해주세요.'),
    password: z
      .string()
      .min(8, '비밀번호는 8자 이상이어야 합니다.')
      .regex(/[!@#$%^&*]/, '!, @, #, $, %, ^, &, * 중 1개 이상 포함해야 합니다.')
      .regex(/\d/, '숫자를 1개 이상 포함해야 합니다.'),
    confirmPassword: z.string().min(1, '확인 비밀번호를 입력해주세요.'),
    termsAgreement: z
      .boolean()
      .refine((v) => v === true, { message: '서비스 이용약관에 동의해주세요.' }),
  })
  .refine((data) => data.password === data.confirmPassword, {
    path: ['confirmPassword'],
    message: '비밀번호가 일치하지 않습니다.',
  });

export type SignupFormValues = z.infer<typeof signupSchema>;