feat(client): align account and order foundations

This commit is contained in:
2026-09-01 19:34:37 +08:00
parent c1e7ba411e
commit 1305ae4669
23 changed files with 602 additions and 258 deletions
+18 -3
View File
@@ -1,9 +1,14 @@
export interface EditableAccountProfile {
realName: string
phone: string
email: string
}
export interface LoginIdentifierChangePayload {
username: string
phone: string
currentPassword: string
}
export interface PasswordChangePayload {
currentPassword: string
newPassword: string
@@ -11,20 +16,30 @@ export interface PasswordChangePayload {
}
const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
const USERNAME_PATTERN = /^[A-Za-z][A-Za-z0-9_.@-]{3,63}$/
const MAINLAND_MOBILE_PATTERN = /^1[3-9]\d{9}$/
export function validateEditableAccountProfile(profile: EditableAccountProfile): string[] {
const errors: string[] = []
const realName = profile.realName.trim()
const phone = profile.phone.trim()
const email = profile.email.trim()
if (realName.length < 1 || realName.length > 64) errors.push('姓名需为 1–64 个字符')
if (phone.length > 32) errors.push('联系电话不能超过 32 个字符')
if (email && !EMAIL_PATTERN.test(email)) errors.push('请输入有效的邮箱地址')
return errors
}
export function validateLoginIdentifierChange(payload: LoginIdentifierChangePayload): string[] {
const errors: string[] = []
if (!USERNAME_PATTERN.test(payload.username.trim())) {
errors.push('用户名须以字母开头,并由 4–64 位字母、数字或 _.@- 组成')
}
if (!MAINLAND_MOBILE_PATTERN.test(payload.phone.trim())) errors.push('请输入有效的中国大陆手机号')
if (!payload.currentPassword) errors.push('请输入当前密码')
return errors
}
export function validatePasswordChange(payload: PasswordChangePayload): string[] {
const errors: string[] = []