diff --git a/src/main/java/com/youlai/system/common/constant/SecurityConstants.java b/src/main/java/com/youlai/system/common/constant/SecurityConstants.java
deleted file mode 100644
index 83be708a..00000000
--- a/src/main/java/com/youlai/system/common/constant/SecurityConstants.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.youlai.system.common.constant;
-
-/**
- * Security常量
- *
- * @author haoxr
- * @date 2022/10/22
- */
-public interface SecurityConstants {
-
- /**
- * 授权角色的前缀
- *
- * 区分角色与权限标识
- */
- String ROLE_PREFIX = "ROLE_";
-
-}
diff --git a/src/main/java/com/youlai/system/common/constant/SystemConstants.java b/src/main/java/com/youlai/system/common/constant/SystemConstants.java
index 3e3cef44..7cc2fcca 100644
--- a/src/main/java/com/youlai/system/common/constant/SystemConstants.java
+++ b/src/main/java/com/youlai/system/common/constant/SystemConstants.java
@@ -17,7 +17,7 @@ public interface SystemConstants {
/**
* 系统默认密码
*/
- String DEFAULT_USER_PASSWORD = "123456";
+ String DEFAULT_PASSWORD = "123456";
/**
* 超级管理员角色编码
diff --git a/src/main/java/com/youlai/system/common/exception/GlobalExceptionHandler.java b/src/main/java/com/youlai/system/common/exception/GlobalExceptionHandler.java
index ed412851..8dcf5f01 100644
--- a/src/main/java/com/youlai/system/common/exception/GlobalExceptionHandler.java
+++ b/src/main/java/com/youlai/system/common/exception/GlobalExceptionHandler.java
@@ -22,7 +22,6 @@ import javax.servlet.ServletException;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.sql.SQLSyntaxErrorException;
-import java.util.concurrent.CompletionException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
diff --git a/src/main/java/com/youlai/system/common/result/ResultCode.java b/src/main/java/com/youlai/system/common/result/ResultCode.java
index 48dd7ece..a90492ee 100644
--- a/src/main/java/com/youlai/system/common/result/ResultCode.java
+++ b/src/main/java/com/youlai/system/common/result/ResultCode.java
@@ -25,7 +25,7 @@ public enum ResultCode implements IResultCode, Serializable {
USERNAME_OR_PASSWORD_ERROR("A0210", "用户名或密码错误"),
PASSWORD_ENTER_EXCEED_LIMIT("A0211", "用户输入密码次数超限"),
CLIENT_AUTHENTICATION_FAILED("A0212", "客户端认证失败"),
- TOKEN_INVALID_OR_EXPIRED("A0230", "token无效或已过期"),
+ TOKEN_INVALID("A0230", "token无效或已过期"),
TOKEN_ACCESS_FORBIDDEN("A0231", "token已被禁止访问"),
AUTHORIZED_ERROR("A0300", "访问权限异常"),
diff --git a/src/main/java/com/youlai/system/config/SecurityConfig.java b/src/main/java/com/youlai/system/config/SecurityConfig.java
index bd8bbbd5..6b02dbdc 100644
--- a/src/main/java/com/youlai/system/config/SecurityConfig.java
+++ b/src/main/java/com/youlai/system/config/SecurityConfig.java
@@ -1,6 +1,6 @@
package com.youlai.system.config;
-import com.youlai.system.filter.JwtAuthenticationFilter;
+import com.youlai.system.security.filter.JwtAuthenticationFilter;
import com.youlai.system.security.exception.MyAccessDeniedHandler;
import com.youlai.system.security.exception.MyAuthenticationEntryPoint;
import com.youlai.system.security.jwt.JwtTokenManager;
diff --git a/src/main/java/com/youlai/system/controller/SysDeptController.java b/src/main/java/com/youlai/system/controller/SysDeptController.java
index b7d248c7..7e88115d 100644
--- a/src/main/java/com/youlai/system/controller/SysDeptController.java
+++ b/src/main/java/com/youlai/system/controller/SysDeptController.java
@@ -1,6 +1,6 @@
package com.youlai.system.controller;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.form.DeptForm;
import com.youlai.system.pojo.query.DeptQuery;
diff --git a/src/main/java/com/youlai/system/controller/SysDictTypeController.java b/src/main/java/com/youlai/system/controller/SysDictTypeController.java
index 8e3667c9..ded93bb2 100644
--- a/src/main/java/com/youlai/system/controller/SysDictTypeController.java
+++ b/src/main/java/com/youlai/system/controller/SysDictTypeController.java
@@ -1,7 +1,7 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.form.DictTypeForm;
diff --git a/src/main/java/com/youlai/system/controller/SysMenuController.java b/src/main/java/com/youlai/system/controller/SysMenuController.java
index 7113cf35..e5a80d48 100644
--- a/src/main/java/com/youlai/system/controller/SysMenuController.java
+++ b/src/main/java/com/youlai/system/controller/SysMenuController.java
@@ -1,6 +1,6 @@
package com.youlai.system.controller;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.entity.SysMenu;
import com.youlai.system.pojo.query.MenuQuery;
diff --git a/src/main/java/com/youlai/system/controller/SysRoleController.java b/src/main/java/com/youlai/system/controller/SysRoleController.java
index e34dd5c5..aa4364fa 100644
--- a/src/main/java/com/youlai/system/controller/SysRoleController.java
+++ b/src/main/java/com/youlai/system/controller/SysRoleController.java
@@ -1,12 +1,11 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.pojo.entity.SysRole;
import com.youlai.system.pojo.form.RoleForm;
-import com.youlai.system.pojo.form.RoleResourceForm;
import com.youlai.system.pojo.query.RolePageQuery;
import com.youlai.system.pojo.vo.role.RolePageVO;
import com.youlai.system.service.SysRoleService;
diff --git a/src/main/java/com/youlai/system/controller/SysUserController.java b/src/main/java/com/youlai/system/controller/SysUserController.java
index c0354c89..51e2c16c 100644
--- a/src/main/java/com/youlai/system/controller/SysUserController.java
+++ b/src/main/java/com/youlai/system/controller/SysUserController.java
@@ -63,7 +63,7 @@ public class SysUserController {
@ApiOperation(value = "新增用户")
@PostMapping
- @PreAuthorize("hasAuthority('sys:user:add')")
+ @PreAuthorize("@pms.hasPermission('sys:user:add')")
public Result saveUser(
@RequestBody @Valid UserForm userForm
) {
@@ -73,7 +73,7 @@ public class SysUserController {
@ApiOperation(value = "修改用户")
@PutMapping(value = "/{userId}")
- @PreAuthorize("hasAuthority('sys:user:edit')")
+ @PreAuthorize("@pms.hasPermission('sys:user:edit')")
public Result updateUser(
@ApiParam("用户ID") @PathVariable Long userId,
@RequestBody @Validated UserForm userForm) {
@@ -83,7 +83,7 @@ public class SysUserController {
@ApiOperation(value = "删除用户")
@DeleteMapping("/{ids}")
- @PreAuthorize("hasAuthority('sys:user:delete')")
+ @PreAuthorize("@pms.hasPermission('sys:user:delete')")
public Result deleteUsers(
@ApiParam("用户ID,多个以英文逗号(,)分割") @PathVariable String ids
) {
@@ -152,6 +152,7 @@ public class SysUserController {
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
List exportUserList = userService.listExportUsers(queryParams);
- EasyExcel.write(response.getOutputStream(), UserExportVO.class).sheet("用户列表").doWrite(exportUserList);
+ EasyExcel.write(response.getOutputStream(), UserExportVO.class).sheet("用户列表")
+ .doWrite(exportUserList);
}
}
diff --git a/src/main/java/com/youlai/system/converter/MenuConverter.java b/src/main/java/com/youlai/system/converter/MenuConverter.java
index 485027f2..f7f0ac6a 100644
--- a/src/main/java/com/youlai/system/converter/MenuConverter.java
+++ b/src/main/java/com/youlai/system/converter/MenuConverter.java
@@ -15,5 +15,4 @@ public interface MenuConverter {
MenuVO entity2VO(SysMenu entity);
-
}
\ No newline at end of file
diff --git a/src/main/java/com/youlai/system/converter/RoleConverter.java b/src/main/java/com/youlai/system/converter/RoleConverter.java
index 56c0b8c8..5d11f3ed 100644
--- a/src/main/java/com/youlai/system/converter/RoleConverter.java
+++ b/src/main/java/com/youlai/system/converter/RoleConverter.java
@@ -1,7 +1,7 @@
package com.youlai.system.converter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.entity.SysRole;
import com.youlai.system.pojo.form.RoleForm;
import com.youlai.system.pojo.vo.role.RolePageVO;
diff --git a/src/main/java/com/youlai/system/converter/UserConverter.java b/src/main/java/com/youlai/system/converter/UserConverter.java
index e11be797..9f610acf 100644
--- a/src/main/java/com/youlai/system/converter/UserConverter.java
+++ b/src/main/java/com/youlai/system/converter/UserConverter.java
@@ -22,7 +22,7 @@ import org.mapstruct.Mappings;
public interface UserConverter {
@Mappings({
- @Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(po.getGender(), com.youlai.system.common.enums.GenderEnum.class))")
+ @Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(po.getGender(), com.youlai.system.enums.GenderEnum.class))")
})
UserVO po2Vo(UserBO po);
diff --git a/src/main/java/com/youlai/system/common/enums/GenderEnum.java b/src/main/java/com/youlai/system/enums/GenderEnum.java
similarity index 91%
rename from src/main/java/com/youlai/system/common/enums/GenderEnum.java
rename to src/main/java/com/youlai/system/enums/GenderEnum.java
index 0b294975..d8e5ed04 100644
--- a/src/main/java/com/youlai/system/common/enums/GenderEnum.java
+++ b/src/main/java/com/youlai/system/enums/GenderEnum.java
@@ -1,4 +1,4 @@
-package com.youlai.system.common.enums;
+package com.youlai.system.enums;
import com.youlai.system.common.base.IBaseEnum;
import lombok.Getter;
diff --git a/src/main/java/com/youlai/system/common/enums/MenuTypeEnum.java b/src/main/java/com/youlai/system/enums/MenuTypeEnum.java
similarity index 94%
rename from src/main/java/com/youlai/system/common/enums/MenuTypeEnum.java
rename to src/main/java/com/youlai/system/enums/MenuTypeEnum.java
index 7767ffa0..05fa6b0e 100644
--- a/src/main/java/com/youlai/system/common/enums/MenuTypeEnum.java
+++ b/src/main/java/com/youlai/system/enums/MenuTypeEnum.java
@@ -1,4 +1,4 @@
-package com.youlai.system.common.enums;
+package com.youlai.system.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.youlai.system.common.base.IBaseEnum;
diff --git a/src/main/java/com/youlai/system/common/enums/StatusEnum.java b/src/main/java/com/youlai/system/enums/StatusEnum.java
similarity index 91%
rename from src/main/java/com/youlai/system/common/enums/StatusEnum.java
rename to src/main/java/com/youlai/system/enums/StatusEnum.java
index 6caa2610..d333bbab 100644
--- a/src/main/java/com/youlai/system/common/enums/StatusEnum.java
+++ b/src/main/java/com/youlai/system/enums/StatusEnum.java
@@ -1,4 +1,4 @@
-package com.youlai.system.common.enums;
+package com.youlai.system.enums;
import com.youlai.system.common.base.IBaseEnum;
import lombok.Getter;
diff --git a/src/main/java/com/youlai/system/mapper/SysRoleMapper.java b/src/main/java/com/youlai/system/mapper/SysRoleMapper.java
index e7230f59..bb107419 100644
--- a/src/main/java/com/youlai/system/mapper/SysRoleMapper.java
+++ b/src/main/java/com/youlai/system/mapper/SysRoleMapper.java
@@ -4,8 +4,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.youlai.system.pojo.entity.SysRole;
import org.apache.ibatis.annotations.Mapper;
+import java.util.Set;
+
@Mapper
public interface SysRoleMapper extends BaseMapper {
+ /**
+ * 获取最大范围的数据权限
+ *
+ * @param roles
+ * @return
+ */
+ Integer getMaximumDataScope(Set roles);
}
diff --git a/src/main/java/com/youlai/system/common/model/Option.java b/src/main/java/com/youlai/system/pojo/Option.java
similarity index 95%
rename from src/main/java/com/youlai/system/common/model/Option.java
rename to src/main/java/com/youlai/system/pojo/Option.java
index 5571356a..bd70686d 100644
--- a/src/main/java/com/youlai/system/common/model/Option.java
+++ b/src/main/java/com/youlai/system/pojo/Option.java
@@ -1,4 +1,4 @@
-package com.youlai.system.common.model;
+package com.youlai.system.pojo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
diff --git a/src/main/java/com/youlai/system/pojo/bo/RouteBO.java b/src/main/java/com/youlai/system/pojo/bo/RouteBO.java
index 2af90dc2..725e4b1a 100644
--- a/src/main/java/com/youlai/system/pojo/bo/RouteBO.java
+++ b/src/main/java/com/youlai/system/pojo/bo/RouteBO.java
@@ -2,7 +2,7 @@ package com.youlai.system.pojo.bo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
-import com.youlai.system.common.enums.MenuTypeEnum;
+import com.youlai.system.enums.MenuTypeEnum;
import lombok.Data;
import java.util.List;
diff --git a/src/main/java/com/youlai/system/pojo/entity/SysMenu.java b/src/main/java/com/youlai/system/pojo/entity/SysMenu.java
index 4d03482c..0b63e9c3 100644
--- a/src/main/java/com/youlai/system/pojo/entity/SysMenu.java
+++ b/src/main/java/com/youlai/system/pojo/entity/SysMenu.java
@@ -1,14 +1,11 @@
package com.youlai.system.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
import com.youlai.system.common.base.BaseEntity;
-import com.youlai.system.common.enums.MenuTypeEnum;
+import com.youlai.system.enums.MenuTypeEnum;
import lombok.Data;
/**
diff --git a/src/main/java/com/youlai/system/pojo/entity/SysRole.java b/src/main/java/com/youlai/system/pojo/entity/SysRole.java
index 49168e7a..6fce20fa 100644
--- a/src/main/java/com/youlai/system/pojo/entity/SysRole.java
+++ b/src/main/java/com/youlai/system/pojo/entity/SysRole.java
@@ -58,4 +58,9 @@ public class SysRole implements Serializable {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
+
+ /**
+ * 数据权限
+ */
+ private Integer dataScope;
}
\ No newline at end of file
diff --git a/src/main/java/com/youlai/system/pojo/vo/menu/MenuVO.java b/src/main/java/com/youlai/system/pojo/vo/menu/MenuVO.java
index b4f35cb2..7738f011 100644
--- a/src/main/java/com/youlai/system/pojo/vo/menu/MenuVO.java
+++ b/src/main/java/com/youlai/system/pojo/vo/menu/MenuVO.java
@@ -1,7 +1,7 @@
package com.youlai.system.pojo.vo.menu;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.youlai.system.common.enums.MenuTypeEnum;
+import com.youlai.system.enums.MenuTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
diff --git a/src/main/java/com/youlai/system/security/exception/MyAuthenticationEntryPoint.java b/src/main/java/com/youlai/system/security/exception/MyAuthenticationEntryPoint.java
index c2f6585f..96ff8f7a 100644
--- a/src/main/java/com/youlai/system/security/exception/MyAuthenticationEntryPoint.java
+++ b/src/main/java/com/youlai/system/security/exception/MyAuthenticationEntryPoint.java
@@ -21,6 +21,6 @@ import java.io.IOException;
public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
- ResponseUtils.writeErrMsg(response, ResultCode.TOKEN_INVALID_OR_EXPIRED);
+ ResponseUtils.writeErrMsg(response, ResultCode.TOKEN_INVALID);
}
}
diff --git a/src/main/java/com/youlai/system/security/userdetails/SysUserDetails.java b/src/main/java/com/youlai/system/security/userdetails/SysUserDetails.java
index 798553b2..96060cac 100644
--- a/src/main/java/com/youlai/system/security/userdetails/SysUserDetails.java
+++ b/src/main/java/com/youlai/system/security/userdetails/SysUserDetails.java
@@ -15,6 +15,7 @@ import java.util.stream.Collectors;
/**
* Spring Security
+ *
* @author haoxr
*/
@Data
@@ -30,10 +31,12 @@ public class SysUserDetails implements UserDetails {
private Collection authorities;
- private String authorityStr;
-
private Set perms;
+ private Long deptId;
+
+ private Integer dataScope;
+
public SysUserDetails() {
}
@@ -53,7 +56,9 @@ public class SysUserDetails implements UserDetails {
this.username = user.getUsername();
this.password = user.getPassword();
this.enabled = ObjectUtil.equal(user.getStatus(), 1);
- this.perms=user.getPerms();
+ this.perms = user.getPerms();
+ this.deptId = user.getDeptId();
+ this.dataScope = user.getDataScope();
}
public Long getUserId() {
diff --git a/src/main/java/com/youlai/system/security/userdetails/SysUserDetailsServiceImpl.java b/src/main/java/com/youlai/system/security/userdetails/SysUserDetailsService.java
similarity index 90%
rename from src/main/java/com/youlai/system/security/userdetails/SysUserDetailsServiceImpl.java
rename to src/main/java/com/youlai/system/security/userdetails/SysUserDetailsService.java
index 33c823b7..2861533e 100644
--- a/src/main/java/com/youlai/system/security/userdetails/SysUserDetailsServiceImpl.java
+++ b/src/main/java/com/youlai/system/security/userdetails/SysUserDetailsService.java
@@ -9,11 +9,13 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
/**
+ * 用户认证信息实现类
+ *
* @author haoxr
*/
@Service
@RequiredArgsConstructor
-public class SysUserDetailsServiceImpl implements UserDetailsService {
+public class SysUserDetailsService implements UserDetailsService {
private final SysUserService sysUserService;
diff --git a/src/main/java/com/youlai/system/service/SysDeptService.java b/src/main/java/com/youlai/system/service/SysDeptService.java
index f5fa71c0..4468b9e1 100644
--- a/src/main/java/com/youlai/system/service/SysDeptService.java
+++ b/src/main/java/com/youlai/system/service/SysDeptService.java
@@ -1,7 +1,7 @@
package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.entity.SysDept;
import com.youlai.system.pojo.form.DeptForm;
import com.youlai.system.pojo.query.DeptQuery;
diff --git a/src/main/java/com/youlai/system/service/SysDictTypeService.java b/src/main/java/com/youlai/system/service/SysDictTypeService.java
index b277156d..7695e021 100644
--- a/src/main/java/com/youlai/system/service/SysDictTypeService.java
+++ b/src/main/java/com/youlai/system/service/SysDictTypeService.java
@@ -2,7 +2,7 @@ package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.entity.SysDictType;
import com.youlai.system.pojo.form.DictTypeForm;
import com.youlai.system.pojo.query.DictTypePageQuery;
diff --git a/src/main/java/com/youlai/system/service/SysMenuService.java b/src/main/java/com/youlai/system/service/SysMenuService.java
index e2ce3463..a0d25025 100644
--- a/src/main/java/com/youlai/system/service/SysMenuService.java
+++ b/src/main/java/com/youlai/system/service/SysMenuService.java
@@ -1,7 +1,7 @@
package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.entity.SysMenu;
import com.youlai.system.pojo.query.MenuQuery;
import com.youlai.system.pojo.vo.menu.MenuVO;
diff --git a/src/main/java/com/youlai/system/service/SysRoleService.java b/src/main/java/com/youlai/system/service/SysRoleService.java
index a5c43f85..aaeb7bb0 100644
--- a/src/main/java/com/youlai/system/service/SysRoleService.java
+++ b/src/main/java/com/youlai/system/service/SysRoleService.java
@@ -3,14 +3,14 @@ package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.pojo.entity.SysRole;
import com.youlai.system.pojo.form.RoleForm;
-import com.youlai.system.pojo.form.RoleResourceForm;
import com.youlai.system.pojo.query.RolePageQuery;
import com.youlai.system.pojo.vo.role.RolePageVO;
import java.util.List;
+import java.util.Set;
/**
* 角色业务接口层
@@ -78,4 +78,12 @@ public interface SysRoleService extends IService {
* @return
*/
boolean updateRoleMenus(Long roleId, List menuIds);
+
+ /**
+ * 获取最大范围的数据权限
+ *
+ * @param roles
+ * @return
+ */
+ Integer getMaximumDataScope(Set roles);
}
diff --git a/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java
index b949781a..4b69ae33 100644
--- a/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java
+++ b/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java
@@ -7,8 +7,8 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants;
-import com.youlai.system.common.enums.StatusEnum;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.enums.StatusEnum;
+import com.youlai.system.pojo.Option;
import com.youlai.system.converter.DeptConverter;
import com.youlai.system.mapper.SysDeptMapper;
import com.youlai.system.pojo.entity.SysDept;
diff --git a/src/main/java/com/youlai/system/service/impl/SysDictTypeServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysDictTypeServiceImpl.java
index e4453015..faf61fb9 100644
--- a/src/main/java/com/youlai/system/service/impl/SysDictTypeServiceImpl.java
+++ b/src/main/java/com/youlai/system/service/impl/SysDictTypeServiceImpl.java
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.converter.DictTypeConverter;
import com.youlai.system.mapper.SysDictTypeMapper;
import com.youlai.system.pojo.entity.SysDictItem;
diff --git a/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java
index 8887b762..cf49800e 100644
--- a/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java
+++ b/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java
@@ -7,9 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants;
-import com.youlai.system.common.enums.MenuTypeEnum;
-import com.youlai.system.common.enums.StatusEnum;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.enums.MenuTypeEnum;
+import com.youlai.system.enums.StatusEnum;
+import com.youlai.system.pojo.Option;
import com.youlai.system.converter.MenuConverter;
import com.youlai.system.mapper.SysMenuMapper;
import com.youlai.system.pojo.entity.SysMenu;
diff --git a/src/main/java/com/youlai/system/service/impl/SysRoleServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysRoleServiceImpl.java
index 77dea8a8..b9435e59 100644
--- a/src/main/java/com/youlai/system/service/impl/SysRoleServiceImpl.java
+++ b/src/main/java/com/youlai/system/service/impl/SysRoleServiceImpl.java
@@ -8,14 +8,13 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants;
-import com.youlai.system.common.model.Option;
+import com.youlai.system.pojo.Option;
import com.youlai.system.converter.RoleConverter;
import com.youlai.system.mapper.SysRoleMapper;
import com.youlai.system.pojo.entity.SysRole;
import com.youlai.system.pojo.entity.SysRoleMenu;
import com.youlai.system.pojo.entity.SysUserRole;
import com.youlai.system.pojo.form.RoleForm;
-import com.youlai.system.pojo.form.RoleResourceForm;
import com.youlai.system.pojo.query.RolePageQuery;
import com.youlai.system.pojo.vo.role.RolePageVO;
import com.youlai.system.service.SysRoleMenuService;
@@ -27,10 +26,7 @@ import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -193,4 +189,16 @@ public class SysRoleServiceImpl extends ServiceImpl impl
return true;
}
+ /**
+ * 获取最大范围的数据权限
+ *
+ * @param roles
+ * @return
+ */
+ @Override
+ public Integer getMaximumDataScope(Set roles) {
+ Integer dataScope = this.baseMapper.getMaximumDataScope(roles);
+ return dataScope;
+ }
+
}
diff --git a/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java
index 13b236ea..abfc15f4 100644
--- a/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java
+++ b/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java
@@ -15,8 +15,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.youlai.system.common.base.IBaseEnum;
import com.youlai.system.common.constant.SystemConstants;
-import com.youlai.system.common.enums.GenderEnum;
import com.youlai.system.converter.UserConverter;
+import com.youlai.system.enums.GenderEnum;
import com.youlai.system.listener.UserImportListener;
import com.youlai.system.mapper.SysUserMapper;
import com.youlai.system.pojo.bo.UserBO;
@@ -31,15 +31,16 @@ import com.youlai.system.pojo.vo.user.UserExportVO;
import com.youlai.system.pojo.vo.user.UserLoginVO;
import com.youlai.system.pojo.vo.user.UserVO;
import com.youlai.system.service.SysMenuService;
+import com.youlai.system.service.SysRoleService;
import com.youlai.system.service.SysUserRoleService;
import com.youlai.system.service.SysUserService;
import com.youlai.system.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -62,11 +63,14 @@ public class SysUserServiceImpl extends ServiceImpl impl
private final SysUserRoleService userRoleService;
private final UserImportListener userImportListener;
- @Resource
- private UserConverter userConverter;
+ private final UserConverter userConverter;
private final SysMenuService menuService;
+ private final SysRoleService roleService;
+
+ private final RedisTemplate redisTemplate;
+
/**
* 获取用户分页列表
*
@@ -122,7 +126,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
SysUser entity = userConverter.form2Entity(userForm);
// 设置默认加密密码
- String defaultEncryptPwd = passwordEncoder.encode(SystemConstants.DEFAULT_USER_PASSWORD);
+ String defaultEncryptPwd = passwordEncoder.encode(SystemConstants.DEFAULT_PASSWORD);
entity.setPassword(defaultEncryptPwd);
// 新增用户
@@ -211,12 +215,16 @@ public class SysUserServiceImpl extends ServiceImpl impl
@Override
public UserAuthInfo getUserAuthInfo(String username) {
UserAuthInfo userAuthInfo = this.baseMapper.getUserAuthInfo(username);
- if(userAuthInfo!=null){
+ if (userAuthInfo != null) {
Set roles = userAuthInfo.getRoles();
- if(CollectionUtil.isNotEmpty(roles)){
- Set perms= menuService.listRolePerms(roles);
+ if (CollectionUtil.isNotEmpty(roles)) {
+ Set perms = menuService.listRolePerms(roles);
userAuthInfo.setPerms(perms);
}
+
+ // 获取最大范围的数据权限
+ Integer dataScope = roleService.getMaximumDataScope(roles);
+ userAuthInfo.setDataScope(dataScope);
}
return userAuthInfo;
}
@@ -281,7 +289,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
user.setEmail(userItem.getEmail());
user.setDeptId(deptId);
// 默认密码
- user.setPassword(passwordEncoder.encode(SystemConstants.DEFAULT_USER_PASSWORD));
+ user.setPassword(passwordEncoder.encode(SystemConstants.DEFAULT_PASSWORD));
// 性别转换
Integer gender = (Integer) IBaseEnum.getValueByLabel(userItem.getGender(), GenderEnum.class);
user.setGender(gender);
@@ -349,7 +357,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
userLoginVO.setRoles(roles);
// 用户权限集合
- Set perms = SecurityUtils.getPerms();
+ Set perms = (Set)redisTemplate.opsForValue().get("USER_PERMS:" + user.getId());
userLoginVO.setPerms(perms);
return userLoginVO;
diff --git a/src/main/java/com/youlai/system/util/ResponseUtils.java b/src/main/java/com/youlai/system/util/ResponseUtils.java
index 2dfe4aa6..e2ac13df 100644
--- a/src/main/java/com/youlai/system/util/ResponseUtils.java
+++ b/src/main/java/com/youlai/system/util/ResponseUtils.java
@@ -27,7 +27,7 @@ public class ResponseUtils {
public static void writeErrMsg(HttpServletResponse response, ResultCode resultCode) throws IOException {
switch (resultCode) {
case ACCESS_UNAUTHORIZED:
- case TOKEN_INVALID_OR_EXPIRED:
+ case TOKEN_INVALID:
response.setStatus(HttpStatus.UNAUTHORIZED.value());
break;
case TOKEN_ACCESS_FORBIDDEN:
diff --git a/src/main/java/com/youlai/system/util/SecurityUtils.java b/src/main/java/com/youlai/system/util/SecurityUtils.java
index 013afa2e..d2eb3a9b 100644
--- a/src/main/java/com/youlai/system/util/SecurityUtils.java
+++ b/src/main/java/com/youlai/system/util/SecurityUtils.java
@@ -1,15 +1,14 @@
package com.youlai.system.util;
import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.security.userdetails.SysUserDetails;
-import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.util.PatternMatchUtils;
-import org.springframework.util.StringUtils;
import java.util.Collection;
import java.util.Collections;
@@ -34,6 +33,37 @@ public class SecurityUtils {
return null;
}
+ /**
+ * 获取用户ID
+ *
+ * @return
+ */
+ public static Long getUserId() {
+ Long userId = Convert.toLong(getUser().getUserId());
+ return userId;
+ }
+
+ /**
+ * 获取部门ID
+ *
+ * @return
+ */
+ public static Long getDeptId() {
+ Long userId = Convert.toLong(getUser().getDeptId());
+ return userId;
+ }
+
+ /**
+ * 获取数据权限范围
+ *
+ * @return DataScope
+ */
+ public static Integer getDataScope() {
+ Integer dataScope = Convert.toInt(getUser().getDataScope());
+ return dataScope;
+ }
+
+
/**
* 获取用户角色集合
*
@@ -41,16 +71,16 @@ public class SecurityUtils {
*/
public static Set getRoles() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
- Collection extends GrantedAuthority> authorities = authentication.getAuthorities();
- Set roles = null;
- if (CollectionUtil.isNotEmpty(authorities)) {
- roles = authorities.stream().filter(item -> item.getAuthority().startsWith("ROLE_"))
- .map(item -> StrUtil.removePrefix(item.getAuthority(), "ROLE_"))
- .collect(Collectors.toSet());
- } else {
- roles = Collections.EMPTY_SET;
+ if (authentication != null) {
+ Collection extends GrantedAuthority> authorities = authentication.getAuthorities();
+ if (CollectionUtil.isNotEmpty(authorities)) {
+ Set roles = authorities.stream().filter(item -> item.getAuthority().startsWith("ROLE_"))
+ .map(item -> StrUtil.removePrefix(item.getAuthority(), "ROLE_"))
+ .collect(Collectors.toSet());
+ return roles;
+ }
}
- return roles;
+ return Collections.EMPTY_SET;
}
/**
@@ -60,16 +90,16 @@ public class SecurityUtils {
*/
public static Set getPerms() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
- Collection extends GrantedAuthority> authorities = authentication.getAuthorities();
- Set perms = null;
- if (CollectionUtil.isNotEmpty(authorities)) {
- perms = authorities.stream().filter(item -> !item.getAuthority().startsWith("ROLE_"))
- .map(item -> item.getAuthority())
- .collect(Collectors.toSet());
- } else {
- perms = Collections.EMPTY_SET;
+ if (authentication != null) {
+ Collection extends GrantedAuthority> authorities = authentication.getAuthorities();
+ if (CollectionUtil.isNotEmpty(authorities)) {
+ Set perms = authorities.stream().filter(item -> !item.getAuthority().startsWith("ROLE_"))
+ .map(item -> item.getAuthority())
+ .collect(Collectors.toSet());
+ return perms;
+ }
}
- return perms;
+ return Collections.EMPTY_SET;
}
/**
diff --git a/src/main/resources/mapper/SysMenuMapper.xml b/src/main/resources/mapper/SysMenuMapper.xml
index 8ed68d9e..aaeb3bf3 100644
--- a/src/main/resources/mapper/SysMenuMapper.xml
+++ b/src/main/resources/mapper/SysMenuMapper.xml
@@ -40,7 +40,7 @@
LEFT JOIN sys_role_menu t2 ON t1.id = t2.menu_id
LEFT JOIN sys_role t3 ON t2.role_id = t3.id
WHERE
- t1.type != '${@com.youlai.system.common.enums.MenuTypeEnum@BUTTON.getValue()}'
+ t1.type != '${@com.youlai.system.enums.MenuTypeEnum@BUTTON.getValue()}'
ORDER BY t1.sort asc
@@ -53,7 +53,7 @@
INNER JOIN sys_role_menu t2
INNER JOIN sys_role t3
WHERE
- t1.type = '${@com.youlai.system.common.enums.MenuTypeEnum@BUTTON.getValue()}'
+ t1.type = '${@com.youlai.system.enums.MenuTypeEnum@BUTTON.getValue()}'
AND t1.perm IS NOT NULL
diff --git a/src/main/resources/mapper/SysRoleMapper.xml b/src/main/resources/mapper/SysRoleMapper.xml
index ee5ba383..7fd085c8 100644
--- a/src/main/resources/mapper/SysRoleMapper.xml
+++ b/src/main/resources/mapper/SysRoleMapper.xml
@@ -4,20 +4,24 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-
-
-
-
-
-
-
-
-
-
-
- id,name,code,
- sort,status,deleted,
- create_time,update_time
-
+
+