diff --git a/apps/vben5/apps/app-antd/src/store/auth.ts b/apps/vben5/apps/app-antd/src/store/auth.ts index 818c1f3d7..f816f0b2f 100644 --- a/apps/vben5/apps/app-antd/src/store/auth.ts +++ b/apps/vben5/apps/app-antd/src/store/auth.ts @@ -37,9 +37,10 @@ export const useAuthStore = defineStore('auth', () => { async function qrcodeLogin( key: string, + tenantId?: string, onSuccess?: () => Promise | void, ) { - const result = await qrcodeLoginApi(key); + const result = await qrcodeLoginApi({ key, tenantId }); return await _loginSuccess(result, onSuccess); } diff --git a/apps/vben5/apps/app-antd/src/views/_core/authentication/qrcode-login.vue b/apps/vben5/apps/app-antd/src/views/_core/authentication/qrcode-login.vue index 9de957fdc..db1b41b6d 100644 --- a/apps/vben5/apps/app-antd/src/views/_core/authentication/qrcode-login.vue +++ b/apps/vben5/apps/app-antd/src/views/_core/authentication/qrcode-login.vue @@ -10,8 +10,8 @@ defineOptions({ name: 'QrCodeLogin' }); const authStore = useAuthStore(); -async function onConfirm(key: string) { - await authStore.qrcodeLogin(key); +async function onConfirm(key: string, tenantId?: string) { + await authStore.qrcodeLogin(key, tenantId); } diff --git a/apps/vben5/packages/@abp/account/src/api/useQrCodeLoginApi.ts b/apps/vben5/packages/@abp/account/src/api/useQrCodeLoginApi.ts index 034292d22..b54e915fb 100644 --- a/apps/vben5/packages/@abp/account/src/api/useQrCodeLoginApi.ts +++ b/apps/vben5/packages/@abp/account/src/api/useQrCodeLoginApi.ts @@ -2,7 +2,7 @@ import type { GenerateQrCodeResult, QrCodeUserInfoResult, } from '../types/qrcode'; -import type { OAuthTokenResult } from '../types/token'; +import type { OAuthTokenResult, QrCodeTokenRequest } from '../types/token'; import { useAppConfig } from '@vben/hooks'; @@ -37,7 +37,7 @@ export function useQrCodeLoginApi() { * @param key 二维码Key * @returns 用户token */ - async function loginApi(key: string) { + async function loginApi(input: QrCodeTokenRequest) { const { audience, clientId, clientSecret } = useAppConfig( import.meta.env, import.meta.env.PROD, @@ -47,8 +47,9 @@ export function useQrCodeLoginApi() { client_id: clientId, client_secret: clientSecret, grant_type: 'qr_code', - qrcode_key: key, + qrcode_key: input.key, scope: audience, + tenant_id: input.tenantId, }, headers: { 'Content-Type': 'application/x-www-form-urlencoded', diff --git a/apps/vben5/packages/@abp/account/src/components/QrCodeLogin.vue b/apps/vben5/packages/@abp/account/src/components/QrCodeLogin.vue index 315db9f9c..7c1dcddcb 100644 --- a/apps/vben5/packages/@abp/account/src/components/QrCodeLogin.vue +++ b/apps/vben5/packages/@abp/account/src/components/QrCodeLogin.vue @@ -61,7 +61,7 @@ const props = withDefaults(defineProps(), { }); const emits = defineEmits<{ - (event: 'confirm', key: string): void; + (event: 'confirm', key: string, tenantId?: string): void; }>(); let interval: NodeJS.Timeout; @@ -125,7 +125,7 @@ async function onCheckCode() { interval && clearInterval(interval); localStorage.removeItem('login_qrocde'); // 登录 - emits('confirm', result.key); + emits('confirm', result.key, result.tenantId); } } diff --git a/apps/vben5/packages/@abp/account/src/types/qrcode.ts b/apps/vben5/packages/@abp/account/src/types/qrcode.ts index e58c0acfa..1c5eb1127 100644 --- a/apps/vben5/packages/@abp/account/src/types/qrcode.ts +++ b/apps/vben5/packages/@abp/account/src/types/qrcode.ts @@ -20,6 +20,7 @@ interface QrCodeInfoResult { interface QrCodeUserInfoResult extends QrCodeInfoResult { picture?: string; + tenantId?: string; userId?: string; userName?: string; } diff --git a/apps/vben5/packages/@abp/account/src/types/token.ts b/apps/vben5/packages/@abp/account/src/types/token.ts index 646681e9c..afa1fc984 100644 --- a/apps/vben5/packages/@abp/account/src/types/token.ts +++ b/apps/vben5/packages/@abp/account/src/types/token.ts @@ -14,6 +14,13 @@ interface PasswordTokenRequest extends TokenRequest { /** 用户名 */ userName: string; } +/** 扫码登录授权请求数据模型 */ +interface QrCodeTokenRequest { + /** 二维码Key */ + key: string; + /** 租户Id */ + tenantId?: string; +} /** 用户密码授权请求数据模型 */ interface PasswordTokenRequestModel { /** 用户密码 */ @@ -68,6 +75,7 @@ export type { OAuthTokenResult, PasswordTokenRequest, PasswordTokenRequestModel, + QrCodeTokenRequest, TokenRequest, TokenResult, TwoFactorError, diff --git a/apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue b/apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue index 452c75d52..19d65cf6d 100644 --- a/apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue +++ b/apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue @@ -1,4 +1,5 @@