61 lines
2.2 KiB
TypeScript
61 lines
2.2 KiB
TypeScript
import { z } from 'zod'
|
|
|
|
export const loginAccountSchema = z.object({
|
|
username: z
|
|
.string()
|
|
.min(3, { message: 'Name must be at least 3 characters long' })
|
|
.max(255, { message: 'Name must be at most 255 characters long' })
|
|
.regex(/^[A-Za-z][A-Za-z0-9_-]*$/, { message: 'Name must start with a letter and can only contain letters, numbers, underscores, or dashes' }),
|
|
password: z
|
|
.string()
|
|
.min(8, {
|
|
message: 'Password must be at least 8 characters long'
|
|
})
|
|
.max(255)
|
|
})
|
|
|
|
export const registerAccountSchema = z.object({
|
|
username: z
|
|
.string()
|
|
.min(3, { message: 'Name must be at least 3 characters long' })
|
|
.max(255, { message: 'Name must be at most 255 characters long' })
|
|
.regex(/^[A-Za-z][A-Za-z0-9_-]*$/, { message: 'Name must start with a letter and can only contain letters, numbers, underscores, or dashes' }),
|
|
email: z
|
|
.string()
|
|
.min(3, { message: 'Email must be at least 3 characters long' })
|
|
.max(255, { message: 'Email must be at most 255 characters long' })
|
|
.regex(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/, { message: 'Email must be valid' }),
|
|
password: z
|
|
.string()
|
|
.min(8, {
|
|
message: 'Password must be at least 8 characters long'
|
|
})
|
|
.max(255)
|
|
})
|
|
|
|
export const resetPasswordSchema = z.object({
|
|
email: z
|
|
.string()
|
|
.min(3, { message: 'Email must be at least 3 characters long' })
|
|
.max(255, { message: 'Email must be at most 255 characters long' })
|
|
.regex(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/, { message: 'Email must be valid' })
|
|
})
|
|
|
|
export const newPasswordSchema = z.object({
|
|
urlToken: z.string().min(10, { message: 'Invalid request' }).max(255, { message: 'Invalid request' }),
|
|
password: z
|
|
.string()
|
|
.min(8, {
|
|
message: 'Password must be at least 8 characters long'
|
|
})
|
|
.max(255)
|
|
})
|
|
|
|
export const ZCharacterCreate = z.object({
|
|
name: z
|
|
.string()
|
|
.min(3, { message: 'Name must be at least 3 characters long' })
|
|
.max(255, { message: 'Name must be at most 255 characters long' })
|
|
.regex(/^[A-Za-z][A-Za-z0-9_-]*$/, { message: 'Name must start with a letter and can only contain letters, numbers, underscores, or dashes' })
|
|
})
|