【BOS基础系统_权限】权限项依赖关系影响原创
金蝶云社区-汪伟康
汪伟康
18人赞赏了该文章 852次浏览 未经作者许可,禁止转载编辑于2021年10月16日 15:46:31

【问题】:移除已分配用户的权限(如某单据查看权限),提示授权成功,实际没有删除

该问题涉及到权限的依赖关系,且该关系是对应 业务开发在开发该权限项的时候定义的


1、权限项依赖表 T_PM_PERMDEPENDENCY

2、查询你要操作(移除分配,移除禁用...)的权限项ID,根据长编码找到对应的权限项,拿到FID, 该权限叫A(可替换权限项名称,如下:付款单提交)

SELECT FID,FNUMBER ,FALIAS_L2 ,FLONGNUMBER FROM T_PM_PERMITEM where FALIAS_L2 = '付款单提交' AND FISLEAF = 1

3、用FID查询该权限项依赖哪些权限(替换{fid})

SELECT * FROM T_PM_PERMITEM where FID in (SELECT fdependencyid FROM T_PM_PERMDEPENDENCY where fid = '{FID}')

4、步骤2查询出来的就是权限A依赖的权限项。(如:付款单提交 权限 依赖 付款单新增,付款单修改,付款单查看 权限


当前结论是:

1、想分配权限A,就也会分配权限A依赖的权限

2、想禁用权限A依赖的权限,就也会禁用权限A

3、想移除已分配的权限A依赖的权限,则权限A也会被移除(较老的基础系统补丁问题:由于已分配权限A,所以会移除不成功,需要先移除已分配的权限A)

4、想移除已禁用的权限A,会将A依赖的且已禁用的权限项也移除(较老的基础系统补丁bug:移除会不成功,需要先移除已禁用权限A依赖的权限,目前82,85权限最新补丁已解决)


注:如果权限项名称不重复的权限项可以用下面这条sql直接查

--查看某个权限项依赖哪些权限项sql(替换权限项名称,如下:付款单提交)    

SELECT
        * 
    FROM
        T_pm_permitem 
    where
        fid in (
            SELECT
                fdependencyid 
            FROM
                T_PM_PERMDEPENDENCY 
            WHERE
                fid = (
                    SELECT
                        FID  
                    FROM
                        T_PM_PERMITEM 
                    WHERE
                        FALIAS_L2 = '付款单提交' 
                        and fisleaf = 1
                )
            )


 


赞 18