【BOS基础系统_权限】权限项依赖关系影响

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

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

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                )            )

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注