Files
BYW-VoiceHub/app/utils/oauth-register.ts
T

37 lines
1.3 KiB
TypeScript

import { getPasswordPolicyViolation } from './password-policy'
// OAuth 注册用户名规则
export const OAUTH_REGISTER_USERNAME_PATTERN = /^[a-zA-Z0-9_-]+$/
export const OAUTH_REGISTER_USERNAME_MIN_LENGTH = 3
export const OAUTH_REGISTER_USERNAME_MAX_LENGTH = 30
// 校验 OAuth 注册凭据,返回稳定错误码与中文兜底文案;通过时返回 null。
// 不依赖 useLocale,前端与服务端可安全共用;文案本地化由调用方按 code 完成。
export const validateOAuthRegisterCredentials = (
username: string,
password: string,
confirmPassword: string
): { code: string; message: string } | null => {
if (
username.length < OAUTH_REGISTER_USERNAME_MIN_LENGTH ||
username.length > OAUTH_REGISTER_USERNAME_MAX_LENGTH
) {
return { code: 'AUTH_USERNAME_LENGTH_INVALID', message: '用户名长度需要在3-30个字符之间' }
}
if (!OAUTH_REGISTER_USERNAME_PATTERN.test(username)) {
return { code: 'AUTH_USERNAME_PATTERN_INVALID', message: '用户名仅可包含英文、数字、下划线和连字符' }
}
const passwordViolation = getPasswordPolicyViolation(password)
if (passwordViolation) {
return passwordViolation
}
if (password !== confirmPassword) {
return { code: 'AUTH_REGISTER_PASSWORD_MISMATCH', message: '两次输入的密码不一致' }
}
return null
}