- 创建API相关常量文件,包括响应码、HTTP状态码、请求头等 - 将认证相关常量从auth模块提取到独立的常量文件 - 在API客户端中使用新定义的常量替换硬编码值 - 更新认证API和服务中对常量的引用 - 在国际化配置中创建统一的文案常量以减少重复 - 将认证表单验证规则改为使用常量配置
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { z } from 'zod'
|
|
|
|
import {
|
|
INVITE_CODE_MAX_LENGTH,
|
|
PASSWORD_MAX_LENGTH,
|
|
PASSWORD_MIN_LENGTH,
|
|
} from '@/constants'
|
|
|
|
const usernameSchema = z
|
|
.string()
|
|
.trim()
|
|
.min(1, 'auth.validation.username.required')
|
|
|
|
const captchaSchema = z
|
|
.string()
|
|
.trim()
|
|
.min(1, 'auth.validation.captcha.required')
|
|
|
|
const passwordSchema = z
|
|
.string()
|
|
.min(PASSWORD_MIN_LENGTH, 'auth.validation.password.min')
|
|
.max(PASSWORD_MAX_LENGTH, 'auth.validation.password.max')
|
|
|
|
export const loginFormSchema = z.object({
|
|
password: passwordSchema,
|
|
username: usernameSchema,
|
|
})
|
|
|
|
export const registerFormSchema = z
|
|
.object({
|
|
captcha: captchaSchema,
|
|
confirmPassword: passwordSchema,
|
|
inviteCode: z
|
|
.string()
|
|
.trim()
|
|
.min(1, 'auth.validation.inviteCode.required')
|
|
.max(INVITE_CODE_MAX_LENGTH, 'auth.validation.inviteCode.max'),
|
|
password: passwordSchema,
|
|
mobile: usernameSchema,
|
|
})
|
|
.refine((value) => value.password === value.confirmPassword, {
|
|
message: 'auth.validation.confirmPassword.mismatch',
|
|
path: ['confirmPassword'],
|
|
})
|
|
|
|
export type LoginFormValues = z.infer<typeof loginFormSchema>
|
|
export type RegisterFormValues = z.infer<typeof registerFormSchema>
|