电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

【BOS基础系统_权限】用户组织权限相关查询SQL

来源:金蝶云社区作者:金蝶2024-09-167

【BOS基础系统_权限】用户组织权限相关查询SQL

----------------- 用户权限查询相关sql汇总-------------------



背景:EAS产品权限体系内部有一些逻辑处理,前台无法清楚详细的展示每个用户在每个组织下的'实际'权限信息。因此篇文章是根据用户权限体系内部逻辑整理的各种常用查询sql来帮助大家学习并了解用户组织权限的实际关系。


  • 请用第三方工具连接数据库来执行以下sql,因为EAS查询分析器可能不能正常识别以下sql格式,查询会报错,实际sql无问题,且查询分析器最多只能展示6500条数据。

  • 如需格式化sql,可访问:https://tool.oschina.net/codeformat/sql

  • 也可直接取附件【用户组织权限sql】中的sql

首先这里放上客户经常想要的sql:

--用户,权限(包含角色分配的权限),组织关系查询。(查看所有用户在哪些组织下有哪些功能权限)

--注意:如果组织名称为系统管理单元,是代表该用户在所有组织下有该权限,系统管理单元 并非 真实的组织,只是为了方便验证权限的一个虚拟值

--注意:权限类型 10:操作权; 20:禁止权; 30:转授权

SELECT u.fnumber AS 用户名, bu.fnumber AS 组织编码, bu.fname_l2 AS 组织名称, pm.falias_l2 AS 权限项名称, pm.flongnumber AS 权限项长编码
	, s.fpermtype AS 权限类型
FROM (
	SELECT fuserid, forgid, fpermitemid, fpermtype
	FROM (
		SELECT fowner AS fuserid, forgid, fpermitemid, fpermtype
		FROM t_pm_userorgperm
		UNION ALL
		SELECT a.fuserid, a.forgid, b.fpermitemid, b.fpermtype
		FROM t_pm_userroleorg a
		INNER JOIN  t_pm_roleperm b ON a.froleid = b.froleid
	) x
) s
	INNER JOIN T_pm_user u ON s.fuserid = u.FID
	INNER JOIN T_pm_permitem pm ON s.fpermitemid = pm.FID
	INNER JOIN T_org_baseunit bu ON s.forgid = bu.FID


--查询 没有删除没有禁用的用户在哪些组织下有哪些功能权限

SELECT
        u.fnumber AS 用户名,
        bu.fnumber AS 组织编码,
        bu.fname_l2 AS 组织名称,
        pm.falias_l2 AS 权限项名称,
        pm.flongnumber AS 权限项长编码  ,
        s.fpermtype AS 权限类型      
    FROM
        (  SELECT
            fuserid,
            forgid,
            fpermitemid,
            fpermtype           
        FROM
            (   SELECT
                fowner AS fuserid,
                forgid,
                fpermitemid,
                fpermtype                
            FROM
                t_pm_userorgperm                
            UNION
            ALL   SELECT
                a.fuserid,
                a.forgid,
                b.fpermitemid,
                b.fpermtype                
            FROM
                t_pm_userroleorg a                
            INNER JOIN
                t_pm_roleperm b                      
                    ON a.froleid = b.froleid               
            ) x ) s   
INNER JOIN
    T_pm_user u          
        ON s.fuserid = u.FID   
INNER JOIN
    T_pm_permitem pm          
        ON s.fpermitemid = pm.FID   
INNER JOIN
    T_org_baseunit bu          
        ON s.forgid = bu.FID  
where
    s.fuserid in (
        SELECT
            FID  
        FROM
            t_pm_user 
        where
            FISDELETE = 0 
            and FFORBIDDEN = 0 
    )


其他常用sql

--权限类型 10:操作权; 20:禁止权; 30:转授权

--1、查看所有用户在哪些组织下直接分配了哪些权限

SELECT u.FNUMBER AS "用户名", bu.FNUMBER AS "组织编码", p.FNUMBER AS "权限项编码", p.FALIAS_L2 AS "权限项别名", uop.FPERMTYPE AS "权限类型"
FROM t_pm_userorgperm uop
	INNER JOIN t_pm_user u ON uop.FOWNER = u.FID
	INNER JOIN t_pm_permitem p ON uop.FPERMITEMID = p.FID
	INNER JOIN t_org_baseunit bu ON UOP.FORGID = BU.FID
WHERE u.FIsDelete = 0


--2、查看所有用户在哪些组织下通过角色分配了哪些权限

SELECT u.FNUMBER AS 用户名, r.FNUMBER AS 角色编码, bu.FNUMBER AS 组织单元编码, pm.falias_l2 AS 权限项名称, pm.flongnumber AS 权限项长编码
	, RP.fpermtype AS 权限类型
FROM T_PM_USERROLEORG uro
	INNER JOIN T_PM_USER u ON URO.FUSERID = U.FID
	INNER JOIN T_PM_ROLE r ON URO.FROLEID = R.FID
	INNER JOIN T_ORG_BASEUNIT bu ON URO.FORGID = BU.FID
	INNER JOIN T_PM_ROLEPERM RP ON URO.FROLEID = RP.FROLEID
	INNER JOIN T_PM_PERMITEM pm ON RP.FPERMITEMID = pm.FID
WHERE u.FIsDelete = 0


--3、查询这个用户  在哪些组织下 拥有哪些操作权限 (替换用户id)

SELECT fowner AS fuserid, forgid, fpermitemid, fpermtype
FROM t_pm_userorgperm
WHERE fowner IN ('用户id')
UNION ALL
SELECT fuserid, forgid, fpermitemid, b.fpermtype
FROM t_pm_userroleorg a
JOIN t_pm_roleperm b ON a.froleid = b.froleid
WHERE fuserid IN ('用户id')


--4、查看哪些用户在哪些组织下拥有该操作权限(4.1,4.2查出来的都有效)

--4.1、查看哪些用户在哪些组织下拥有该操作权限(用户组织权限表,替换权限项编码,如何查询权限项编码参考节点6)

SELECT
FOWNER,
FORGID
FROM
T_PM_USERORGPERM
WHERE
FPERMITEMID IN (
SELECT
FID
FROM
T_pm_permitem
WHERE
FNUMBER IN (
'权限项编码'
)
)
AND FPermType = 10


--4.2查看哪些用户在哪些组织下拥有该操作权限(用户组织角色表,替换权限项编码,如何查询权限项编码参考节点6)

SELECT
FUserID,
FORGID,
FROLEID
FROM
t_pm_userroleorg
WHERE
FRoleID IN (
SELECT
FRoleID
FROM
T_PM_RolePerm
WHERE
FPermItemID IN (
SELECT
FID
FROM
T_pm_permitem
WHERE
FNUMBER IN (
'权限项编码'
)
)
AND F

【BOS基础系统_权限】用户组织权限相关查询SQL

----------------- 用户权限查询相关sql汇总-------------------背景:EAS产品权限体系内部有一些逻辑处理,前台无法清楚详细的展示每个用...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信