diff --git a/config/oauth.js b/config/oauth.js index 53175a4..d99e38c 100644 --- a/config/oauth.js +++ b/config/oauth.js @@ -67,6 +67,24 @@ export const oauthProviders = { website: "https://houlang.cloud", pkce: true, // 启用PKCE支持 }, + dlass: { + // Dlass(Casdoor)- 标准 OIDC Provider + clientId: process.env.DLASS_CLIENT_ID, + clientSecret: process.env.DLASS_CLIENT_SECRET, + // Casdoor 标准端点 + authorizationURL: "https://auth.wiki.forum/login/oauth/authorize", + tokenURL: "https://auth.wiki.forum/api/login/oauth/access_token", + userInfoURL: "https://auth.wiki.forum/api/userinfo", + scope: "openid profile email offline_access", + // 展示相关 + name: "dlass", + displayName: "Dlass 账户", + icon: "casdoor", + color: "#3498db", + description: "使用Dlass账户登录", + website: "https://dlass.tech", + tokenRequestFormat: "json", // Casdoor 推荐 JSON 提交 + }, }; // 获取OAuth回调URL diff --git a/routes/accounts.js b/routes/accounts.js index 395a414..29799ef 100644 --- a/routes/accounts.js +++ b/routes/accounts.js @@ -282,6 +282,14 @@ router.get("/oauth/:provider/callback", async (req, res) => { name: userData.name || userData.preferred_username || userData.nickname, avatarUrl: userData.picture, }; + } else if (provider === "dlass") { + // Dlass(Casdoor)标准OIDC用户信息 + normalizedUser = { + providerId: userData.sub, + email: userData.email_verified ? userData.email : userData.email || null, + name: userData.name || userData.preferred_username || userData.nickname, + avatarUrl: userData.picture, + }; } // 名称为空时,用邮箱@前部分回填(若邮箱可用)