Files
lotteryAdmin/src/lib/admin-input-validation.ts
kang 0d984b00f0
Some checks failed
lotteryadmin CI / build (push) Has been cancelled
feat(admin): 仪表盘重构、代理线路修复与后台体验优化
- 各角色仪表盘:KPI 可点击跳转、快捷入口、去重冗余区块,代理/站点降级 analytics
- 代理线路:创建玩家权限、侧栏搜索、深链 URL、档案保存与删除预检等修复
- 统一密码最短 6 位;代理模块表格/侧栏背景色一致(admin-table-inset)
- 报表、钱包、对账、开奖、结算、配置等模块结构与 i18n 同步更新
2026-06-26 14:39:22 +08:00

45 lines
1.3 KiB
TypeScript

/** 后台/彩票端登录账号:字母、数字、点、下划线、连字符。 */
export const ADMIN_ACCOUNT_PATTERN = /^[a-zA-Z0-9._-]+$/;
/** 全项目统一:后台账号、代理账号、彩票端玩家密码最短长度 */
export const PASSWORD_MIN_LENGTH = 6;
export const ADMIN_PASSWORD_MIN_LENGTH = PASSWORD_MIN_LENGTH;
export const NATIVE_PLAYER_PASSWORD_MIN_LENGTH = PASSWORD_MIN_LENGTH;
export type AccountValidationIssue = "empty" | "invalid_charset";
export type PasswordValidationIssue = "empty" | "too_short";
export function validateAdminLoginAccount(value: string): AccountValidationIssue | null {
const trimmed = value.trim();
if (trimmed === "") {
return "empty";
}
if (!ADMIN_ACCOUNT_PATTERN.test(trimmed)) {
return "invalid_charset";
}
return null;
}
export function validateAdminPassword(
value: string,
minLength: number = ADMIN_PASSWORD_MIN_LENGTH,
): PasswordValidationIssue | null {
if (value === "") {
return "empty";
}
if (value.length < minLength) {
return "too_short";
}
return null;
}
export function validateNativePlayerUsername(value: string): AccountValidationIssue | null {
return validateAdminLoginAccount(value);
}
export function validateNativePlayerPassword(value: string): PasswordValidationIssue | null {
return validateAdminPassword(value, NATIVE_PLAYER_PASSWORD_MIN_LENGTH);
}