Wizzercn / NutzWk

WK系列开发框架-V1至V5 Java开源企业级开发框架(单应用/微服务/分布式)
https://budwk.com
Apache License 2.0
1.62k stars 637 forks source link

角色分配权限的地方有点小问题 #116

Closed herexu closed 5 years ago

herexu commented 5 years ago

1、角色已经创建好 2、分配权限,则获取的是该角色的权限,应该获取的是当前管理员有的权限,跟该角色拥有的权限进行合并进行展示 不然的话,分配权限只会越分配越少,到最后只能重新新建角色 `//加载角色下所有菜单,新建角色 @At("/menuRole/?") @Ok("json") @RequiresPermissions("sys.manager.role") public Object menuRole(String roleId, HttpServletRequest req) { try { List userList = sysRoleService.getMenusAndButtons(roleId); List list; if (shiroUtil.hasRole("sysadmin")) { list = sysMenuService.query(Cnd.orderBy().asc("location").asc("path")); } else { // 根据当前人的权限去处理 // list = sysRoleService.getMenusAndButtons(roleId); list = sysUserService.getMenusAndButtons(StringUtil.getPlatformUid()); }

        NutMap menuMap = NutMap.NEW();
        for (Sys_menu unit : list) {
            List<Sys_menu> list1 = menuMap.getList(unit.getParentId(), Sys_menu.class);
            if (list1 == null) {
                list1 = new ArrayList<>();
            }
            list1.add(unit);
            menuMap.put(unit.getParentId(), list1);
        }
        List<String> cmenu = new ArrayList<>();
        for (Sys_menu menu : userList) {
            cmenu.add(menu.getId());
        }
        return Result.success().addData(NutMap.NEW().addv("menu", getTree(menuMap, "")).addv("cmenu", cmenu));
    } catch (Exception e) {
        return Result.error();
    }
}

`

Wizzercn commented 5 years ago

按理说权限应该是越分越小的,比如当前用户有两个角色,他分配给了下级用户,但是如果上级撤销了他拥有的一个角色权限,那下级用户拥有的权限不是大于他自己了么。

herexu commented 5 years ago

按理说权限应该是越分越小的,比如当前用户有两个角色,他分配给了下级用户,但是如果上级撤销了他拥有的一个角色权限,那下级用户拥有的权限不是大于他自己了么。

分配给他人的权限的范围,不会比自己大,其他人的权权限<=自己的权限 所以在修改权限的时候,应该也是要把自己全部的权限全部拿出来,勾选上该角色已有的权限 现在是修改角色权限是,只展示该角色已有的权限,如果我去掉某个权限,回头又想给他补上就补不上了,按照现在的系统,只能重新建个角色