From 2d5aa76f5d32c99bb42e82ea9dbc052d112c9a46 Mon Sep 17 00:00:00 2001 From: mtvpls Date: Sat, 7 Feb 2026 11:46:52 +0800 Subject: [PATCH 1/3] =?UTF-8?q?oidc=E7=99=BB=E5=BD=95=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=AF=86=E5=88=ABlinuxdo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/icons/linuxdo.png | Bin 0 -> 34898 bytes src/app/login/page.tsx | 10 +++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 public/icons/linuxdo.png diff --git a/public/icons/linuxdo.png b/public/icons/linuxdo.png new file mode 100644 index 0000000000000000000000000000000000000000..8b67ac5e8665bcf8064ce3ad7b510fddabe44c97 GIT binary patch literal 34898 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%0D8Ktd(s$9a7#U0mOju1 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 Z>*W0mL(N`8T^RUhVq{@hsqgaN{{i9pyW#)< literal 0 HcmV?d00001 diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 7db27e5..74d629f 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -384,9 +384,13 @@ function LoginPageClient() { onClick={() => window.location.href = '/api/auth/oidc/login'} className='mt-4 w-full inline-flex justify-center items-center rounded-lg border-2 border-gray-300 dark:border-gray-600 bg-white/60 dark:bg-zinc-800/60 py-3 text-base font-semibold text-gray-700 dark:text-gray-200 shadow-sm transition-all duration-200 hover:bg-gray-50 dark:hover:bg-zinc-700/60' > - - - + {(siteConfig?.OIDCButtonText || '').toLowerCase().includes('linuxdo') ? ( + LinuxDo + ) : ( + + + + )} {siteConfig?.OIDCButtonText || '使用OIDC登录'} From 0eebbf6cb942d1cb329aaa031e1eb0a964893a43 Mon Sep 17 00:00:00 2001 From: mtvpls Date: Sat, 7 Feb 2026 11:50:03 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=A4=84=E7=90=86error=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/login/page.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 74d629f..5077215 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -85,6 +85,14 @@ function LoginPageClient() { const { siteName } = useSite(); + // 处理URL中的error参数 + useEffect(() => { + const errorParam = searchParams.get('error'); + if (errorParam) { + setError(decodeURIComponent(errorParam)); + } + }, [searchParams]); + // 在客户端挂载后设置配置 useEffect(() => { if (typeof window !== 'undefined') { From 575b696c10bec5499273c656cb46534011c28a7e Mon Sep 17 00:00:00 2001 From: mtvpls Date: Sat, 7 Feb 2026 11:55:11 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=9B=B4=E5=A4=9Aoidc=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/icons/github.png | Bin 0 -> 7249 bytes public/icons/gitlab.png | Bin 0 -> 591 bytes public/icons/google.png | Bin 0 -> 5430 bytes public/icons/microsoft.png | Bin 0 -> 17174 bytes src/app/login/page.tsx | 34 +++++++++++++++++++++++++++------- 5 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 public/icons/github.png create mode 100644 public/icons/gitlab.png create mode 100644 public/icons/google.png create mode 100644 public/icons/microsoft.png diff --git a/public/icons/github.png b/public/icons/github.png new file mode 100644 index 0000000000000000000000000000000000000000..e28a8373067419c7fec89fc78ca44c0197e77ace GIT binary patch literal 7249 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 literal 0 HcmV?d00001 diff --git a/public/icons/gitlab.png b/public/icons/gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..feeff61934549c38bffcab1a79d7a66fcfece34a GIT binary patch literal 591 zcmV-V00wGYw{5j?; zSp=NM*{G3Z$naqvKlUBiIGeBjIuLS^j^@Cu8wU4*z4}+{4%mYw1u{C}@_je`64(>f zmxv=9_JBs#Xv_wTTU~O$CkwqQ9bWb4JwlP|B_Kv zvz-3=1oSBANK#s^h+1qOqNZI_anSrZ<8s{KX~aX+V9PM}goXK#!!ChcU=P@)#eYxj zhd6TraU^zU(G5(mf&Cd?Ef&XFc?#hNshE6|Z#pyja`u|!+5+#Hj> z-HAmgLankqOGG|I;`4BkFuubYwn~hTgsg d{k+Qz@CQ6(*Z{3^c|-sJ002ovPDHLkV1fio8%Y2F literal 0 HcmV?d00001 diff --git a/public/icons/google.png b/public/icons/google.png new file mode 100644 index 0000000000000000000000000000000000000000..82339b3b1dbbcf4550b737faf99c7774196fb8cb GIT binary patch literal 5430 zcmcgwX>3$g6n=;X+3|<}Oe_lM4}(N0C5Rv{W&J^*wo?RyAcBe}5&;u}0*OVy7L=Ay zXf2DCb|BCKWlMolQL5~P(pm(H?9=IVT4p+(_4u9l<_-5P?F_|ulQZ|;bI*6abC-9Q zk)%%2V^W_!67o1{&f}6aK$4`mIHg_yeFk(dLWd$O6g@IYf<9UzqCvr6a2=!u;tfkR z^2|^uG_Wl^+PcCf8~An;Y_eeRr06G%J;p#^&`W#&+C~cwO(V;@`5-Yh&vvE5}7=D}8hx zzSiZsXwv%)bp1v^?_?0K0r<(~hP$>PS!Oz9AM8gja~C)xcwp8umJ^iSP?sl_;1=C2bSk~ zIqV~QVl4FGK3B%d6U`1WoP*7Cv2eqV&l#JUPn+vD?W*2P%gW}`tm3iqo|;^kKr@RH zY4PD%lwX-eR~DX!e8cgN$vb75Ey(67=P7uRfkXkImj>G|>W zXT}Kf9?R3aA>af^1Lr9{g9Fh;$_Uj zO$l^k#i+>nrk<;6AmH+WGxBYsuGwFCoxNu==CgNCpi{TXRX2vbuCbO1if2-j?re3h zNurQfd;WoQ1CIgX=!LSTaoLI0hQ7}~IF*{c56&3_xvB{G$g^!>r0?n(@2eryDTfPDUI#V#9aW zg7STZ?<{>w_Rz$F;Z%C1NHmG5>^o7Q;pZ4a&N~_`xcMwODJn;w2}JlghJocb$*)|6 zM6;;npzW%G-(M|XWg}Q{^O>a?*k{U>`xbMvSSk&7lL(#*;uuFO`zov&EV%jH)Lg2% zgzt+g|Kh(*E?9z>Xq;lZelGwwpWpu*zwftvA#(Y?#rzGTQa}Ew7yi5P_g5Visdyjc z@z<=s#M9dK*LSCv{F%%UeQ!jK5^1Z6D)T6KJ>Z&m?k z4s&xt950}*S?DE)JO+L>j?`HWTD#FjJNJ5MSBZx*QRcUd+Rk}eMzi`HHqe9156*rH zyYdU2@^}@jH*Irke2V^KDKA~wEO>iR1lLNDo6Cr&JM>i#tdtUu!-(<5xroL;azZ^F zI@+pt$MaqZF3lTHjRpDvXs_3UZruscS4*2{$lJ!Zr#=q0S@2C0F-D)@+om6Pm0Qix z&hJD+4D5^7IInszx)yUiu?k8 z10_|E2qK~~GdH`@9=;55lyHgjMj7wN?OyiY%vw?RV_+}{(X$}` zkiRp}d#2#VM9RE@(KQaI zUnaWs7TXteX8N); ON)^VQz<8Ga>-ryC<7BY_ literal 0 HcmV?d00001 diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 5077215..1fb174b 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -67,6 +67,32 @@ function VersionDisplay() { ); } +// 根据按钮文本识别OIDC提供商并返回对应的图标 +function getOIDCProviderIcon(buttonText: string) { + const text = buttonText.toLowerCase(); + + const providers = [ + { keywords: ['linuxdo'], icon: '/icons/linuxdo.png', alt: 'LinuxDo' }, + { keywords: ['github'], icon: '/icons/github.png', alt: 'GitHub' }, + { keywords: ['google'], icon: '/icons/google.png', alt: 'Google' }, + { keywords: ['microsoft', 'azure', 'entra'], icon: '/icons/microsoft.png', alt: 'Microsoft' }, + { keywords: ['gitlab'], icon: '/icons/gitlab.png', alt: 'GitLab' }, + ]; + + for (const provider of providers) { + if (provider.keywords.some(keyword => text.includes(keyword))) { + return {provider.alt}; + } + } + + // 默认图标 + return ( + + + + ); +} + function LoginPageClient() { const router = useRouter(); const searchParams = useSearchParams(); @@ -392,13 +418,7 @@ function LoginPageClient() { onClick={() => window.location.href = '/api/auth/oidc/login'} className='mt-4 w-full inline-flex justify-center items-center rounded-lg border-2 border-gray-300 dark:border-gray-600 bg-white/60 dark:bg-zinc-800/60 py-3 text-base font-semibold text-gray-700 dark:text-gray-200 shadow-sm transition-all duration-200 hover:bg-gray-50 dark:hover:bg-zinc-700/60' > - {(siteConfig?.OIDCButtonText || '').toLowerCase().includes('linuxdo') ? ( - LinuxDo - ) : ( - - - - )} + {getOIDCProviderIcon(siteConfig?.OIDCButtonText || '')} {siteConfig?.OIDCButtonText || '使用OIDC登录'}