reactor: 获取路由菜单添加角色权限控制

This commit is contained in:
ray
2024-06-29 15:10:48 +08:00
parent da36355cd9
commit 57e6ac7fa6
7 changed files with 26 additions and 22 deletions

View File

@@ -9,6 +9,7 @@ import com.youlai.system.model.vo.MenuVO;
import com.youlai.system.common.model.Option;
import com.youlai.system.model.vo.RouteVO;
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
import com.youlai.system.security.util.SecurityUtils;
import com.youlai.system.service.SysMenuService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -19,6 +20,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Set;
/**
* 菜单控制层
@@ -53,7 +55,8 @@ public class SysMenuController {
@Operation(summary = "路由列表")
@GetMapping("/routes")
public Result<List<RouteVO>> listRoutes() {
List<RouteVO> routeList = menuService.listRoutes();
Set<String> roles = SecurityUtils.getRoles();
List<RouteVO> routeList = menuService.listRoutes(roles);
return Result.success(routeList);
}
@@ -106,6 +109,5 @@ public class SysMenuController {
return Result.judge(result);
}
}

View File

@@ -1,9 +1,9 @@
package com.youlai.system.mapper;
/**
* 菜单持久接口
/*
* 菜单 访问
*
* @author haoxr
* @author Ray
* @since 2022/1/24
*/
@@ -18,6 +18,6 @@ import java.util.Set;
@Mapper
public interface SysMenuMapper extends BaseMapper<SysMenu> {
List<RouteBO> listRoutes();
List<RouteBO> listRoutes(Set<String> roles);
}

View File

@@ -68,11 +68,6 @@ public class RouteBO {
*/
private String redirect;
/**
* 拥有路由的权限
*/
private List<String> roles;
/**
* 【目录】只有一个子路由是否始终显示(1:是 0:否)
*/

View File

@@ -46,9 +46,6 @@ public class RouteVO {
@Schema(description = "是否隐藏(true-是 false-否)", example = "true")
private Boolean hidden;
@Schema(description = "拥有路由权限的角色编码", example = "['ADMIN','ROOT']")
private List<String> roles;
@Schema(description = "【菜单】是否开启页面缓存", example = "true")
@JsonInclude(JsonInclude.Include.NON_NULL)
private Boolean keepAlive;

View File

@@ -9,6 +9,7 @@ import com.youlai.system.model.vo.MenuVO;
import com.youlai.system.model.vo.RouteVO;
import java.util.List;
import java.util.Set;
/**
* 菜单业务接口
@@ -39,7 +40,7 @@ public interface SysMenuService extends IService<SysMenu> {
/**
* 获取路由列表
*/
List<RouteVO> listRoutes();
List<RouteVO> listRoutes( Set<String> roles);
/**
* 修改菜单显示状态

View File

@@ -141,9 +141,13 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
* 获取路由列表
*/
@Override
@Cacheable(cacheNames = "menu", key = "'routes'")
public List<RouteVO> listRoutes() {
List<RouteBO> menuList = this.baseMapper.listRoutes();
public List<RouteVO> listRoutes(Set<String> roles) {
if (CollectionUtil.isEmpty(roles)) {
return new ArrayList<>();
}
List<RouteBO> menuList = this.baseMapper.listRoutes(roles);
return buildRoutes(SystemConstants.ROOT_NODE_ID, menuList);
}
@@ -193,7 +197,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
RouteVO.Meta meta = new RouteVO.Meta();
meta.setTitle(routeBO.getName());
meta.setIcon(routeBO.getIcon());
meta.setRoles(routeBO.getRoles());
meta.setHidden(StatusEnum.DISABLE.getValue().equals(routeBO.getVisible()));
// 【菜单】是否开启页面缓存
if (MenuTypeEnum.MENU.equals(routeBO.getType())