From 03126efa4838fbc135f87ff169d90d3c486a0cf4 Mon Sep 17 00:00:00 2001 From: zhangdaiscott <zhangdaiscott@163.com> Date: Sat, 16 Oct 2021 19:45:35 +0800 Subject: [PATCH] 授权首页菜单后,自定义首页功能不生效 #3069 --- jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java | 13 +++++++++++++ jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java | 42 ++++++++++++++++++++++++------------------ 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java b/jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java index 9f9007b..6d12c4b 100644 --- a/jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java +++ b/jeecg-boot/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java @@ -1,5 +1,7 @@ package org.jeecg.common.constant.enums; +import java.util.List; + /** * 首页自定义 * 通过角色编码与首页组件路径配置 @@ -64,6 +66,17 @@ public enum RoleIndexConfigEnum { return null; } + public static String getIndexByRoles(List<String> roles) { + for (String role : roles) { + for (RoleIndexConfigEnum e : RoleIndexConfigEnum.values()) { + if (e.roleCode.equals(role)) { + return e.componentUrl; + } + } + } + return null; + } + public String getRoleCode() { return roleCode; } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java index a973684..28539c3 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authz.annotation.RequiresRoles; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.enums.RoleIndexConfigEnum; @@ -22,6 +23,7 @@ import org.jeecg.modules.system.model.TreeModel; import org.jeecg.modules.system.service.*; import org.jeecg.modules.system.util.PermissionDataUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.util.*; @@ -54,6 +56,12 @@ public class SysPermissionController { @Autowired private ISysUserService sysUserService; + /** + * 系统安全模式(true开启,false关闭) + */ + @Value(value = "${jeecg.safeMode:false}") + private Boolean sysSafeMode; + /** * 加载数据节点 @@ -215,21 +223,18 @@ public class SysPermissionController { //update-begin-author:taoyan date:20200211 for: TASK #3368 【路由缓存】首页的缓存设置有问题,需要根据后台的路由配置来实现是否缓存 if(!PermissionDataUtil.hasIndexPage(metaList)){ SysPermission indexMenu = sysPermissionService.list(new LambdaQueryWrapper<SysPermission>().eq(SysPermission::getName,"首页")).get(0); - //update-begin--Author:liusq Date:20210624 for:自定义首页地址LOWCOD-1578 - List<String> roles = sysUserService.getRole(loginUser.getUsername()); - if(roles.size()>0){ - for (String code:roles) { - String componentUrl = RoleIndexConfigEnum.getIndexByCode(code); - if(StringUtils.isNotBlank(componentUrl)){ - indexMenu.setComponent(componentUrl); - break; - } - } - } - //update-end--Author:liusq Date:20210624 for:自定义首页地址LOWCOD-1578 metaList.add(0,indexMenu); } //update-end-author:taoyan date:20200211 for: TASK #3368 【路由缓存】首页的缓存设置有问题,需要根据后台的路由配置来实现是否缓存 + + //update-begin--Author:liusq Date:20210624 for:自定义首页地址LOWCOD-1578 + List<String> roles = sysUserService.getRole(loginUser.getUsername()); + String compUrl = RoleIndexConfigEnum.getIndexByRoles(roles); + if(StringUtils.isNotBlank(compUrl)){ + List<SysPermission> menus = metaList.stream().filter(sysPermission -> "首页".equals(sysPermission.getName())).collect(Collectors.toList()); + menus.get(0).setComponent(compUrl); + } + //update-end--Author:liusq Date:20210624 for:自定义首页地址LOWCOD-1578 JSONObject json = new JSONObject(); JSONArray menujsonArray = new JSONArray(); this.getPermissionJsonArray(menujsonArray, metaList, null); @@ -249,10 +254,11 @@ public class SysPermissionController { json.put("auth", authjsonArray); //全部权限配置集合(按钮权限,访问权限) json.put("allAuth", allauthjsonArray); + json.put("sysSafeMode", sysSafeMode); result.setResult(json); result.success("查询成功"); } catch (Exception e) { - result.error500("查询失败:" + e.getMessage()); + result.error500("查询失败:" + e.getMessage()); log.error(e.getMessage(), e); } return result; @@ -343,7 +349,7 @@ public class SysPermissionController { /** * 获取全部的权限树 - * + * * @return */ @RequestMapping(value = "/queryTreeList", method = RequestMethod.GET) @@ -375,7 +381,7 @@ public class SysPermissionController { /** * 异步加载数据节点 - * + * * @return */ @RequestMapping(value = "/queryListAsync", method = RequestMethod.GET) @@ -398,7 +404,7 @@ public class SysPermissionController { /** * 查询角色授权 - * + * * @return */ @RequestMapping(value = "/queryRolePermission", method = RequestMethod.GET) @@ -416,7 +422,7 @@ public class SysPermissionController { /** * 保存角色授权 - * + * * @return */ @RequestMapping(value = "/saveRolePermission", method = RequestMethod.POST) @@ -475,7 +481,7 @@ public class SysPermissionController { } } - + /** * 获取权限JSON数组 * @param jsonArray -- libgit2 0.22.2