| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| import React from 'react'; |
| import { Button, Divider, Icon } from '@douyinfe/semi-ui'; |
| import { IconGithubLogo } from '@douyinfe/semi-icons'; |
| import TelegramLoginButton from 'react-telegram-login'; |
| import { |
| onGitHubOAuthClicked, |
| onOIDCClicked, |
| onLinuxDOOAuthClicked, |
| onIDCFlareOAuthClicked, |
| } from '../utils'; |
| import OIDCIcon from '../OIDCIcon.js'; |
| import WeChatIcon from '../WeChatIcon'; |
| import LinuxDoIcon from '../LinuxDoIcon.js'; |
| import IDCFlareIcon from '../IDCFlareIcon.js'; |
| import { useTranslation } from 'react-i18next'; |
|
|
| const ThirdPartyAuth = ({ |
| status, |
| onWeChatLoginClicked, |
| onTelegramLoginClicked |
| }) => { |
| const { t } = useTranslation(); |
|
|
| const hasThirdPartyAuth = status.github_oauth || |
| status.oidc_enabled || |
| status.wechat_login || |
| status.telegram_oauth || |
| status.linuxdo_oauth || |
| status.idcflare_oauth; |
|
|
| if (!hasThirdPartyAuth) { |
| return null; |
| } |
|
|
| return ( |
| <> |
| <Divider margin='12px' align='center'> |
| {t('OR')} |
| </Divider> |
| <div |
| style={{ |
| display: 'flex', |
| flexDirection: 'column', |
| gap: '12px', |
| marginTop: 20, |
| }} |
| > |
| {status.github_oauth && ( |
| <Button |
| type='tertiary' |
| theme='borderless' |
| size='large' |
| style={{ |
| border: '1px solid var(--semi-color-border)', |
| borderRadius: '6px', |
| padding: '12px 16px', |
| width: '100%', |
| justifyContent: 'center', |
| position: 'relative', |
| }} |
| icon={<IconGithubLogo style={{ position: 'absolute', left: '16px', top: '50%', transform: 'translateY(-50%)' }} />} |
| onClick={() => |
| onGitHubOAuthClicked(status.github_client_id) |
| } |
| > |
| 使用 GitHub 继续 |
| </Button> |
| )} |
| {status.oidc_enabled && ( |
| <Button |
| type='tertiary' |
| theme='borderless' |
| size='large' |
| style={{ |
| border: '1px solid var(--semi-color-border)', |
| borderRadius: '6px', |
| padding: '12px 16px', |
| width: '100%', |
| justifyContent: 'center', |
| position: 'relative', |
| }} |
| icon={<OIDCIcon style={{ position: 'absolute', left: '16px', top: '50%', transform: 'translateY(-50%)' }} />} |
| onClick={() => |
| onOIDCClicked( |
| status.oidc_authorization_endpoint, |
| status.oidc_client_id, |
| ) |
| } |
| > |
| 使用 OIDC 继续 |
| </Button> |
| )} |
| {status.linuxdo_oauth && ( |
| <Button |
| type='tertiary' |
| theme='borderless' |
| size='large' |
| style={{ |
| border: '1px solid var(--semi-color-border)', |
| borderRadius: '6px', |
| padding: '12px 16px', |
| width: '100%', |
| justifyContent: 'center', |
| position: 'relative', |
| }} |
| icon={<LinuxDoIcon style={{ position: 'absolute', left: '16px', top: '50%', transform: 'translateY(-50%)' }} />} |
| onClick={() => |
| onLinuxDOOAuthClicked(status.linuxdo_client_id) |
| } |
| > |
| 使用 LINUX DO 继续 |
| </Button> |
| )} |
| {status.idcflare_oauth && ( |
| <Button |
| type='tertiary' |
| theme='borderless' |
| size='large' |
| style={{ |
| border: '1px solid var(--semi-color-border)', |
| borderRadius: '6px', |
| padding: '12px 16px', |
| width: '100%', |
| justifyContent: 'center', |
| position: 'relative', |
| }} |
| icon={<IDCFlareIcon style={{ position: 'absolute', left: '16px', top: '50%', transform: 'translateY(-50%)' }} />} |
| onClick={() => |
| onIDCFlareOAuthClicked(status.idcflare_client_id) |
| } |
| > |
| 使用 IDC Flare 继续 |
| </Button> |
| )} |
| {status.wechat_login && ( |
| <Button |
| type='tertiary' |
| theme='borderless' |
| size='large' |
| style={{ |
| border: '1px solid var(--semi-color-border)', |
| borderRadius: '6px', |
| padding: '12px 16px', |
| width: '100%', |
| justifyContent: 'center', |
| position: 'relative', |
| color: 'rgba(var(--semi-green-5), 1)', |
| }} |
| icon={<Icon svg={<WeChatIcon />} style={{ position: 'absolute', left: '16px', top: '50%', transform: 'translateY(-50%)' }} />} |
| onClick={onWeChatLoginClicked} |
| > |
| 使用 微信 继续 |
| </Button> |
| )} |
| </div> |
| {status.telegram_oauth && ( |
| <div |
| style={{ |
| display: 'flex', |
| justifyContent: 'center', |
| marginTop: 5, |
| }} |
| > |
| <TelegramLoginButton |
| dataOnauth={onTelegramLoginClicked} |
| botName={status.telegram_bot_name} |
| /> |
| </div> |
| )} |
| </> |
| ); |
| }; |
|
|
| export default ThirdPartyAuth; |