即席查询是基于数据源或是业务主题来创建的。
所以其根据来源不同需设置不同的数据权限,比如即席查询基于数据源创建,则需对其数据源进行数据权限设置。若基于业务主题创建,则需对其业务主题创建数据权限。
下面我们演示基于业务主题创建的即席查询如何设置数据权限。
1、 设置系统用户和机构的关系。
此处我们在创建用户的时候,设置其所属组即是其机构。即我们根据用户所属组的信息可以得到其机构信息。
如下图,我们设置用户test的属于组"华东"。
2、 设置数据权限。建立数据库表中的机构字段和当前用户的关联关系。
在需要设置数据权限的业务主题的更多操作菜单中选择 设置数据权限,则会进入数据权限设置界面。
在右侧设置区内,选择业务主题对应数据源下的"顾客表"表右键选择 设置 按钮,则右侧会出现数据权限设置界面。
从左侧拖拽"顾客表"表中的"区域"字段到表达式区域,然后输入等于号,再从左侧资源树下拖拽系统函数获取当前用户默认值名称CurrentUserDefaultDepartmentName()到表达式区域。如下图:
上面例子是简单的例子,使用系统内置的函数,取当前用户所属机构与数据库字段进行关联来控制权限。在实际的应用中,通常是通过用户属性功能,从数据库的用户权限配置表中,根据当前用户名获取对应能获取的数据。
例如,新建一个用户属性叫做"获取当前用户访问权限”,此用户属性的含义是根据用户名获得了用户所在的部门。它的表达式是:select depart from departmentTable where user =CurrentUserName( )。用户属性设置如下图所示:
在数据权限设置中,将字段与此用户属性进行关联。
注意:用户属性的返回值实际上是SQL语句的where部分,如果用户属性返回多个值。这时候,就不能用"=",而应该用"in"。例如:数据行权限管理,表达式是:发货区域 =获取用户权限 ,改成:发货区域 in (获取用户权限)。
数据权限设置如下所示:
3、 (可选) 设置应用范围,此处我们设置管理员用户不受此数据权限的影响。
我们在数据权限的范围定义区域,选择用户按钮,则会弹出 用户范围 对话框。我们从左侧可选用户列表中选中"管理员"用户到被选择用户区域。
设置完成后点击 保存 按钮,则完成对数据源数据权限的设置。设置数据权限的表会有锁的显示标注。
4、 效果演示,此处我们分别使用管理员用户和test用户查看效果。
管理员用户:使用管理员用户登录选择“订单主题”创建即席查询,并选择"顾客"表中的字段。
因管理员用户不在数据权限控制范围内,因此其对应的即席查询不受数据权限控制。
test用户:使用test用户登录选择“订单主题”创建即席查询,并选择"顾客"表中的字段。
因为test用户所属组为"华东"。则我们通过数据权限会会区域字段中的华东值进行限制。
查看SQL。可以发现其SQL语句把通过函数获取到的用户所属组名称放到where条件。