feat(auth): 集成认证授权功能并优化API客户端
- 实现了完整的登录注册认证流程,包括密码验证和用户资料获取 - 集成了JWT令牌管理和自动刷新机制,支持设备ID生成和管理 - 添加了WebSocket连接配置和API基础URL环境变量设置 - 实现了API客户端的请求拦截器,包括令牌验证和错误处理逻辑 - 集成了MD5加密和认证令牌缓存机制,提升安全性 - 添加了多语言国际化支持,包括英语、中文、马来语和印尼语 - 实现了认证状态管理和本地存储持久化功能 - 添加了表单验证schema和错误处理机制,增强用户体验
This commit is contained in:
38
src/features/auth/schema/auth-schema.ts
Normal file
38
src/features/auth/schema/auth-schema.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
const mobilePhonePattern = /^1[3-9]\d{9}$/
|
||||
|
||||
const usernameSchema = z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, 'auth.validation.username.required')
|
||||
.regex(mobilePhonePattern, 'auth.validation.username.invalidPhone')
|
||||
|
||||
const passwordSchema = z
|
||||
.string()
|
||||
.min(6, 'auth.validation.password.min')
|
||||
.max(32, 'auth.validation.password.max')
|
||||
|
||||
export const loginFormSchema = z.object({
|
||||
password: passwordSchema,
|
||||
username: usernameSchema,
|
||||
})
|
||||
|
||||
export const registerFormSchema = z
|
||||
.object({
|
||||
confirmPassword: passwordSchema,
|
||||
inviteCode: z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, 'auth.validation.inviteCode.required')
|
||||
.max(32, 'auth.validation.inviteCode.max'),
|
||||
password: passwordSchema,
|
||||
username: 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>
|
||||
Reference in New Issue
Block a user