Ibz机构权限

来自ling
跳转至: 导航搜索

下级数据sql判断

  • MDCtrlHandlerBase fillDEDataSetFetchDataRange
  • DEDataSetFetchContext enableOrgDRCond
  • T_SRFLOGINACCOUNT 登录账户
  • T_SRFORG 机构
  • T_SRFORGSECTOR 部门
  • T_SRFORGSECUSER 登录账户与机构,部门关系
 select count(*) as TOTALROW from (SELECT t1.* FROM [T_EIT_MD_FA] t1  
 LEFT JOIN T_SRFORG t11 ON t1.ORG_ID_DATA = t11.ORGID   INNER JOIN T_SRFORG o1  
 ON  t1.[ORG_ID_DATA] = o1.ORGID  WHERE (( o1.ORGID = '7D1391F0-1DF9-49A9-913C-4F1951576CD0'  OR  INSTR(o1.LEVELCODE,'001') = 1 ))) m1

没有走任何权限逻辑

表现为以下逻辑直接跳过

if (this.isEnableUserDR() || this.isEnableOrgDR() || this.isEnableSecDR() || this.isEnableSecBC() || !StringHelper.isNullOrEmpty(this.getCustomDRMode()) ||    !StringHelper.isNullOrEmpty(this.getCustomDRMode2())) {

ibz上配置这个表启用数据权限

  • 01.PNG

表格视图点击进入,选择双击进入高亮处

  • 02.PNG

更改高亮处为XXX(启用权限)

显示了平级数据

  • 检查当前用户是否管理员能看所有数据
  • 检查表是否没有开启数据权限过滤
  • 检查查询的sql是否类似
SELECT t1.org_id_data,o1.LEVELCODE, t1.* FROM [T_EIT_CLIENT_MD_TB] t1
LEFT JOIN T_SRFORG t11 ON t1.ORG_ID_DATA = t11.ORGID 
INNER JOIN T_SRFORG o1  ON  t1.[ORG_ID_DATA] = o1.ORGID 
WHERE (( o1.ORGID = '7D1391F0-1DF9-49A9-913C-4F1951576CD0' )
OR ( CHARINDEX('001',o1.LEVELCODE) = 1 )) order by t1.org_id_data
  • 查询当前用户的id
 select * from T_SRFLOGINACCOUNT t1 where t1.LOGINACCOUNTNAME='qfjeremy';
  • 查询用户的机构部门等数据权限信息
select t.orgid ,t.ORGSECTORID,t.* from T_SRFORGSECUSER t where t.ORGUSERNAME='qfjeremy';
  • 检查机构的levelcode
 select ORGID,levelcode,* from T_SRFORG t
  • 检查平级机构的levelcode

1<>1

  • 这个人所在角色对这个表没有访问权限
  • 配置数据权限并且分配给角色

Ibz data security02.PNG

1 = 1

  • 业务数据对象能力中全部数据为"是",或者为超级管理员,改为以下形式
  • 1.PNG