Browse Source

getObjectAuth判断错误

shiqian 4 years ago
parent
commit
b7bb1956a1

+ 3 - 1
boman-api/boman-domain/src/main/java/com.boman.domain/dto/RoleMenuDto.java

@@ -23,7 +23,9 @@ public class RoleMenuDto {
     public static String getBtnFromPerms(String perms) {
         // sys_user:A
         String[] split = perms.split(":");
-        assert split.length == 2;
+        if (split.length != 2) {
+            throw new IllegalArgumentException("menu对应的perms未配置");
+        }
         // A
         return split[1];
     }

+ 15 - 2
boman-modules/boman-system/src/main/java/com/boman/system/service/impl/SysRoleMenuServiceImpl.java

@@ -7,6 +7,7 @@ import com.boman.system.domain.SysRoleMenu;
 import com.boman.system.mapper.SysRoleMenuMapper;
 import com.boman.system.service.ISysMenuService;
 import com.boman.web.core.api.RemoteObjService;
+import com.google.common.collect.Lists;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -76,14 +77,26 @@ public class SysRoleMenuServiceImpl implements ISysRoleMenuService{
     }
 
     /**
-     * 功能描述: 根据前台传过来的head中判断是否包含childList中perms的btn,返回包含的
+     * 功能描述: 根据前台传过来的head中判断是否包含childList中perms的btn,返回包含的,但是其中有一些perms未配置
      *
      * @param head     A M D......
      * @param menuList menuList
      * @return java.util.List<com.boman.system.api.domain.SysMenu>
      */
     private List<SysMenu> buildBtnByHead(List<String> head, List<SysMenu> menuList) {
-        return filter(menuList, menu -> head.contains(RoleMenuDto.getBtnFromPerms(menu.getPerms())));
+        List<SysMenu> result = Lists.newArrayListWithCapacity(menuList.size());
+        for (SysMenu menu : menuList) {
+            String perms = menu.getPerms();
+            if (isEmpty(perms)) {
+                continue;
+            }
+
+            if (head.contains(RoleMenuDto.getBtnFromPerms(menu.getPerms()))) {
+                result.add(menu);
+            }
+        }
+
+        return result;
     }
 
     /**

+ 1 - 1
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -302,7 +302,7 @@ public class TableServiceCmdService {
         }
 
         // 权限
-        if (checkAuthGetObject (genTable, id)) {
+        if (BooleanUtils.isFalse(checkAuthGetObject (genTable, id))) {
             throw new NoSuchFunctionException("不好意思,您无权限操作该条数据");
         }