fix: validate PNVS provider rows for alias env

This commit is contained in:
Codex
2026-07-04 00:32:31 +08:00
parent 3a10daf847
commit ae491f592b
4 changed files with 28 additions and 6 deletions

View File

@@ -160,19 +160,23 @@ function normalizeProvider(value) {
return String(value || '').trim().toLowerCase();
}
function normalizeSmsProvider(value) {
return normalizeProvider(value).replace(/[_\s]/g, '-');
}
function providerIn(provider, aliases) {
return aliases.has(normalizeProvider(provider));
}
function currentSmsProviderAliases() {
const provider = normalizeProvider(env('AUTH_SMS_PROVIDER', 'mock')).replace(/_/g, '-');
const provider = normalizeSmsProvider(env('AUTH_SMS_PROVIDER', 'mock'));
if (AUTH_PROVIDER_ALIASES.aliyunPnvs.has(provider)) return { provider: 'aliyun-pnvs', aliases: AUTH_PROVIDER_ALIASES.aliyunPnvs };
return { provider, aliases: new Set([provider]) };
}
function validateActiveSmsProviderRows(rows, sourceLabel = 'database') {
const expected = currentSmsProviderAliases();
if (!PRODUCTION_SMS_PROVIDERS.has(normalizeProvider(env('AUTH_SMS_PROVIDER', 'mock')))) return;
if (!PRODUCTION_SMS_PROVIDERS.has(normalizeSmsProvider(env('AUTH_SMS_PROVIDER', 'mock')))) return;
const activeRows = rows.filter(row => row.source === 'auth' && providerIn(row.provider, expected.aliases));
if (activeRows.length === 0) {
block('db.auth_sms_provider_configured', 'AUTH_SMS_PROVIDER must have a matching active/testing tenant_auth_providers row', {
@@ -565,7 +569,7 @@ function validateEnv() {
}
}
const authSmsProvider = normalizeProvider(env('AUTH_SMS_PROVIDER', 'mock')).replace(/[_\s]/g, '-');
const authSmsProvider = normalizeSmsProvider(env('AUTH_SMS_PROVIDER', 'mock'));
if (!PRODUCTION_SMS_PROVIDERS.has(authSmsProvider)) {
block('env.auth_sms_provider', 'AUTH_SMS_PROVIDER must be aliyun-pnvs in production', {
provider: authSmsProvider || '(empty)',