diff options
| author | joonhoekim <26rote@gmail.com> | 2025-08-22 03:11:57 +0000 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-08-22 03:11:57 +0000 |
| commit | dbdae213e39b82ff8ee565df0774bd2f72f06140 (patch) | |
| tree | 37ff13e5784426328c40408e960699af554aeb24 /lib/admin-users/validations.ts | |
| parent | 01296fafda2b52339727ca445de39c6ccb3ba03d (diff) | |
(김준회) 로그인 에러 토스트 메시지 개선, 중공업 유저의 협력사 유저 추가/수정시 전화번호 사용 반영
Diffstat (limited to 'lib/admin-users/validations.ts')
| -rw-r--r-- | lib/admin-users/validations.ts | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/lib/admin-users/validations.ts b/lib/admin-users/validations.ts index 3c2fdb9c..86ff8d20 100644 --- a/lib/admin-users/validations.ts +++ b/lib/admin-users/validations.ts @@ -9,6 +9,7 @@ import { import * as z from "zod" import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers" import { checkEmailExists } from "./service"; +import { fallbackModeToStaticPathsResult } from "next/dist/lib/fallback"; @@ -65,7 +66,21 @@ export const createUserSchema = z.object({ domain: z.enum(users.domain.enumValues), // "evcp" | "partners" companyId: z.number().nullable().optional(), // number | null | undefined roles:z.array(z.string()).min(1, "At least one role must be selected"), - language: z.enum(["ko", "en"]).optional(), + language: z.enum(["ko", "en"]).optional(), + phone: z + .string() + .refine( + (phone) => { + if (!phone) return false; // Optional field + // Remove spaces, hyphens, and parentheses for validation + const cleanPhone = phone.replace(/[\s\-\(\)]/g, ''); + // Basic international phone number validation + return /^\+\d{3,20}$/.test(cleanPhone); + }, + { + message: "올바른 국제 전화번호 형식이 아닙니다. +로 시작하는 3-20자리 번호를 입력해주세요. (예: +82-10-1234-5678)" + } + ), // 전화번호 필드 추가 }); @@ -75,7 +90,21 @@ export const updateUserSchema = z.object({ domain: z.enum(users.domain.enumValues).optional(), companyId: z.number().nullable().optional(), roles: z.array(z.string()).optional(), - language: z.enum(["ko", "en"]).optional(), + language: z.enum(["ko", "en"]).optional(), + phone: z + .string() + .refine( + (phone) => { + if (!phone) return false; // Optional field + // Remove spaces, hyphens, and parentheses for validation + const cleanPhone = phone.replace(/[\s\-\(\)]/g, ''); + // Basic international phone number validation + return /^\+\d{3,20}$/.test(cleanPhone); + }, + { + message: "올바른 국제 전화번호 형식이 아닙니다. +로 시작하는 3-20자리 번호를 입력해주세요. (예: +82-10-1234-5678)" + } + ), // 전화번호 필드 추가 }); export type GetUsersSchema = Awaited<ReturnType<typeof searchParamsCache.parse>> |
