From 6b147786912eeaa62350610b7ee9235ff156e3ba Mon Sep 17 00:00:00 2001 From: 三个三 <2029364173@qq.com> Date: 星期日, 02 七月 2023 15:24:14 +0800 Subject: [PATCH] !382 统一登录,授权 --- ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java | 77 +++++++++----------------------------- 1 files changed, 18 insertions(+), 59 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index 88500b2..4da2bb0 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -1,14 +1,12 @@ package org.dromara.web.service; import cn.dev33.satoken.exception.NotLoginException; -import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthUser; import org.dromara.common.core.constant.Constants; import org.dromara.common.core.constant.GlobalConstants; @@ -16,12 +14,14 @@ import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.core.enums.DeviceType; import org.dromara.common.core.enums.LoginType; import org.dromara.common.core.enums.TenantStatus; import org.dromara.common.core.enums.UserStatus; import org.dromara.common.core.exception.user.UserException; -import org.dromara.common.core.utils.*; +import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.core.utils.MessageUtils; +import org.dromara.common.core.utils.ServletUtils; +import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.log.event.LogininforEvent; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; @@ -29,13 +29,13 @@ import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.bo.SysSocialBo; -import org.dromara.system.domain.vo.SysSocialVo; import org.dromara.system.domain.vo.SysTenantVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.service.ISysPermissionService; import org.dromara.system.service.ISysSocialService; import org.dromara.system.service.ISysTenantService; +import org.dromara.web.domain.vo.LoginVo; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -66,67 +66,26 @@ private final ISysSocialService sysSocialService; private final SysUserMapper userMapper; - /** - * 绀句氦鐧诲綍 - * - * @param source 鐧诲綍鏉ユ簮 - * @param authUser 鎺堟潈鍝嶅簲瀹炰綋 - * @return 缁熶竴鍝嶅簲瀹炰綋 - */ - public R<String> socialLogin(String source, AuthResponse<AuthUser> authUser) { - // 鍒ゆ柇鎺堟潈鍝嶅簲鏄惁鎴愬姛 - if (!authUser.ok()) { - return R.fail("瀵逛笉璧凤紝鎺堟潈淇℃伅楠岃瘉涓嶉�氳繃锛岃閫�鍑洪噸璇曪紒"); - } - AuthUser authUserData = authUser.getData(); - SysSocialVo social = sysSocialService.selectByAuthId(authUserData.getSource() + authUserData.getUuid()); - if (ObjectUtil.isNotNull(social)) { - SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() - .eq(SysUser::getUserId, social.getUserId())); - // 鎵ц鐧诲綍鍜岃褰曠櫥褰曚俊鎭搷浣� - return loginAndRecord(user.getTenantId(), user.getUserName(), authUserData); - } else { - // 鍒ゆ柇鏄惁宸茬櫥褰� - if (!StpUtil.isLogin()) { - return R.fail("鎺堟潈澶辫触锛岃鍏堢櫥褰曟墠鑳界粦瀹�"); - } - SysSocialBo bo = new SysSocialBo(); - bo.setUserId(LoginHelper.getUserId()); - bo.setAuthId(authUserData.getSource() + authUserData.getUuid()); - bo.setSource(authUserData.getSource()); - bo.setUserName(authUserData.getUsername()); - bo.setNickName(authUserData.getNickname()); - bo.setAvatar(authUserData.getAvatar()); - bo.setOpenId(authUserData.getUuid()); - BeanUtils.copyProperties(authUserData.getToken(), bo); - sysSocialService.insertByBo(bo); - SysUserVo sysUser = loadUserByUsername(LoginHelper.getTenantId(), LoginHelper.getUsername()); - // 鎵ц鐧诲綍鍜岃褰曠櫥褰曚俊鎭搷浣� - return loginAndRecord(sysUser.getTenantId(), sysUser.getUserName(), authUserData); - } - } /** - * 鎵ц鐧诲綍鍜岃褰曠櫥褰曚俊鎭搷浣� - * - * @param tenantId 绉熸埛ID - * @param userName 鐢ㄦ埛鍚� - * @param authUser 鎺堟潈鐢ㄦ埛淇℃伅 + * 缁戝畾绗笁鏂圭敤鎴� + * @param authUserData 鎺堟潈鍝嶅簲瀹炰綋 * @return 缁熶竴鍝嶅簲瀹炰綋 */ - private R<String> loginAndRecord(String tenantId, String userName, AuthUser authUser) { - checkTenant(tenantId); - SysUserVo user = loadUserByUsername(tenantId, userName); - SaLoginModel model = new SaLoginModel(); - model.setDevice(DeviceType.PC.getDevice()); - // 鐢熸垚token - LoginHelper.login(buildLoginUser(user), model); - recordLogininfor(user.getTenantId(), userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); - recordLoginInfo(user.getUserId()); - return R.ok(StpUtil.getTokenValue()); + public R<LoginVo> sociaRegister(AuthUser authUserData ){ + SysSocialBo bo = new SysSocialBo(); + bo.setUserId(LoginHelper.getUserId()); + bo.setAuthId(authUserData.getSource() + authUserData.getUuid()); + bo.setOpenId(authUserData.getUuid()); + bo.setUserName(authUserData.getUsername()); + BeanUtils.copyProperties(authUserData, bo); + BeanUtils.copyProperties(authUserData.getToken(), bo); + sysSocialService.insertByBo(bo); + return R.ok(); } + /** * 閫�鍑虹櫥褰� */ -- Gitblit v1.9.3