3.6K Star 11K Fork 4.4K

卓源软件 / JeeSite 4.2

数据权限问题

Backlog
振远  Opened this issue

该问题是怎么引起的?

jeesite4.0.8版本,想实现业务功能:机构A下有小机构S1...Sn,A有经理角色,可以看A下所有数据;S1有负责人角色和基层员工,负责人可以看S1下所有数据,基层员工看自己的数据,Sn同理。

重现步骤

按理解已完成开发如下:
一、entity添加如下:
@JoinTable(type= JoinTable.Type.LEFT_JOIN, entity= UserRole.class, attrName="userRole", alias="u8",
on="u8.user_code = a.project_manager", columns={
@Column(name="role_code", label="角色编码", attrName = "roleCode"),
}),
}, extWhereKeys="dsf", orderBy="a.id ASC"

二、Service添加如下:
@加贝
public void addDataScopeFilter(KlbPmProjectSystem entity) {
entity.getSqlMap().getDataScope().addFilter("dsf","Role",
"u8.role_code", DataScope.CTRL_PERMI_HAVE);
}
三、Controller如下:
/**
* 查询列表数据
*/
@RequiresPermissions("ps:project:PmProjectInfo:view")
@RequestMapping(value = "listData")
@ResponseBody
public Page listData(PmProjectSystem PmProjectSystem, HttpServletRequest request, HttpServletResponse response) {
PmProjectSystem.setPage(new Page<>(request, response));
PmProjectSystemService.addDataScopeFilter(PmProjectSystem);
Page page = PmProjectSystemService.findPage(PmProjectSystem);
return page;
}
四、权限管理->角色管理,添加经理角色,数据权限为“本部门数据”;添加负责人角色,数据权限为“本部门数据”;添加基层员工角色,数据权限不设置(按文档理解应该是只能看本人)
五、组织管理->机构管理,建立机构A,下面是经理、机构S1...机构Sn,机构S1...Sn下有机构“负责人”
六、组织管理->用户管理,机构“经理”下添加经理用户,机构“负责人”下添加负责人用户,机构S1...Sn下添加基层人员用户。
七、不同用户调用listData功能界面,没有得到想要的结果。

报错信息

看查询语句,比权限控制前添加了
AND EXISTS (SELECT 1 FROM js_sys_user_role WHERE user_code = 'fuzeren_dvlv' AND role_code = u8.role_code)

如果用户分配了角色,我理解这个一直是成立的,不是我想要的结果。如果把权限控制由Role改到Office,管理系统中角色等不做调整的情况下,sql语句会增加AND (1=2)。

不知道想达成我想要的权限控制,应该怎么做,看官方文档看的云里雾里的 :weary:

total 1 participants

Comments (0)

Sign in to comment

Assignees
Labels
Not set
Projects
Milestones
Branches
Planed to start
Not set
Planed to end
Not set
Top level
Priority
Java
1
https://gitee.com/thinkgem/jeesite4.git
git@gitee.com:thinkgem/jeesite4.git
thinkgem
jeesite4
JeeSite 4.2

Search