【问题】:移除已分配用户的权限(如某单据查看权限),提示授权成功,实际没有删除
该问题涉及到权限的依赖关系,且该关系是对应 业务开发在开发该权限项的时候定义的
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 ) )