Просмотр исходного кода

非超级管理员不能添加父id为0的机构

徐玉祥 4 лет назад
Родитель
Сommit
2dbacd7d16

+ 14 - 8
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/org/service/impl/SysOrgServiceImpl.java

@ -159,14 +159,20 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
        //获取父id
        Long pid = sysOrgParam.getPid();
        boolean superAdmin = LoginContextHolder.me().isSuperAdmin();
        //如果登录用户不是超级管理员,且新增的机构父id不是0,则进行数据权限校验
        if (!superAdmin && !pid.equals(0L)) {
            List<Long> dataScope = sysOrgParam.getDataScope();
            //数据范围为空
            if (ObjectUtil.isEmpty(dataScope)) {
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            } else if(!dataScope.contains(pid)) {
                //所添加的组织机构的父机构不在自己的数据范围内
        //如果登录用户不是超级管理员
        if (!superAdmin) {
            //如果新增的机构父id不是0,则进行数据权限校验
            if(!pid.equals(0L)) {
                List<Long> dataScope = sysOrgParam.getDataScope();
                //数据范围为空
                if (ObjectUtil.isEmpty(dataScope)) {
                    throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
                } else if(!dataScope.contains(pid)) {
                    //所添加的组织机构的父机构不在自己的数据范围内
                    throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
                }
            } else {
                //如果新增的机构父id是0,则根本没权限,只有超级管理员能添加父id为0的节点
                throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
            }
        }