diff --git a/public/icons/github.png b/public/icons/github.png new file mode 100644 index 0000000..e28a837 Binary files /dev/null and b/public/icons/github.png differ diff --git a/public/icons/gitlab.png b/public/icons/gitlab.png new file mode 100644 index 0000000..feeff61 Binary files /dev/null and b/public/icons/gitlab.png differ diff --git a/public/icons/google.png b/public/icons/google.png new file mode 100644 index 0000000..82339b3 Binary files /dev/null and b/public/icons/google.png differ diff --git a/public/icons/microsoft.png b/public/icons/microsoft.png new file mode 100644 index 0000000..bfe873e Binary files /dev/null and b/public/icons/microsoft.png differ 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登录'}