【BOS基础系统_权限】授权规则被引用无法删除

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

【BOS基础系统_权限】授权规则被引用无法删除

问题背景:客户想删除某授权规则,会提示:“授权规则被引用无法删除”。但是由于用户组织角色权限分配很多,从前台一个个找很难找到是在哪里被分配的。并且由于授权规则T_pm_rule表的fid不是直接被用户组织权限表T_pm_userorgperm和角色权限表t_pm_rolerperm直接字段关联的,所以通过查询分析器全文检索也没法查到具体引用的表和数据。


请先参考该地址格式化以下sql再使用:https://tool.oschina.net/codeformat/sql


下面介绍查询逻辑和sql:


--1、查询出该授权规则的fid
SELECT fid,FNUMBER ,FNAME_L2  FROM T_pm_rule where FNUMBER = '此处替换为授权规则的编码'

--2.1、查询出引用授权规则的用户组织权限(T_PM_UserOrgPerm)
SELECT *
FROM T_PM_UserOrgPerm
WHERE FRuleStructure IS NOT NULL
	AND FRuleStructure LIKE '%此处替换授权规则fid%'

--2.2、查询出引用授权规则的角色权限(T_PM_RolePerm)
SELECT *
FROM T_PM_RolePerm
WHERE FRuleStructure IS NOT NULL
	AND FRuleStructure LIKE '%此处替换授权规则fid%'


如果确认该条授权规则确实想要删除,那即可把上述2.1,2.2查出来的数据删除即可,记得删除之前建议先备份表数据。

例如:

--备份用户组织权限表数据
select * into T_PM_UserOrgPerm_back20210724 from T_PM_UserOrgPerm

--备份角色权限表数据
select * into T_PM_RolePerm_back20210724 from T_PM_RolePerm



补充:

--查询该用户在哪些组织下分配了引用了该授权规则的哪些角色(替换用户fid和编码规则fid)

SELECT u.fnumber AS 用户名, bu.fnumber AS 组织编码, r.fnumber AS 角色编码
FROM t_pm_userroleorg uro
INNER JOIN t_pm_user u ON uro.fuserid = u.fid 
INNER JOIN t_org_baseunit bu ON uro.forgid = bu.fid 
INNER JOIN t_pm_role r ON uro.froleid = r.fid 
WHERE uro.FROLEID IN (
		SELECT froleid
		FROM T_PM_RolePerm RolePerm
			INNER JOIN T_PM_PermItem PermItem ON PermItem.FID = RolePerm.FPermItemID 
		WHERE RolePerm.FRuleStructure IS NOT NULL
			AND RolePerm.FRuleStructure LIKE '%此处替换编码规则fid%'
	)
	AND uro.fuserid = '此处替换用户fid'


--查询所有用户在哪些组织下直接通过分配权限绑定了哪些授权规则(直接分配权限绑定了授权规则)

SELECT u.fnumber AS 用户名, bu.fnumber AS 组织编码, p.falias_l2 AS 权限项名称, p.FLONGNUMBER AS 权限项长编码, uop.FRULEEXPR AS 授权规则
FROM t_pm_userorgperm uop
INNER JOIN t_pm_user u ON uop.FOWNER = u.fid 
INNER JOIN t_org_baseunit bu ON uop.forgid = bu.fid 
INNER JOIN T_PM_PermItem p ON p.fid = uop.FPERMITEMID 
WHERE uop.FRULEEXPR IS NOT NULL
AND uop.FPERMTYPE = 10


--查询所有用户在哪些组织下分配了绑定了授权规则的权限的哪些角色(通过角色分配绑定了授权规则的权限)

SELECT u.fnumber AS 用户名, bu.fnumber AS 组织编码, r.fnumber AS 角色编码, p.falias_l2 AS 权限项名称, p.FLONGNUMBER AS 权限项长编码
, rp.FRULEEXPR AS 授权规则
FROM t_pm_userroleorg uro
INNER JOIN t_pm_user u ON uro.fuserid = u.fid 
INNER JOIN t_org_baseunit bu ON uro.forgid = bu.fid 
INNER JOIN t_pm_role r ON uro.froleid = r.fid 
INNER JOIN T_PM_RolePerm rp ON rp.FROLEID = uro.FROLEID 
INNER JOIN T_PM_PermItem p ON p.fid = rp.FPERMITEMID 
WHERE rp.FRULEEXPR IS NOT NULL
AND rp.FPERMTYPE = 10
ORDER BY u.FNUMBER


【BOS基础系统_权限】授权规则被引用无法删除

问题背景:客户想删除某授权规则,会提示:“授权规则被引用无法删除”。但是由于用户组织角色权限分配很多,从前台一个个找很难找到是在哪...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息