From dbdae213e39b82ff8ee565df0774bd2f72f06140 Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Fri, 22 Aug 2025 03:11:57 +0000 Subject: (김준회) 로그인 에러 토스트 메시지 개선, 중공업 유저의 협력사 유저 추가/수정시 전화번호 사용 반영 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/admin-users/validations.ts | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'lib/admin-users/validations.ts') 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> -- cgit v1.2.3