疯狂的狮子Li
2024-06-18 cbd59f84fd7d688569cade242e4e9d6d0f381f15
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);
    }