feat: 添加用户认证功能,优化登录和注册流程,集成表单验证和加载状态

This commit is contained in:
2026-01-17 21:18:51 +07:00
parent 7ec2522fa0
commit 51719cd229
12 changed files with 252 additions and 73 deletions

50
src/views/auth/schema.ts Normal file
View File

@@ -0,0 +1,50 @@
import zod from "zod";
export const SignupSchema = zod.object({
phoneNumber: zod
.string()
.min(1, "请输入手机号")
.regex(/^1[3-9]\d{9}$/, "请输入正确的手机号码"),
password: zod
.string()
.min(6, "密码至少6位")
.max(20, "密码最多20位")
.regex(/^(?=.*[a-z])(?=.*\d).+$/i, "密码必须包含字母和数字"),
confirmPassword: zod
.string()
.min(1, "请确认密码"),
realName: zod
.string()
.min(2, "请输入真实姓名")
.max(10, "姓名长度不能超过10个字符"),
idCard: zod
.string()
.min(1, "请输入身份证号码")
.regex(
/(^\d{15}$)|(^\d{18}$)|(^\d{17}([\dX])$)/i,
"请输入正确的身份证号码",
),
inviteCode: zod
.string()
.optional(),
}).refine(data => data.password === data.confirmPassword, {
message: "两次输入的密码不一致",
path: ["confirmPassword"],
});
export const LoginSchema = zod.object({
phoneNumber: zod
.string()
.min(1, "请输入手机号")
.regex(/^1[3-9]\d{9}$/, "请输入正确的手机号码"),
password: zod
.string()
.min(6, "密码至少6位")
.max(20, "密码最多20位"),
});