ConvoyPanel/resources/scripts/util/validation.ts

28 lines
1.1 KiB
TypeScript

import { t } from 'i18next'
import { ZodString, z } from 'zod'
export const hostname = (string?: ZodString) =>
(string ?? z.string()).regex(
/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/,
{
message: t('errors.invalid_string.hostname', {
ns: 'zod',
validation: t('hostname', { ns: 'strings' }).toLowerCase(),
})!,
}
)
export const englishKeyboardCharacters = (string?: ZodString) =>
(string ?? z.string()).regex(/^[A-Za-z0-9!@#$%^&*()_+\-=[\]{}|;':",.\/<>?\\ ]*$/, {
message: t('errors.invalid_string.english_keyboard_characters', {
ns: 'zod',
validation: t('english_keyboard_characters', { ns: 'strings' }).toLowerCase(),
})!,
})
export const password = (string?: ZodString) =>
(string ?? z.string()).regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/, {
message: t('errors.invalid_string.password', {
ns: 'zod',
})!,
})