头条文章链接说没有权限查看(今日头条分享微信受限)

   谷歌SEO    

我们“低代码开发平台”免费开放以后,有朋友觉得我们的权限做得有点复杂,不可否认我们的权限是有些特殊,但其实并不复杂,最多只能说是有点特殊,因为我们的权限是按权限功能进行区分的,我们根据权限的功能分为:操作权限,数据权限,字段权限,按钮权限,插件权限,报表权限,提醒任务权限。所以这一点上可能和他们所接触到的系统有所不同,从而觉得有点复杂,但是如果你了解之后呢?

权限模块

权限功能划分上其实是非常直观的,不过在“数据权限”设置方面就大大区别于其他系统了。因为我们权限设置需要与“低代码开发平台”的脚本进行配合,比如最常用的权限:

个人权限 :只能查看本人的业务数据;

部门权限 :能查看本部门所有人的业务数据;

而设置这种类型的权限就需要用到我们“低代码开发平台”的脚本了,不如如下图员工ID = UserID()这样的,其中UserID()脚本就表示当前登录用户的ID,

个人权限

为什么要用到脚本呢?因为一个表单上往往不止一个用户角色,比如一个案件表单上就可能存在“接案人”、“查勘员”、“定损员”,甚至还有其他的用户角色,那么对于这种一个表单多个用户角色的,如果不是用脚本,什么方法更好呢?

如果用脚本,那么就可以如上图所示的设置:“结案人ID = UserID()” OR “查勘员ID = UserID()” OR “定损员ID = UserID()”。这样的设置才能更简单、更灵活、更高效。

一个案件上可能有多个用户角色

那对于部门权限呢?

由于部门存在层级结构,所以每个部门都可能有子部门存在,所以我们用“GetDeptList()”脚本来获取 当前部门 及其 子部门 的ID列表,用于设置权限。

GetDeptList设置部门权限

可以想想上面一个表单多个用户角色的情况,如果没有脚本,要设某个人能看本部门所有人的业务数据你会怎么设置呢?显然是一个非常难受的事情。

有朋友给我演示他们怎么做的,他们是在权限设置的时候加SQL的WHERE条件去做( 不知道这样的做法是不是多,反正我是不理解也不会接受这种做法的 ),使用SQL意味着需要先知道查询SQL,另外各种读写都需要数据权限校验的时候,显然每个SQL的写法都可能不同,那么用SQL的WHERE条件显然不合适的。

好像还有朋友使用规则引擎来进行数据过滤,这种我们并没有研究过,但是按我的理解,如果使用规则引擎,除非是用规则引擎能够动态生成WHERE条件,否则必然需要先把数据读取出来再用规则以前进行过滤,想起里都为服务器“累”得慌。

还看过很多如下图类似的设置,就是打钩打钩的,但是这种对于同一个表单上多个用户角色真的Hold不住的。但是这种勾的方式好像被很多用户所喜欢,这种也许对于硬编码的系统,所有需求完全明确,每个表单上所有用户角色完全明确的情况,也许是可以的吧。

打钩打钩完成权限设置

不过虽然解决了“个人权限”、“部门权限”的问题,但是如果有一些其他的需求呢?我们曾经遇到过一个需求:客户要对合作放开放账号也能看自己的数据,并且合作方用户只能看最近一年的数据(毕竟业务特殊不能让他们也查看太多历史数据),只能看最近一年的这种需求够特殊,但是真实发生了!针对这样的需求,如果硬编码都难,但是如果结合着脚本不也是很轻松的事情吗?比如:

用脚本就是:创建时间 >= Today(-365) 就是这么简单。

按时间设置权限

权限不难,估计是觉得要记几个脚本吧!

 标签:

评论留言

我要留言

欢迎参与讨论,请在这里发表您的看法、交流您的观点。