From 025480574347b2a5dbd447760ccade5257ee1548 Mon Sep 17 00:00:00 2001 From: Danel Kungla Date: Mon, 4 Aug 2025 11:32:41 +0300 Subject: [PATCH] use isikukood library to validate in zod --- .../server/schema/create-company.schema.ts | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/features/admin/src/lib/server/schema/create-company.schema.ts b/packages/features/admin/src/lib/server/schema/create-company.schema.ts index 54e40ea..2fae4fe 100644 --- a/packages/features/admin/src/lib/server/schema/create-company.schema.ts +++ b/packages/features/admin/src/lib/server/schema/create-company.schema.ts @@ -1,5 +1,19 @@ +import Isikukood from 'isikukood'; import { z } from 'zod'; +const personalCodeSchema = z.string().refine( + (val) => { + try { + return new Isikukood(val).validate(); + } catch { + return false; + } + }, + { + message: 'Invalid personal code', + }, +); + /** * @name RESERVED_NAMES_ARRAY * @description Array of reserved names for team accounts @@ -46,11 +60,7 @@ export const CompanyNameSchema = z */ export const CreateCompanySchema = z.object({ name: CompanyNameSchema, - ownerPersonalCode: z - .string() - .regex(/^[1-6]\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}\d$/, { - message: 'Invalid Estonian personal code format', - }), + ownerPersonalCode: personalCodeSchema, }); export type CreateCompanySchemaType = z.infer;