From cbd59f84fd7d688569cade242e4e9d6d0f381f15 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期二, 18 六月 2024 18:44:04 +0800 Subject: [PATCH] update 优化 三方登录不同域名获取不到租户id问题 --- ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index a18ab50..8b83e29 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -23,8 +23,8 @@ import org.dromara.common.social.config.properties.SocialProperties; import org.dromara.common.social.utils.SocialUtils; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; -import org.dromara.system.domain.SysClient; import org.dromara.system.domain.bo.SysTenantBo; import org.dromara.system.domain.vo.SysClientVo; import org.dromara.system.domain.vo.SysTenantVo; @@ -91,14 +91,21 @@ return R.fail(MessageUtils.message("auth.grant.type.blocked")); } // 鏍¢獙绉熸埛 - loginService.checkTenant(loginBody.getTenantId()); + SysTenantVo tenant = loginService.checkTenant(loginBody.getTenantId()); // 鐧诲綍 LoginVo loginVo = IAuthStrategy.login(body, client, grantType); Long userId = LoginHelper.getUserId(); scheduledExecutorService.schedule(() -> { - WebSocketUtils.sendMessage(userId, "娆㈣繋鐧诲綍RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺"); + WebSocketMessageDto dto = new WebSocketMessageDto(); + dto.setMessage("娆㈣繋鐧诲綍RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺"); + dto.setSessionKeys(List.of(userId)); + WebSocketUtils.publishMessage(dto); }, 3, TimeUnit.SECONDS); + + if (StringUtils.isNotBlank(tenant.getTenantId())) { + loginVo.setDomain(tenant.getDomain()); + } return R.ok(loginVo); } @@ -126,7 +133,7 @@ * @return 缁撴灉 */ @PostMapping("/social/callback") - public R<Void> socialCallback(@RequestBody SocialLoginBody loginBody) { + public R<LoginVo> socialCallback(@RequestBody SocialLoginBody loginBody) { // 鑾峰彇绗笁鏂圭櫥褰曚俊鎭� AuthResponse<AuthUser> response = SocialUtils.loginAuth( loginBody.getSource(), loginBody.getSocialCode(), @@ -137,7 +144,13 @@ return R.fail(response.getMsg()); } loginService.socialRegister(authUserData); - return R.ok(); + + LoginVo loginVo = new LoginVo(); + SysTenantVo tenant = tenantService.queryByTenantId(LoginHelper.getTenantId()); + if (StringUtils.isNotBlank(tenant.getTenantId())) { + loginVo.setDomain(tenant.getDomain()); + } + return R.ok(loginVo); } -- Gitblit v1.9.3