feat(auth): aggregate OAuth 支持环境变量回退配置,默认 LOGIN_TYPE=wx
- oauth-strategies.ts: loadAggregateSettings() DB 未配置时回退读取 process.env.AGGREGATE_OAUTH_*,自动启用 - .env.example: AGGREGATE_OAUTH_LOGIN_TYPE 默认改为 wx,补充 auxx.cn 示例注释
This commit is contained in:
+4
-3
@@ -106,10 +106,11 @@ CASDOOR_ENDPOINT=
|
||||
GOOGLE_CLIENT_ID=
|
||||
GOOGLE_CLIENT_SECRET=
|
||||
|
||||
# 聚合登陆 OAuth
|
||||
# 聚合登陆 OAuth(如 auxx.cn 等聚合登录服务,支持微信/QQ 等通道
|
||||
AGGREGATE_OAUTH_APP_ID=
|
||||
AGGREGATE_OAUTH_APP_KEY=
|
||||
# 支持单值、逗号分隔或 JSON 数组,例如:qq,wx,sina,baidu
|
||||
# 可用值:qq,wx,alipay,sina,baidu,douyin,huawei,xiaomi,gitee,gitea,bilibili,kuaishou
|
||||
AGGREGATE_OAUTH_LOGIN_TYPE=qq
|
||||
AGGREGATE_OAUTH_ENDPOINT=https://example.com/connect.php
|
||||
AGGREGATE_OAUTH_LOGIN_TYPE=wx
|
||||
# 聚合登录服务基地址(https,不带 /oauth/... 路径),例如:https://www.auxx.cn
|
||||
AGGREGATE_OAUTH_ENDPOINT=
|
||||
|
||||
@@ -270,7 +270,33 @@ async function loadAggregateSettings() {
|
||||
.from(systemSettings)
|
||||
.orderBy(asc(systemSettings.id))
|
||||
.limit(1)
|
||||
return row[0] ?? null
|
||||
const base = row[0] ?? null
|
||||
const envAppId = process.env.AGGREGATE_OAUTH_APP_ID
|
||||
const envAppKey = process.env.AGGREGATE_OAUTH_APP_KEY
|
||||
const envLoginType = process.env.AGGREGATE_OAUTH_LOGIN_TYPE
|
||||
const envEndpoint = process.env.AGGREGATE_OAUTH_ENDPOINT
|
||||
const hasEnvConfig = !!(envAppId && envAppKey && envEndpoint)
|
||||
const dbEnabled = base?.aggregateOAuthEnabled
|
||||
const dbHasConfig = !!(
|
||||
base?.aggregateOAuthAppId &&
|
||||
base?.aggregateOAuthAppKey &&
|
||||
base?.aggregateOAuthEndpoint
|
||||
)
|
||||
const enabled = Boolean(dbEnabled ?? hasEnvConfig)
|
||||
const appId = (base?.aggregateOAuthAppId || envAppId || '') as string
|
||||
const appKey = (base?.aggregateOAuthAppKey || envAppKey || '') as string
|
||||
const loginType = ((base?.aggregateOAuthLoginType as string) || envLoginType || '') as string
|
||||
const endpoint = ((base?.aggregateOAuthEndpoint as string) || envEndpoint || '') as string
|
||||
|
||||
return {
|
||||
aggregateOAuthEnabled: enabled && !!(appId && appKey && endpoint),
|
||||
aggregateOAuthAppId: appId,
|
||||
aggregateOAuthAppKey: appKey,
|
||||
aggregateOAuthLoginType: loginType,
|
||||
aggregateOAuthEndpoint: endpoint,
|
||||
_dbHasConfig: dbHasConfig,
|
||||
_hasEnvConfig: hasEnvConfig
|
||||
} as any
|
||||
}
|
||||
|
||||
function normalizeEndpoint(endpoint: string): string {
|
||||
|
||||
Reference in New Issue
Block a user