From 005b775a7c6d07d2688ecd33b73b0ce3ed928ba5 Mon Sep 17 00:00:00 2001 From: wanggeng <450292408@qq.com> Date: Mon, 26 Jul 2021 23:47:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E6=94=B9=E6=9F=A5=E6=9D=83=E9=99=90=E6=A0=A1=E9=AA=8C=E7=9C=81?= =?UTF-8?q?=E7=95=A5=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../properties/AccessControlProperties.java | 13 +++- .../service/rbac/impl/RbacServiceImpl.java | 6 ++ .../service/user/UserDetailServiceImpl.java | 20 ++++-- .../controller/route/RoleRouteController.java | 11 ++- .../main/resources/templates/role/list.html | 67 ++++++++++--------- 5 files changed, 79 insertions(+), 38 deletions(-) diff --git a/basic-properties/src/main/java/ink/wgink/properties/AccessControlProperties.java b/basic-properties/src/main/java/ink/wgink/properties/AccessControlProperties.java index d5217f73..9b898705 100644 --- a/basic-properties/src/main/java/ink/wgink/properties/AccessControlProperties.java +++ b/basic-properties/src/main/java/ink/wgink/properties/AccessControlProperties.java @@ -17,8 +17,17 @@ import java.util.List; @ConfigurationProperties(prefix = "access-control") public class AccessControlProperties { + private Boolean rolePermission; private List passPaths = new ArrayList<>(0); + public Boolean getRolePermission() { + return rolePermission == null ? true: rolePermission; + } + + public void setRolePermission(Boolean rolePermission) { + this.rolePermission = rolePermission; + } + public List getPassPaths() { if (passPaths == null) { return new ArrayList<>(); @@ -33,7 +42,9 @@ public class AccessControlProperties { @Override public String toString() { final StringBuilder sb = new StringBuilder("{"); - sb.append("\"passPaths\":") + sb.append("\"rolePermission\":") + .append(rolePermission); + sb.append(",\"passPaths\":") .append(passPaths); sb.append('}'); return sb.toString(); diff --git a/common/src/main/java/ink/wgink/common/service/rbac/impl/RbacServiceImpl.java b/common/src/main/java/ink/wgink/common/service/rbac/impl/RbacServiceImpl.java index b99af821..e33a3847 100644 --- a/common/src/main/java/ink/wgink/common/service/rbac/impl/RbacServiceImpl.java +++ b/common/src/main/java/ink/wgink/common/service/rbac/impl/RbacServiceImpl.java @@ -32,6 +32,7 @@ public class RbacServiceImpl implements IRbacService { private static final Logger LOG = LoggerFactory.getLogger(RbacServiceImpl.class); @Autowired private AccessControlProperties accessControlProperties; + /** * 根路径 */ @@ -89,6 +90,11 @@ public class RbacServiceImpl implements IRbacService { hasPermission = true; break; } + if (!accessControlProperties.getRolePermission()) { + LOG.debug("不校验URI的增、删、改、查权限"); + hasPermission = true; + break; + } // 新增权限 if (hasInsertPermission(contextPath, requestURI, roleGrantedAuthority, antPathMatcher)) { LOG.debug("权限校验URI:{},有新增权限", requestURI); diff --git a/login-base/src/main/java/ink/wgink/login/base/service/user/UserDetailServiceImpl.java b/login-base/src/main/java/ink/wgink/login/base/service/user/UserDetailServiceImpl.java index 9dc9e623..a3a0bf77 100644 --- a/login-base/src/main/java/ink/wgink/login/base/service/user/UserDetailServiceImpl.java +++ b/login-base/src/main/java/ink/wgink/login/base/service/user/UserDetailServiceImpl.java @@ -17,6 +17,8 @@ import ink.wgink.pojo.pos.DepartmentPO; import ink.wgink.pojo.pos.GroupPO; import ink.wgink.pojo.pos.PositionPO; import ink.wgink.pojo.pos.RolePO; +import ink.wgink.properties.AccessControlProperties; +import ink.wgink.properties.BaseProperties; import ink.wgink.service.department.service.IDepartmentUserService; import ink.wgink.service.user.pojo.pos.UserPO; import ink.wgink.service.user.service.IUserService; @@ -62,6 +64,8 @@ public class UserDetailServiceImpl implements UserDetailsService, IUserDetailChe private IDepartmentUserService departmentUserService; @Autowired private IUserService userService; + @Autowired + private AccessControlProperties accessControlProperties; public UserDetailServiceImpl() { super(); @@ -226,14 +230,22 @@ public class UserDetailServiceImpl implements UserDetailsService, IUserDetailChe private List loadRoleAuthority(List rolePOs) { List grantedAuthorities = new ArrayList<>(); if (null != rolePOs && !rolePOs.isEmpty()) { + // 设置菜单权限 rolePOs.forEach((rolePO) -> { List menuUrls = roleMenuBaseService.listMenuUrl(rolePO.getRoleId()); - List inserts = rolePermissionService.listPermissionUrl(rolePO.getRoleId(), IRolePermissionBaseService.PERMISSION_INSERT); - List deletes = rolePermissionService.listPermissionUrl(rolePO.getRoleId(), IRolePermissionBaseService.PERMISSION_DELETE); - List updates = rolePermissionService.listPermissionUrl(rolePO.getRoleId(), IRolePermissionBaseService.PERMISSION_UPDATE); - List queries = rolePermissionService.listPermissionUrl(rolePO.getRoleId(), IRolePermissionBaseService.PERMISSION_QUERY); + List inserts = new ArrayList<>(); + List deletes = new ArrayList<>(); + List updates = new ArrayList<>(); + List queries = new ArrayList<>(); + if (accessControlProperties.getRolePermission()) { + inserts.addAll(rolePermissionService.listPermissionUrl(rolePO.getRoleId(), IRolePermissionBaseService.PERMISSION_INSERT)); + deletes.addAll(rolePermissionService.listPermissionUrl(rolePO.getRoleId(), IRolePermissionBaseService.PERMISSION_DELETE)); + updates.addAll(rolePermissionService.listPermissionUrl(rolePO.getRoleId(), IRolePermissionBaseService.PERMISSION_UPDATE)); + queries.addAll(rolePermissionService.listPermissionUrl(rolePO.getRoleId(), IRolePermissionBaseService.PERMISSION_QUERY)); + } grantedAuthorities.add(new RoleGrantedAuthorityBO(rolePO.getRoleId(), rolePO.getRoleName(), menuUrls, inserts, deletes, updates, queries)); }); + } return grantedAuthorities; } diff --git a/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleRouteController.java b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleRouteController.java index b97d94bc..47fc9ce5 100644 --- a/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleRouteController.java +++ b/service-role/src/main/java/ink/wgink/service/role/controller/route/RoleRouteController.java @@ -1,7 +1,11 @@ package ink.wgink.service.role.controller.route; import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.properties.AccessControlProperties; +import ink.wgink.properties.BaseProperties; +import ink.wgink.properties.ServerProperties; import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -22,6 +26,9 @@ import org.springframework.web.servlet.ModelAndView; @RequestMapping(ISystemConstant.ROUTE_PREFIX + "/role") public class RoleRouteController { + @Autowired + private AccessControlProperties accessControlProperties; + @GetMapping("save") public ModelAndView save() { return new ModelAndView("role/save"); @@ -39,7 +46,9 @@ public class RoleRouteController { @GetMapping("list") public ModelAndView list() { - return new ModelAndView("role/list"); + ModelAndView mv = new ModelAndView("role/list"); + mv.addObject("rolePermission", accessControlProperties.getRolePermission()); + return mv; } @GetMapping("data-authority") diff --git a/service-role/src/main/resources/templates/role/list.html b/service-role/src/main/resources/templates/role/list.html index eb75b18f..cec3b348 100644 --- a/service-role/src/main/resources/templates/role/list.html +++ b/service-role/src/main/resources/templates/role/list.html @@ -52,6 +52,7 @@ +