forked from wangziqi/gongxue-base
feat: enforce trusted session identity
This commit is contained in:
@@ -14,6 +14,8 @@ export interface ApiConfig {
|
||||
authCodeTtlSeconds: number;
|
||||
authSmsCooldownSeconds: number;
|
||||
authSessionTtlSeconds: number;
|
||||
allowLegacyAuthHeaders: boolean;
|
||||
allowPlatformAdminKey: boolean;
|
||||
platformAdminApiKey: string;
|
||||
storageDefaultProvider: string;
|
||||
storageDefaultBucket: string;
|
||||
@@ -79,6 +81,12 @@ function validateProductionConfig(nextConfig: ApiConfig) {
|
||||
if (isUnsafeSecret(nextConfig.platformAdminApiKey, DEFAULT_PLATFORM_ADMIN_API_KEY)) {
|
||||
failures.push('PLATFORM_ADMIN_API_KEY must be a strong production secret until platform JWT is implemented');
|
||||
}
|
||||
if (nextConfig.allowLegacyAuthHeaders) {
|
||||
failures.push('ALLOW_LEGACY_AUTH_HEADERS=true is not allowed in production');
|
||||
}
|
||||
if (nextConfig.allowPlatformAdminKey) {
|
||||
failures.push('ALLOW_PLATFORM_ADMIN_KEY=true is not allowed in production');
|
||||
}
|
||||
|
||||
if (failures.length > 0) {
|
||||
throw new Error(`Invalid production API configuration: ${failures.join('; ')}`);
|
||||
@@ -102,6 +110,8 @@ const loadedConfig: ApiConfig = {
|
||||
authCodeTtlSeconds: envNumber('AUTH_CODE_TTL_SECONDS', 300),
|
||||
authSmsCooldownSeconds: envNumber('AUTH_SMS_COOLDOWN_SECONDS', 60),
|
||||
authSessionTtlSeconds: envNumber('AUTH_SESSION_TTL_SECONDS', 60 * 60 * 24 * 7),
|
||||
allowLegacyAuthHeaders: envBoolean('ALLOW_LEGACY_AUTH_HEADERS', !isProduction),
|
||||
allowPlatformAdminKey: envBoolean('ALLOW_PLATFORM_ADMIN_KEY', !isProduction),
|
||||
platformAdminApiKey: envString('PLATFORM_ADMIN_API_KEY', DEFAULT_PLATFORM_ADMIN_API_KEY),
|
||||
storageDefaultProvider: envString('STORAGE_DEFAULT_PROVIDER', 'local_dev'),
|
||||
storageDefaultBucket: envString('STORAGE_DEFAULT_BUCKET', 'tenant-assets'),
|
||||
|
||||
Reference in New Issue
Block a user