From d467c5067b8be8fcfbd6341920c11d774b383c13 Mon Sep 17 00:00:00 2001
From: mtvpls
Date: Sat, 13 Dec 2025 17:36:57 +0800
Subject: [PATCH] =?UTF-8?q?oidc=E7=99=BB=E5=BD=95=E6=8C=89=E9=92=AE?=
=?UTF-8?q?=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E6=96=87=E5=AD=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/app/admin/page.tsx | 25 +++++++++++++++++++
src/app/api/admin/site/route.ts | 6 ++++-
.../api/auth/oidc/complete-register/route.ts | 2 +-
src/app/api/server-config/route.ts | 1 +
src/app/login/page.tsx | 2 +-
src/lib/admin.types.ts | 1 +
6 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx
index f9ddf55..ec1a82b 100644
--- a/src/app/admin/page.tsx
+++ b/src/app/admin/page.tsx
@@ -311,6 +311,7 @@ interface SiteConfig {
OIDCUserInfoEndpoint?: string;
OIDCClientId?: string;
OIDCClientSecret?: string;
+ OIDCButtonText?: string;
}
// 视频源数据类型
@@ -4605,6 +4606,7 @@ const SiteConfigComponent = ({
OIDCUserInfoEndpoint: '',
OIDCClientId: '',
OIDCClientSecret: '',
+ OIDCButtonText: '',
});
// 豆瓣数据源相关状态
@@ -4686,6 +4688,7 @@ const SiteConfigComponent = ({
OIDCUserInfoEndpoint: config.SiteConfig.OIDCUserInfoEndpoint || '',
OIDCClientId: config.SiteConfig.OIDCClientId || '',
OIDCClientSecret: config.SiteConfig.OIDCClientSecret || '',
+ OIDCButtonText: config.SiteConfig.OIDCButtonText || '',
});
}
}, [config]);
@@ -5721,6 +5724,28 @@ const SiteConfigComponent = ({
这是系统自动生成的回调地址,基于环境变量SITE_BASE。请在OIDC提供商(如Keycloak、Auth0等)的应用配置中添加此地址作为允许的重定向URI
+
+ {/* OIDC登录按钮文字 */}
+
+
+
+ setSiteSettings((prev) => ({
+ ...prev,
+ OIDCButtonText: e.target.value,
+ }))
+ }
+ className='w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-green-500 focus:border-transparent'
+ />
+
+ 自定义OIDC登录按钮显示的文字,如"使用企业账号登录"、"使用SSO登录"等。留空则显示默认文字"使用OIDC登录"
+
+
{/* 操作按钮 */}
diff --git a/src/app/api/admin/site/route.ts b/src/app/api/admin/site/route.ts
index a605a7a..ad53b7b 100644
--- a/src/app/api/admin/site/route.ts
+++ b/src/app/api/admin/site/route.ts
@@ -58,6 +58,7 @@ export async function POST(request: NextRequest) {
OIDCUserInfoEndpoint,
OIDCClientId,
OIDCClientSecret,
+ OIDCButtonText,
} = body as {
SiteName: string;
Announcement: string;
@@ -88,6 +89,7 @@ export async function POST(request: NextRequest) {
OIDCUserInfoEndpoint?: string;
OIDCClientId?: string;
OIDCClientSecret?: string;
+ OIDCButtonText?: string;
};
// 参数校验
@@ -120,7 +122,8 @@ export async function POST(request: NextRequest) {
(OIDCTokenEndpoint !== undefined && typeof OIDCTokenEndpoint !== 'string') ||
(OIDCUserInfoEndpoint !== undefined && typeof OIDCUserInfoEndpoint !== 'string') ||
(OIDCClientId !== undefined && typeof OIDCClientId !== 'string') ||
- (OIDCClientSecret !== undefined && typeof OIDCClientSecret !== 'string')
+ (OIDCClientSecret !== undefined && typeof OIDCClientSecret !== 'string') ||
+ (OIDCButtonText !== undefined && typeof OIDCButtonText !== 'string')
) {
return NextResponse.json({ error: '参数格式错误' }, { status: 400 });
}
@@ -169,6 +172,7 @@ export async function POST(request: NextRequest) {
OIDCUserInfoEndpoint,
OIDCClientId,
OIDCClientSecret,
+ OIDCButtonText,
};
// 写入数据库
diff --git a/src/app/api/auth/oidc/complete-register/route.ts b/src/app/api/auth/oidc/complete-register/route.ts
index e8c1c77..c20da65 100644
--- a/src/app/api/auth/oidc/complete-register/route.ts
+++ b/src/app/api/auth/oidc/complete-register/route.ts
@@ -73,7 +73,7 @@ export async function POST(request: NextRequest) {
);
}
- let oidcSession;
+ let oidcSession: any;
try {
oidcSession = JSON.parse(oidcSessionCookie);
} catch {
diff --git a/src/app/api/server-config/route.ts b/src/app/api/server-config/route.ts
index fe1af8b..b2a18de 100644
--- a/src/app/api/server-config/route.ts
+++ b/src/app/api/server-config/route.ts
@@ -43,6 +43,7 @@ export async function GET(request: NextRequest) {
TurnstileSiteKey: config.SiteConfig.TurnstileSiteKey || '',
EnableOIDCLogin: config.SiteConfig.EnableOIDCLogin || false,
EnableOIDCRegistration: config.SiteConfig.EnableOIDCRegistration || false,
+ OIDCButtonText: config.SiteConfig.OIDCButtonText || '',
};
return NextResponse.json(result);
}
diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx
index 14a7c4d..afafe52 100644
--- a/src/app/login/page.tsx
+++ b/src/app/login/page.tsx
@@ -362,7 +362,7 @@ function LoginPageClient() {
- 使用OIDC登录
+ {siteConfig?.OIDCButtonText || '使用OIDC登录'}
)}
diff --git a/src/lib/admin.types.ts b/src/lib/admin.types.ts
index 6adc805..154d4df 100644
--- a/src/lib/admin.types.ts
+++ b/src/lib/admin.types.ts
@@ -40,6 +40,7 @@ export interface AdminConfig {
OIDCUserInfoEndpoint?: string; // 用户信息端点
OIDCClientId?: string; // OIDC Client ID
OIDCClientSecret?: string; // OIDC Client Secret
+ OIDCButtonText?: string; // OIDC登录按钮文字
};
UserConfig: {
Users: {