monorepo/server/auth/schema.ts

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(),
});