概述
系统权限有很多种。 常用的是操作权限和数据权限。 操作权限是指是否有任何操作的权限,具体表现为能看到或看不到某个菜单或功能按钮。 数据权限是数据级别的权限设计,立足于组织(部门、部门、公司)和流程,相应的用户没有访问特定数据的权限。 本书旨在设计数据权限的控制方案,完善产品数据权限的控制。
设计思路
在以前的平台中,我们设计了一个规则,它定义了每个业务平台的必填字段(公司、创建者和流程参与者),以构成程序的数据权限控制规则。 设计数据权限配置器以配置单个程序或批量配置程序权限规则。 程序根据运行时配置的数据权限控制规则动态构建查询SQL,以实现数据权限控制。 各数据级别的权限控制规则是or的关系。
数据权限控制规则
整理现有业务方案和业务流程数据表的结构。 组织以下可配置规则:
1、数据创建用户
是当前程序记录的创建者。 如果设置了此选项,则除当前记录以外的作者将无法看到此记录。
建议:如果程序打开了数据权限控制,则默认情况下此选项处于选中状态,无法删除。 否则,如果配置了其他控制规则,业务记录的创建者将无法看到自己创建的记录。
2、建立人的直接高级职称
也就是说,当前程序记录创建者的直接高级职位的用户可以看到该记录。
现在设立用户的话,各公司可能有不同的工作场所,或者同一公司也可能有多个工作场所。 在此获取用户部门时,获取的是数据创建用户当前记录中公司的主要部门编号。 (没有主部门负责所有子部门。 然后,根据收到的工作岗位获得其直接的高级工作岗位。
3、创立者所有高级岗位
这意味着当前程序记录创建者的所有高级部门(需要递归)的用户都可以看到此记录。 取用户岗位逻辑参考第2条。
4、创立者当前部门
这意味着当前程序记录创建者所属部门的用户可以看到此记录。
当前创建的用户可能在不同的公司中有不同的部门,也可能在同一家公司中属于不同的部门。 在此处获取的部门编号是用户在当前记录中的公司中创建主部门所在部门的部门编号。 (没有主部门获取所有子部门所属的部门编号。
5、创立者所有上级部门
这意味着当前方案记录创建者所属部门的所有高级部门(需要递归)的用户都可以看到此记录。 (目前部门除外)
采取部门逻辑参考第4条。
6、目前公司
也就是说,当前程序记录的公司下的所有用户都可以看到此记录。
评论:
)1)配置公司数据级权限时,应考虑与平台公司条件的关系。 是否需要取消交叉、合并或平台公司的条件?
)2) s页面公司列查询时也需要考虑用户可以选择的公司
7、所有上级公司
也就是说,当前程序记录中的公司的所有高级公司都可以看到这个记录。 (目前公司除外)
八、进程参与者
如果当前记录通过了流程,则所有流程处理者(已处理和暂挂)和通知者都可以看到此记录。
问题:
1、所有流程的参与者具体包括哪些用户?
2、各类参与者是否需要进行分类配置?
评论:
)1)第6条“当前公司”规则配置的,在解析条件时,可以忽略第2、3、4、5条配置的条件。
)特殊岗位时,部分领导有权查看所有数据。
/**贴上初始化资料层级权限的逻辑吧。 * @ authorchengmeng */publicstaticvoidinitdataper (datadom )//1.用于获取数据级别权限的配置项目////2.当前登录者的当前部门//1 .获取3 .特殊岗位可以看到所有数据(这里所有数据指平台基本条件下的所有数据)///4-1 .根据配置规则连接SQL语句)/4-1 .作者(//4-1) 所有岗位包括所在岗位和下级岗位//如果配置了所属部门,则包括所属部门; 如果配置了所属部门,则包含下级部门}