Files
carmanagement/apps/api/src/modules/auth/auth.renter.schemas.ts
T
root 057d41e1c2
Build & Push / Pipeline Tests (push) Failing after 1m5s
Build & Push / Build & Push Docker Image (push) Has been skipped
Test / Type Check (all packages) (push) Failing after 52s
Test / API Unit Tests (push) Has been skipped
Test / Homepage Unit Tests (push) Has been skipped
Test / Carplace Unit Tests (push) Has been skipped
Test / Admin Unit Tests (push) Has been skipped
Test / Dashboard Unit Tests (push) Has been skipped
Test / API Integration Tests (push) Has been skipped
add text input validation
2026-08-31 22:51:44 -04:00

23 lines
1.0 KiB
TypeScript

import { z } from 'zod'
import { contactPhoneField, languageSchema, localizedTextIssue, validateLocalizedText } from '../../lib/zodValidation'
export const renterUpdateSchema = z.object({
firstName: z.string().trim().max(50).transform((value) => value.normalize('NFC')).optional(),
lastName: z.string().trim().max(50).transform((value) => value.normalize('NFC')).optional(),
phone: contactPhoneField().optional(),
preferredLocale: languageSchema.optional(),
preferredCurrency: z.literal('MAD').optional(),
}).superRefine((data, ctx) => {
const language = data.preferredLocale ?? 'fr'
if (data.firstName && !validateLocalizedText(data.firstName, language, 50)) {
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['firstName'], message: localizedTextIssue('First name') })
}
if (data.lastName && !validateLocalizedText(data.lastName, language, 50)) {
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['lastName'], message: localizedTextIssue('Last name') })
}
})
export const renterFcmTokenSchema = z.object({
fcmToken: z.string(),
})