页面和权限规则调整
This commit is contained in:
+12
-1
@@ -10,12 +10,15 @@ import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.system.enums.permission.MenuIdEnum;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Mapper
|
||||
public interface AuthConvert {
|
||||
@@ -31,10 +34,18 @@ public interface AuthConvert {
|
||||
}
|
||||
|
||||
default AuthPermissionInfoRespVO convert(AdminUserDO user, List<RoleDO> roleList, List<MenuDO> menuList) {
|
||||
Set<String> permissions = CollectionUtils.convertSet(menuList, MenuDO::getPermission);
|
||||
// 兼容了一个菜单多个权限。包含逗号分为多块写入
|
||||
menuList.forEach(menuDO -> {
|
||||
if (menuDO.getPermission().contains(",")){
|
||||
permissions.remove(menuDO.getPermission());
|
||||
permissions.addAll( Sets.newHashSet(Arrays.asList(menuDO.getPermission().split(","))));
|
||||
}
|
||||
});
|
||||
return AuthPermissionInfoRespVO.builder()
|
||||
.user(AuthPermissionInfoRespVO.UserVO.builder().id(user.getId()).nickname(user.getNickname()).avatar(user.getAvatar()).build())
|
||||
.roles(CollectionUtils.convertSet(roleList, RoleDO::getCode))
|
||||
.permissions(CollectionUtils.convertSet(menuList, MenuDO::getPermission))
|
||||
.permissions(permissions)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
+9
-1
@@ -95,7 +95,15 @@ public class MenuServiceImpl implements MenuService {
|
||||
ImmutableMultimap.Builder<String, MenuDO> permMenuCacheBuilder = ImmutableMultimap.builder();
|
||||
menuList.forEach(menuDO -> {
|
||||
menuCacheBuilder.put(menuDO.getId(), menuDO);
|
||||
permMenuCacheBuilder.put(menuDO.getPermission(), menuDO);
|
||||
// 兼容了一个菜单多个权限。包含逗号分为多块写入
|
||||
if (menuDO.getPermission().contains(",")){
|
||||
Arrays.asList(menuDO.getPermission().split(",")).forEach(s -> {
|
||||
permMenuCacheBuilder.put(s, menuDO);
|
||||
});
|
||||
}else {
|
||||
permMenuCacheBuilder.put(menuDO.getPermission(), menuDO);
|
||||
}
|
||||
|
||||
});
|
||||
menuCache = menuCacheBuilder.build();
|
||||
permissionMenuCache = permMenuCacheBuilder.build();
|
||||
|
||||
+4
@@ -317,6 +317,10 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
if (ArrayUtil.isEmpty(permissions)) {
|
||||
return true;
|
||||
}
|
||||
//如果带角色字段 也过
|
||||
if (hasAnyRoles(permissions)){
|
||||
return true;
|
||||
}
|
||||
|
||||
// 获得当前登录的角色。如果为空,说明没有权限
|
||||
Set<Long> roleIds = SecurityFrameworkUtils.getLoginUserRoleIds();
|
||||
|
||||
Reference in New Issue
Block a user