feat: 添加电子邮件和密码登录及注册功能,包含表单验证和用户状态管理

This commit is contained in:
2026-01-15 02:59:23 +07:00
parent 5a40945206
commit 53135e13ad
5 changed files with 246 additions and 5 deletions

View File

@@ -72,3 +72,26 @@ export const countries: PhoneCountry[] = [
icon: CircleFlagsEnUs,
},
];
export const emailPasswordSchema = toTypedSchema(z.object({
email: z
.string({ message: i18n.global.t("auth.signup.validation.emailRequired") })
.min(1, i18n.global.t("auth.signup.validation.emailRequired"))
.email(i18n.global.t("auth.signup.validation.emailInvalid")),
password: z
.string({ message: i18n.global.t("auth.signup.validation.passwordRequired") })
.min(8, i18n.global.t("auth.signup.validation.passwordMinLength", { length: 8 })),
}));
export const emailSignupSchema = toTypedSchema(z.object({
name: z
.string({ message: i18n.global.t("auth.signup.validation.nameRequired") })
.min(1, i18n.global.t("auth.signup.validation.nameRequired")),
email: z
.string({ message: i18n.global.t("auth.signup.validation.emailRequired") })
.min(1, i18n.global.t("auth.signup.validation.emailRequired"))
.email(i18n.global.t("auth.signup.validation.emailInvalid")),
password: z
.string({ message: i18n.global.t("auth.signup.validation.passwordRequired") })
.min(8, i18n.global.t("auth.signup.validation.passwordMinLength", { length: 8 })),
}));