feat(dcauth): 移除机器码,改用纯设备码认证
- DCAuth 协议升级到 v2,签名原文只含设备码;客户端 2.0.0,旧版本返回 426 - 删除客户端机器码采集、后端 machine_code_* 字段与日志、后台机器码展示 - 102 迁移在生产执行前直接改为无机器码结构;SQL 守卫仅放行该文件 - Mock 短信不启用每日限额;修复慢电脑首次启动的协议转发竞态 - 新增 macOS DCAuth.app 打包脚本,注册 dcauth:// 协议,浏览器可直接唤起
This commit is contained in:
@@ -67,6 +67,9 @@ export async function sendAdminLoginSmsCode(
|
||||
}
|
||||
|
||||
const config = runtimeConfig.worker.sms
|
||||
const provider = String(config.provider || 'mock')
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
const cooldownMs = Math.max(10, Number(config.cooldownSeconds || 60)) * 1000
|
||||
const dailyLimit = Math.max(1, Number(config.dailyLimit || 10))
|
||||
const ttlSeconds = Math.max(60, Number(config.codeTtlSeconds || 300))
|
||||
@@ -84,6 +87,7 @@ export async function sendAdminLoginSmsCode(
|
||||
|
||||
const dayRange = resolveChinaDayRange()
|
||||
if (
|
||||
shouldEnforceAdminSmsDailyLimit(provider) &&
|
||||
(await countAdminSmsCodesOnDay(Number(user.id), dayRange.start, dayRange.end)) >= dailyLimit
|
||||
) {
|
||||
throw createHttpError('今日验证码发送次数已达上限,请明天再试', {
|
||||
@@ -185,6 +189,14 @@ function generateSmsCode(): string {
|
||||
return code
|
||||
}
|
||||
|
||||
export function shouldEnforceAdminSmsDailyLimit(providerValue: unknown): boolean {
|
||||
return (
|
||||
String(providerValue || 'mock')
|
||||
.trim()
|
||||
.toLowerCase() !== 'mock'
|
||||
)
|
||||
}
|
||||
|
||||
function normalizeAdminUsername(value: unknown): string {
|
||||
return String(value || '')
|
||||
.trim()
|
||||
|
||||
Reference in New Issue
Block a user