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: {