diff --git a/apps/web-antd/src/views/_core/authentication/code-login.vue b/apps/web-antd/src/views/_core/authentication/code-login.vue index 45cb1e3f..852464ab 100644 --- a/apps/web-antd/src/views/_core/authentication/code-login.vue +++ b/apps/web-antd/src/views/_core/authentication/code-login.vue @@ -6,6 +6,7 @@ import type { TenantResp } from '#/api'; import { computed, onMounted, ref, useTemplateRef } from 'vue'; import { AuthenticationCodeLogin, z } from '@vben/common-ui'; +import { DEFAULT_TENANT_ID } from '@vben/constants'; import { $t } from '@vben/locales'; import { Alert, message } from 'ant-design-vue'; @@ -50,7 +51,7 @@ const formSchema = computed((): VbenFormSchema[] => { })), placeholder: $t('authentication.selectAccount'), }, - defaultValue: '000000', + defaultValue: DEFAULT_TENANT_ID, dependencies: { if: () => tenantInfo.value.tenantEnabled, triggerFields: [''], diff --git a/apps/web-antd/src/views/_core/authentication/login.vue b/apps/web-antd/src/views/_core/authentication/login.vue index c18332f8..80b513d2 100644 --- a/apps/web-antd/src/views/_core/authentication/login.vue +++ b/apps/web-antd/src/views/_core/authentication/login.vue @@ -7,6 +7,7 @@ import type { CaptchaResponse } from '#/api/core/captcha'; import { computed, onMounted, ref, useTemplateRef } from 'vue'; import { AuthenticationLogin, z } from '@vben/common-ui'; +import { DEFAULT_TENANT_ID } from '@vben/constants'; import { $t } from '@vben/locales'; import { omit } from 'lodash-es'; @@ -15,6 +16,7 @@ import { tenantList } from '#/api'; import { captchaImage } from '#/api/core/captcha'; import { useAuthStore } from '#/store'; +import { useLoginTenantId } from '../oauth-common'; import OAuthLogin from './oauth-login.vue'; defineOptions({ name: 'Login' }); @@ -56,6 +58,8 @@ onMounted(async () => { await Promise.all([loadCaptcha(), loadTenant()]); }); +const { loginTenantId } = useLoginTenantId(); + const formSchema = computed((): VbenFormSchema[] => { return [ { @@ -69,16 +73,13 @@ const formSchema = computed((): VbenFormSchema[] => { })), placeholder: $t('authentication.selectAccount'), }, - defaultValue: '000000', + defaultValue: DEFAULT_TENANT_ID, dependencies: { if: () => tenantInfo.value.tenantEnabled, - // 这里大致上是watch的一个效果 - componentProps: (model) => { - localStorage.setItem( - '__oauth_tenant_id', - model?.tenantId ?? '000000', - ); - return {}; + // 可以把这里当做watch + trigger: (model) => { + // 给oauth登录使用 + loginTenantId.value = model?.tenantId ?? DEFAULT_TENANT_ID; }, triggerFields: ['', 'tenantId'], }, diff --git a/apps/web-antd/src/views/_core/authentication/oauth-login.vue b/apps/web-antd/src/views/_core/authentication/oauth-login.vue index 0c359ec1..6c4d553d 100644 --- a/apps/web-antd/src/views/_core/authentication/oauth-login.vue +++ b/apps/web-antd/src/views/_core/authentication/oauth-login.vue @@ -3,21 +3,16 @@ import { $t } from '@vben/locales'; import { Col, Row, Tooltip } from 'ant-design-vue'; -import { accountBindList } from '../oauth-common'; +import { accountBindList, handleAuthBinding } from '../oauth-common'; defineOptions({ name: 'OAuthLogin', }); - -/** - * 有action方法才会显示 - */ -const clientList = accountBindList.filter((item) => item.action); diff --git a/apps/web-antd/src/views/_core/social-callback/index.vue b/apps/web-antd/src/views/_core/social-callback/index.vue index 557d268f..30db6641 100644 --- a/apps/web-antd/src/views/_core/social-callback/index.vue +++ b/apps/web-antd/src/views/_core/social-callback/index.vue @@ -4,7 +4,7 @@ import type { AuthApi } from '#/api'; import { onMounted } from 'vue'; import { useRoute, useRouter } from 'vue-router'; -import { DEFAULT_HOME_PATH } from '@vben/constants'; +import { DEFAULT_HOME_PATH, DEFAULT_TENANT_ID } from '@vben/constants'; import { useAccessStore } from '@vben/stores'; import { message } from 'ant-design-vue'; @@ -22,7 +22,7 @@ const stateJson = JSON.parse(atob(state)); // 来源 const source = route.query.source as string; // 租户ID -const defaultTenantId = '000000'; +const defaultTenantId = DEFAULT_TENANT_ID; const tenantId = (stateJson.tenantId as string) ?? defaultTenantId; const domain = stateJson.domain as string; @@ -44,7 +44,7 @@ onMounted(async () => { try { // 已经实现的平台 const currentClient = accountBindList.find( - (item) => item.source === source && item.action, + (item) => item.source === source, ); if (!currentClient) { message.error({ content: `未找到${source}平台` }); diff --git a/packages/icons/src/svg/icons/max-key.svg b/packages/icons/src/svg/icons/max-key.svg new file mode 100644 index 00000000..6358decf --- /dev/null +++ b/packages/icons/src/svg/icons/max-key.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/packages/icons/src/svg/icons/topiam.svg b/packages/icons/src/svg/icons/topiam.svg new file mode 100644 index 00000000..e7ea0577 --- /dev/null +++ b/packages/icons/src/svg/icons/topiam.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/icons/src/svg/icons/wechat.svg b/packages/icons/src/svg/icons/wechat.svg new file mode 100644 index 00000000..85c835a2 --- /dev/null +++ b/packages/icons/src/svg/icons/wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/icons/src/svg/index.ts b/packages/icons/src/svg/index.ts index b9554bd2..c81623b7 100644 --- a/packages/icons/src/svg/index.ts +++ b/packages/icons/src/svg/index.ts @@ -11,6 +11,9 @@ const SvgCardIcon = createIconifyIcon('svg:card'); const SvgBellIcon = createIconifyIcon('svg:bell'); const SvgCakeIcon = createIconifyIcon('svg:cake'); const SvgAntdvLogoIcon = createIconifyIcon('svg:antdv-logo'); +const SvgMaxKeyIcon = createIconifyIcon('svg:max-key'); +const SvgTopiamIcon = createIconifyIcon('svg:topiam'); +const SvgWechatIcon = createIconifyIcon('svg:wechat'); export { SvgAntdvLogoIcon, @@ -22,6 +25,9 @@ export { SvgCakeIcon, SvgCardIcon, SvgDownloadIcon, + SvgMaxKeyIcon, + SvgTopiamIcon, + SvgWechatIcon, }; export { default as SvgMessageUrl } from './icons/message.svg';