Foxnic-Web 中数据权限的使用

Foxnic-Web 中数据权限的使用

概述

  Foxnic-Web 中所指的数据权限是指用户能够查询到的数据行的范围。在系统实施时,为了让不同的角色可以看到不同的数据,可以通过配置数据权限的方式灵活控制查询范围。下面我们来了解一下 Foxnic-Web 是如何配置和使用数据权限的。

注册环境变量

  环境变量在数据权限内部进行逻辑判断和SQL的变量代入时使用。环境变量可分为全局环境变量和本地环境变量。全局环境变量注册后,可在整个应用内部使用。本地环境变量注册后,仅在对应的模块范围内使用,本地环境变量通常与 Po 来划分,即在对应的 Po 查询 Service 中可以使用。 image 本地环境变量

配置权限规则

  1)配置数据权限规则 <br />  打开数据权限规则的基本信息,如图所示:<br />image

  代码: 数据权限代码,全局唯一,会在 java 代码中代入,以指定使用哪个数据权限规则。<br />PO类型: 用于指定查询的对象,Po 类型的完全限定名。

  2)配置范围与规则树 <br />  在系统的找到,数据权限,并进行配置:<br />image

  以“我的办结流程为例”,从字面理解,流程查询范围框定在<br />  1、流程状态必须是已经结束的;<br />  2、当前登录人是流程审批人;

  上图中只有一个范围项,那么就只有一个Select语句,当有多个范围项时,数据权限SQL构建器会生成多个Select语句,并把他们 union 起来后执行。<br />  点击范围的“条件”按钮,打开范围配置,并中选择一个条件节点,如图所示:<br /> image <br />  条件节点的属性包括:<br />  名称: 条件节点的名称<br />  生效: 控制当前条件节点是否生效,即在生成SQL语句时,是否拼接。<br />  应用条件: SpringEL表达式,要求返回一个逻辑值,如果改表达式在运行时返回 true 则当前条件节点拼接入最终的查询语句,否则不进入最终的查询语句。相 关变量可以通过“变量”黑色小按钮进行选择。选择的范围即默认的上下文环境以及手动注册的上下文环境。<br />  测试Vo值: 指定Vo值(JSON Object 字符串),模拟前端传入的参数,点击黑色按钮“测试”测试刚刚设置的应用条件SpringEL表达式。<br />  前置逻辑: 当前表达式出现在查询语句时使用的条件逻辑是 or 或 and。<br />  目标属性: 即条件表达式中用于过滤的属性字段,如此处我们要求最终查询语句中出现 status='passed' 的条件表达式,那么目标属性就是 status。所以,一个条件节点仅是对一个目标属性的配置,如果要配置多个目标属性的复杂查询,则需要使用条件逻辑树。<br />  条件类型: 条件表达式的判断方式,SQL中的比较运算符。<br />  变量: 目标属性通过比较运算符进行=条件判断的值,要求为 JSON Array 字符串。支持常量和环境变量,如果是环境变量,需要使用 ${} 表示里面的内容是一个SpringEL 表达式,如 ["${getSession().getActivatedEmployeeId()}"]。<br />  备注: 自定义的备注信息。

  逻辑节点分两种类型,复合节点和叶子节点,复合用于组合叶子节点间的优先级,复合节点内的节点在最终的SQL语句中将被一个括号括起来。

例如,本例中最终生成的条件类似以下结构:

status='passed' and (approverEmployeeId='xxx' or approverRoleeId='xxx')

使用数据权限

  配置数据权限规则以后,需要在代码中指定使用某个数据权限规则。<br />image

  每一个数据权限规则,都需要设置一个代码,这个代码在程序中作为参数传入即可。

  使用 chs_instance_joined 数据权限时,输出的SQL语句如下:

SELECT * FROM ( select * from ( -- 第一个范围 ( select t.* from chs_change_instance t WHERE ( ( t.deleted= 0 AND t.tenant_id= 'T001' )) AND ( ( ( t.drafter_id = '558321538131034112' ) AND ( t.drafter_id = '558321538131034112' ))) ) union -- 第二个范围 ( select t.* from chs_change_instance t WHERE ( ( t.deleted= 0 AND t.tenant_id= 'T001' )) AND ( ( ( exists( SELECT 1 FROM (select * from chs_change_approver WHERE ( approver_type = 'employee' ) AND ( deleted= 0 ) ) t_0 WHERE t.id = t_0.instance_id AND ( t_0.approver_id = '558321538131034112' ) )) OR ( exists( SELECT 1 FROM (select * from chs_change_approver WHERE ( approver_type = 'busi_role' ) AND ( deleted= 0 ) ) t_0 WHERE t.id = t_0.instance_id AND ( t_0.approver_id IN ( '498946989573017600' )) )))) ) -- 分页以及排序 ) t ORDER BY t.create_time DESC ) PAGED_QUERY LIMIT 0 , 50

  使用 chs_instance_approved 数据权限时,输出的SQL语句如下:

SELECT * FROM ( -- 范围查询语句 select t.* from chs_change_instance t WHERE ( ( t.deleted= 0 AND t.tenant_id= 'T001' )) AND ( ( ( t.status = 'passed' ) AND ( ( exists( SELECT 1 FROM (select * from hrm_employee WHERE ( deleted= 0 ) AND ( tenant_id= 'T001' ) ) t_0 join (select * from chs_change_approver WHERE ( approver_type = 'employee' ) AND ( approver_type = 'employee' ) AND ( approver_type = 'employee' ) AND ( deleted= 0 ) ) t_1 on t_1.approver_id = t_0.id WHERE t.id = t_1.instance_id AND ( t_0.id = '558321538131034112' ) )) OR ( exists( SELECT 1 FROM (select * from chs_change_approver WHERE ( approver_type = 'busi_role' ) AND ( deleted= 0 ) ) t_0 WHERE t.id = t_0.instance_id AND ( t_0.approver_id IN ( '498946989573017600' )) ))))) ORDER BY t.create_time DESC -- 分页以及排序 ) PAGED_QUERY LIMIT 0 , 50

  最终,查询结果按数据权限配置的范围返回。.

<a name="VZBg5"></a>

相关项目

  https://gitee.com/LeeFJ/foxnic<br />  https://gitee.com/LeeFJ/foxnic-web<br />  https://gitee.com/lank/eam<br />  https://gitee.com/LeeFJ/foxnic-samples

官方文档

  http://foxnicweb.com/docs/doc.html

点赞
收藏

评论区

加载中...

相关推荐

java 环境配置 maven 环境配置

1、windows下Java环境的安装和配置:下载jdk并安装配置环境变量:(1)新建JAVA\_HOME环境变量,赋值为JDK的安装目录:(2)新建CLASSPATH环境变量,赋值为.;%JAVA\_HOME%\\lib\\dt.jar;%JAVA\_HOME%\\lib\\tools.jar;(3)在PATH环境变量中追加J

go mod环境搭建

前言gomod是golang最新的模块依赖管理的工具,推荐使用。go1.11通过设置环境变量GO111MODULE来决定是否启用go1.13已经默认支持,以下以1.13为例配置环境变量exportGOPROXY或exportGOPROXYexportGOPATH"/Users/XXX

Python的环境搭建和下载

Python是一个跨平台、可移植的编程语言,因此可在windows、Linux和MacOSX系统中安装使用。安装完成后,你会得到Python解释器环境,可以通过终端输入python命令查看本地是否已经按照python以及python版本。这里有一点需要注意的是,如果没有将python的安装目录添加到环境变量中,会报错(python不是内部命令或外部命

DISPLAY变量和xhost(原创)

DISPLAY在Linux/Unix类操作系统上,DISPLAY用来设置将图形显示到何处.直接登陆图形界面或者登陆命令行界面后使用startx启动图形,DISPLAY环境变量将自动设置为:0:0,此时可以打开终端,输出图形程序的名称(比如xclock)来启动程序,图形将显示在本地窗口上,在终端上输入printenv查看当前环境变量,

GOPATH

\TOC\GOPATH工作目录就是我们用来存放开发的源代码的地方,对应的就是Go里的GOPATH这个环境变量。这个环境变量指定之后,我们编译源代码等生成的文件都会放到这个目录下,GOPATH环境变量的配置参考golang环境搭建(https://www.oschina.net/action/GoToLink?urlhttps%3A%

Linux环境变量配置全攻略

Linux环境变量配置在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。下面所有例子的环境说明如下:系统:Ubuntu14.0用户名:uusama需要配置MySQL环境变量路径:/home/uusama/mysql/binLinux读取环境变量读