Files
36-character-flower/src/features/auth/schema/auth-schema.ts
JiaJun 901ad1c30b refactor(constants): 提取常量并优化国际化配置
- 创建API相关常量文件,包括响应码、HTTP状态码、请求头等
- 将认证相关常量从auth模块提取到独立的常量文件
- 在API客户端中使用新定义的常量替换硬编码值
- 更新认证API和服务中对常量的引用
- 在国际化配置中创建统一的文案常量以减少重复
- 将认证表单验证规则改为使用常量配置
2026-06-02 12:03:29 +08:00

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>