33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
import { uniqueEmailValidator, uniqueUsernameValidator } from './service';
|
|
|
|
export const createUserSchema = z.object({
|
|
username: z
|
|
.string()
|
|
.min(4, '用户名必须至少4个字符')
|
|
.max(30, '用户名最多12个字符')
|
|
.refine(uniqueUsernameValidator, '用户名已存在'),
|
|
email: z.string().email().refine(uniqueEmailValidator, '邮箱已存在'),
|
|
password: z.string().min(8, '密码必须至少8个字符').max(255, '密码最多255个字符'),
|
|
});
|
|
|
|
export const authLoginRequestSchema = z.object({
|
|
credential: z.string().min(4, '用户名必须至少4个字符').max(30, '用户名最多12个字符'),
|
|
password: z
|
|
.string()
|
|
.min(8, '密码必须至少8个字符')
|
|
.refine((val) => /[A-Z]/.test(val), { message: '密码必须至少包含一个大写字母' }),
|
|
});
|
|
|
|
export const authLoginResponseSchema = z.object({
|
|
token: z.string(),
|
|
});
|
|
export const authItemSchema = z.object({
|
|
id: z.string(),
|
|
username: z.string(),
|
|
email: z.string().email(),
|
|
createdAt: z.coerce.date(),
|
|
updatedAt: z.coerce.date(),
|
|
});
|