ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.domain.vo.RouterVo; import com.ruoyi.system.service.ISysMenuService; @@ -99,7 +100,7 @@ @ApiOperation("è·åè·¯ç±ä¿¡æ¯") @GetMapping("getRouters") public AjaxResult<List<RouterVo>> getRouters() { Long userId = SecurityUtils.getUserId(); Long userId = LoginUtils.getUserId(); List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); return AjaxResult.success(menuService.buildMenus(menus)); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
@@ -113,10 +113,9 @@ public AjaxResult<Map<String, Object>> avatar(@RequestPart("avatarfile") MultipartFile file) { Map<String,Object> ajax = new HashMap<>(); if (!file.isEmpty()) { SysUser user = SecurityUtils.getUser(); SysOss oss = iSysOssService.upload(file); String avatar = oss.getUrl(); if (userService.updateUserAvatar(user.getUserName(), avatar)) { if (userService.updateUserAvatar(getUsername(), avatar)) { ajax.put("imgUrl", avatar); return AjaxResult.success(ajax); } ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
@@ -1,8 +1,8 @@ package com.ruoyi.common.core.controller; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.StringUtils; /** @@ -70,28 +70,28 @@ /** * è·åç¨æ·ç¼åä¿¡æ¯ */ public SysUser getUser() { return SecurityUtils.getUser(); public LoginUser getUser() { return LoginUtils.getLoginUser(); } /** * è·åç»å½ç¨æ·id */ public Long getUserId() { return SecurityUtils.getUserId(); return LoginUtils.getUserId(); } /** * è·åç»å½é¨é¨id */ public Long getDeptId() { return SecurityUtils.getDeptId(); return LoginUtils.getDeptId(); } /** * è·åç»å½ç¨æ·å */ public String getUsername() { return SecurityUtils.getUsername(); return LoginUtils.getUsername(); } } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,83 @@ package com.ruoyi.common.core.domain.model; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Set; /** * ç»å½ç¨æ·èº«ä»½æé * * @author Lion Li */ @Data @NoArgsConstructor @Accessors(chain = true) public class LoginUser implements Serializable { private static final long serialVersionUID = 1L; /** * ç¨æ·ID */ private Long userId; /** * é¨é¨ID */ private Long deptId; /** * ç¨æ·å¯ä¸æ è¯ */ private String token; /** * ç»å½æ¶é´ */ private Long loginTime; /** * è¿ææ¶é´ */ private Long expireTime; /** * ç»å½IPå°å */ private String ipaddr; /** * ç»å½å°ç¹ */ private String loginLocation; /** * æµè§å¨ç±»å */ private String browser; /** * æä½ç³»ç» */ private String os; /** * èåæé */ private Set<String> menuPermission; /** * è§è²æé */ private Set<String> rolePermission; /** * ç¨æ·å */ private String username; } ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java
@@ -10,7 +10,7 @@ public class UserException extends BaseException { private static final long serialVersionUID = 1L; public UserException(String code, Object[] args) { public UserException(String code, Object... args) { super("user", code, args, null); } } ruoyi-common/src/main/java/com/ruoyi/common/utils/LoginUtils.java
@@ -1,6 +1,8 @@ package com.ruoyi.common.utils; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.DeviceType; import com.ruoyi.common.enums.UserType; import com.ruoyi.common.exception.UtilException; @@ -13,39 +15,68 @@ */ public class LoginUtils { private final static String LOGIN_USER_KEY = "loginUser"; /** * ç»å½ç³»ç» * é对两å¥ç¨æ·ä½ç³» * @param userId ç¨æ·id * @param loginUser ç»å½ç¨æ·ä¿¡æ¯ */ public static void login(Long userId, UserType userType) { StpUtil.login(userType.getUserType() + userId); public static void login(LoginUser loginUser, UserType userType) { StpUtil.login(userType.getUserType() + loginUser.getUserId()); StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); } /** * ç»å½ç³»ç» åºäº 设å¤ç±»å * é对ä¸å¥ç¨æ·ä½ç³» * @param userId ç¨æ·id * @param loginUser ç»å½ç¨æ·ä¿¡æ¯ */ public static void loginByDevice(Long userId, UserType userType, DeviceType deviceType) { StpUtil.login(userType.getUserType() + userId, deviceType.getDevice()); public static void loginByDevice(LoginUser loginUser, UserType userType, DeviceType deviceType) { StpUtil.login(userType.getUserType() + loginUser.getUserId(), deviceType.getDevice()); StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); } /** * è·åç¨æ· **/ public static LoginUser getLoginUser() { return (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY); } /** * è·åç¨æ·id */ public static Long getUserId() { String loginId = StpUtil.getLoginIdAsString(); String userId; String replace = ""; if (StringUtils.contains(loginId, UserType.SYS_USER.getUserType())) { userId = StringUtils.replace(loginId, UserType.SYS_USER.getUserType(), replace); } else if (StringUtils.contains(loginId, UserType.APP_USER.getUserType())){ userId = StringUtils.replace(loginId, UserType.APP_USER.getUserType(), replace); } else { throw new UtilException("ç»å½ç¨æ·: LoginIdå¼å¸¸ => " + loginId); LoginUser loginUser = getLoginUser(); if (ObjectUtil.isNull(loginUser)) { String loginId = StpUtil.getLoginIdAsString(); String userId; String replace = ""; if (StringUtils.contains(loginId, UserType.SYS_USER.getUserType())) { userId = StringUtils.replace(loginId, UserType.SYS_USER.getUserType(), replace); } else if (StringUtils.contains(loginId, UserType.APP_USER.getUserType())){ userId = StringUtils.replace(loginId, UserType.APP_USER.getUserType(), replace); } else { throw new UtilException("ç»å½ç¨æ·: LoginIdå¼å¸¸ => " + loginId); } return Long.parseLong(userId); } return Long.parseLong(userId); return loginUser.getUserId(); } /** * è·åé¨é¨ID **/ public static Long getDeptId() { return getLoginUser().getDeptId(); } /** * è·åç¨æ·è´¦æ· **/ public static String getUsername() { return getLoginUser().getUsername(); } /** ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
@@ -13,41 +13,13 @@ * @author Long Li */ public class SecurityUtils { /** * ç¨æ·ID **/ public static Long getUserId() { return LoginUtils.getUserId(); } /** * è·åé¨é¨ID **/ public static Long getDeptId() { try { return getUser().getDeptId(); } catch (Exception e) { throw new ServiceException("è·åé¨é¨IDå¼å¸¸", HttpStatus.HTTP_UNAUTHORIZED); } } /** * è·åç¨æ·è´¦æ· **/ public static String getUsername() { try { return getUser().getUserName(); } catch (Exception e) { throw new ServiceException("è·åç¨æ·è´¦æ·å¼å¸¸", HttpStatus.HTTP_UNAUTHORIZED); } } /** * è·åç¨æ· **/ public static SysUser getUser() { try { return SpringUtils.getBean(UserService.class).selectUserById(getUserId()); return SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId()); } catch (Exception e) { throw new ServiceException("è·åç¨æ·ä¿¡æ¯å¼å¸¸", HttpStatus.HTTP_UNAUTHORIZED); } ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -7,7 +7,6 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.reflect.ReflectUtils; import com.ruoyi.common.utils.spring.SpringUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -2,12 +2,11 @@ import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.dto.OperLogDTO; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.service.OperLogService; import com.ruoyi.common.enums.BusinessStatus; import com.ruoyi.common.enums.HttpMethod; import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; @@ -60,9 +59,6 @@ protected void handleLog(final JoinPoint joinPoint, Log controllerLog, final Exception e, Object jsonResult) { try { // è·åå½åçç¨æ· SysUser sysUser = SecurityUtils.getUser(); // *========æ°æ®åºæ¥å¿=========*// OperLogDTO operLog = new OperLogDTO(); operLog.setStatus(BusinessStatus.SUCCESS.ordinal()); @@ -70,9 +66,7 @@ String ip = ServletUtils.getClientIP(); operLog.setOperIp(ip); operLog.setOperUrl(ServletUtils.getRequest().getRequestURI()); if (sysUser != null) { operLog.setOperName(sysUser.getUserName()); } operLog.setOperName(LoginUtils.getUsername()); if (e != null) { operLog.setStatus(BusinessStatus.FAIL.ordinal()); ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java
@@ -6,7 +6,7 @@ import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.stp.StpUtil; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.config.properties.SecurityProperties; import lombok.extern.slf4j.Slf4j; @@ -43,7 +43,7 @@ .notMatch(securityProperties.getExcludes()) .check(() -> { if (log.isDebugEnabled()) { Long userId = SecurityUtils.getUserId(); Long userId = LoginUtils.getUserId(); if (StringUtils.isNotNull(userId)) { log.debug("å©ä½æææ¶é´: {}", StpUtil.getTokenTimeout()); log.debug("ä¸´æ¶æææ¶é´: {}", StpUtil.getTokenActivityTimeout()); ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java
@@ -4,9 +4,9 @@ import cn.hutool.http.HttpStatus; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; @@ -76,14 +76,14 @@ * è·åç»å½ç¨æ·å */ private String getLoginUsername() { SysUser user; LoginUser user; try { user = SecurityUtils.getUser(); user = LoginUtils.getLoginUser(); } catch (Exception e) { log.warn("èªå¨æ³¨å ¥è¦å => ç¨æ·æªç»å½"); return null; } return user.getUserName(); return user.getUsername(); } } ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java
ÎļþÃû´Ó ruoyi-framework/src/main/java/com/ruoyi/framework/dao/PlusSaTokenDao.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.ruoyi.framework.dao; package com.ruoyi.framework.satoken.dao; import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.util.SaFoxUtil; ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaInterfaceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package com.ruoyi.framework.satoken.service; import cn.dev33.satoken.stp.StpInterface; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.UserType; import com.ruoyi.common.utils.LoginUtils; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Component public class SaInterfaceImpl implements StpInterface { @Override public List<String> getPermissionList(Object loginId, String loginType) { UserType userType = LoginUtils.getUserType(loginId); if (userType == UserType.SYS_USER) { LoginUser loginUser = LoginUtils.getLoginUser(); return new ArrayList<>(loginUser.getMenuPermission()); } else if (userType == UserType.APP_USER) { // app端æéè¿å èªè¡æ ¹æ®ä¸å¡ç¼å } return new ArrayList<>(); } @Override public List<String> getRoleList(Object loginId, String loginType) { UserType userType = LoginUtils.getUserType(loginId); if (userType == UserType.SYS_USER) { LoginUser loginUser = LoginUtils.getLoginUser(); return new ArrayList<>(loginUser.getRolePermission()); } else if (userType == UserType.APP_USER) { // app端æéè¿å èªè¡æ ¹æ®ä¸å¡ç¼å } return new ArrayList<>(); } } ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
@@ -9,10 +9,7 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; @@ -159,7 +156,7 @@ @Override @Transactional public void importGenTable(List<GenTable> tableList) { String operName = SecurityUtils.getUsername(); String operName = LoginUtils.getUsername(); try { for (GenTable table : tableList) { String tableName = table.getTableName(); ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.excel.ExcelListener; import com.ruoyi.common.excel.ExcelResult; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; @@ -43,7 +44,7 @@ this.password = SpringUtils.getBean(ISysConfigService.class) .selectConfigByKey("sys.user.initPassword"); this.isUpdateSupport = isUpdateSupport; this.operName = SecurityUtils.getUsername(); this.operName = LoginUtils.getUsername(); } @Override ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
@@ -3,6 +3,7 @@ import cn.dev33.satoken.stp.StpUtil; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.service.LogininforService; import com.ruoyi.common.enums.DeviceType; import com.ruoyi.common.enums.UserStatus; @@ -14,7 +15,6 @@ import com.ruoyi.common.utils.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -36,6 +36,9 @@ @Autowired private LogininforService asyncService; @Autowired private SysPermissionService permissionService; /** * ç»å½éªè¯ @@ -68,11 +71,17 @@ asyncService.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"), request); throw new UserPasswordNotMatchException(); } LoginUser loginUser = new LoginUser(); loginUser.setUserId(user.getUserId()); loginUser.setDeptId(user.getDeptId()); loginUser.setUsername(user.getUserName()); loginUser.setMenuPermission(permissionService.getMenuPermission(user)); loginUser.setRolePermission(permissionService.getRolePermission(user)); asyncService.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"), request); recordLoginInfo(user.getUserId(), username); // çætoken LoginUtils.loginByDevice(user.getUserId(), UserType.SYS_USER, DeviceType.PC); LoginUtils.loginByDevice(loginUser, UserType.SYS_USER, DeviceType.PC); return StpUtil.getTokenValue(); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaInterfaceImpl.java
ÎļþÒÑɾ³ý ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -11,7 +11,7 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.TreeBuildUtils; import com.ruoyi.common.utils.spring.SpringUtils; @@ -154,7 +154,7 @@ */ @Override public void checkDeptDataScope(Long deptId) { if (!SysUser.isAdmin(SecurityUtils.getUserId())) { if (!SysUser.isAdmin(LoginUtils.getUserId())) { SysDept dept = new SysDept(); dept.setDeptId(deptId); List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -8,8 +8,8 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.SysRoleDept; @@ -187,7 +187,7 @@ */ @Override public void checkRoleDataScope(Long roleId) { if (!SysUser.isAdmin(SecurityUtils.getUserId())) { if (!SysUser.isAdmin(LoginUtils.getUserId())) { SysRole role = new SysRole(); role.setRoleId(roleId); List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -10,6 +10,7 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.service.UserService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.LoginUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; @@ -225,7 +226,7 @@ */ @Override public void checkUserDataScope(Long userId) { if (!SysUser.isAdmin(SecurityUtils.getUserId())) { if (!SysUser.isAdmin(LoginUtils.getUserId())) { SysUser user = new SysUser(); user.setUserId(userId); List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);