From 9fc4bde2a9b9839306d55eb4753da2365fa65278 Mon Sep 17 00:00:00 2001 From: DaxPay Dev Date: Thu, 9 Jul 2026 16:18:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(social):=20=E6=94=AF=E4=BB=98=E5=AE=9D?= =?UTF-8?q?=E7=99=BB=E5=BD=95/=E7=BB=91=E5=AE=9A=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E8=B5=B0=E4=B8=93=E7=94=A8=E6=8E=88=E6=9D=83=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 抽取 renderSocialAuth,登录页与个人中心绑定共用;跳转型配置提交非空占位并保证 enabled 布尔落库。 Co-authored-by: Cursor --- apps/daxpay-admin/src/api/iam/social.api.ts | 14 ++++++++++++++ .../components/AuthThirdPartyPanel.vue | 7 ++----- .../social/components/SocialLoginConfigDrawer.vue | 2 +- .../daxpay-admin/src/views/profile/social-bind.vue | 5 +++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/apps/daxpay-admin/src/api/iam/social.api.ts b/apps/daxpay-admin/src/api/iam/social.api.ts index 05c9da769..6d6eeb828 100644 --- a/apps/daxpay-admin/src/api/iam/social.api.ts +++ b/apps/daxpay-admin/src/api/iam/social.api.ts @@ -209,3 +209,17 @@ export const AlipayAuthApi = { }); }, }; + +/** + * 统一生成三方授权地址 + * 支付宝走专用端点, 其余走 JustAuth 标准 render + */ +export function renderSocialAuth( + source: string, + client: string = 'admin', + mode?: string, +): Promise> { + return source === 'alipay' + ? AlipayAuthApi.render(client, mode) + : SocialApi.render(source, client, mode); +} diff --git a/apps/daxpay-admin/src/views/_core/authentication/components/AuthThirdPartyPanel.vue b/apps/daxpay-admin/src/views/_core/authentication/components/AuthThirdPartyPanel.vue index d482a12f0..b5119c94c 100644 --- a/apps/daxpay-admin/src/views/_core/authentication/components/AuthThirdPartyPanel.vue +++ b/apps/daxpay-admin/src/views/_core/authentication/components/AuthThirdPartyPanel.vue @@ -3,7 +3,7 @@ import { $t } from '@vben/locales'; - import { AlipayAuthApi, SocialApi } from '#/api/iam/social.api'; + import { renderSocialAuth, SocialApi } from '#/api/iam/social.api'; import { SocialLogo } from '#/components/social'; defineOptions({ name: 'AuthThirdPartyPanel' }); @@ -44,10 +44,7 @@ const ok = await props.ensureAgreement(); if (!ok) return; } - const { data: url } = - source === 'alipay' - ? await AlipayAuthApi.render('admin', props.mode) - : await SocialApi.render(source, 'admin', props.mode); + const { data: url } = await renderSocialAuth(source, 'admin', props.mode); if (url) { // 跳转到第三方授权页, 授权后由后端回调处理并重定向回前端 /oauth-callback window.location.href = url; diff --git a/apps/daxpay-admin/src/views/iam/social/components/SocialLoginConfigDrawer.vue b/apps/daxpay-admin/src/views/iam/social/components/SocialLoginConfigDrawer.vue index 0fa12c048..27b6ee585 100644 --- a/apps/daxpay-admin/src/views/iam/social/components/SocialLoginConfigDrawer.vue +++ b/apps/daxpay-admin/src/views/iam/social/components/SocialLoginConfigDrawer.vue @@ -183,7 +183,7 @@ // 跳转型统一走编辑接口: 非空占位过 NotBlank(真实凭据在平台配置页, 后端忽略这两字段) await SocialLoginConfigApi.update({ source: formData.source, - enabled: formData.enabled, + enabled: !!formData.enabled, clientId: '-', clientSecret: '-', }); diff --git a/apps/daxpay-admin/src/views/profile/social-bind.vue b/apps/daxpay-admin/src/views/profile/social-bind.vue index 9074eca6f..d93514570 100644 --- a/apps/daxpay-admin/src/views/profile/social-bind.vue +++ b/apps/daxpay-admin/src/views/profile/social-bind.vue @@ -5,7 +5,7 @@ import { $t } from '@vben/locales'; - import { SocialApi } from '#/api/iam/social.api'; + import { renderSocialAuth, SocialApi } from '#/api/iam/social.api'; import { SocialLogo } from '#/components/social'; import { useMessage } from '#/hooks/useMessage'; @@ -47,9 +47,10 @@ /** * 绑定第三方账号(打开弹窗进行授权, 授权后弹窗自动关闭并通知刷新) + * 支付宝走专用端点, 与登录页 renderSocialAuth 一致 */ async function handleBind(source: string) { - const { data: url } = await SocialApi.render(source, 'admin', 'BIND'); + const { data: url } = await renderSocialAuth(source, 'admin', 'BIND'); if (url) { window.open(url, 'social-bind', 'width=600,height=700'); }