权限改造:与用户主数据集成
要求:需要从部门和型号两个维度约束用户权限(已有功能只支持个人用户权限,没有部门和型号的维度限制)。
型号:
- 个人:只能查看个人和他人共享的数据(1. 主数据不包含个人所属型号信息 2. 该功能已实现)。
- 型号领导:可查看所属型号的全部数据。
部门:
- 个人:只能查看个人和他人共享的数据(该功能已实现)。
- 部门领导:能查看所属部门的全部数据。
设计思路:
- 将部门/型号看成“个人”,以便于最小化改动和维护已有架构(部门、型号均有自己的编号,相当于个人的user id)。
- 导入:个人导入数据时,需要给其所属部门和型号生成权限。部门从个人主数据信息获取,型号从导入界面的型号信息获取。(参照给个人生成权限部分)
- 查看:
===== 如果当前用户是普通员工:根据用户信息获取相应权限信息展示(目前已实现)。
===== 如果当前用户是部门领导:根据所属部门的ID获取相应权限信息展示。(把部门看成个人)
===== 如果当前用户是型号领导:根据所属型号ID(可能多个)获取相应权限信息展示。(把型号看成个人)
===== 如果当前用户是既是部门领导,又是型号领导:根据所属部门ID和所属型号ID获取权限数据展示。
理解:把部门A看成一个user,比如在这里我们设为userA
一、导入流程:
1、如果user1导入数据data1 --> 权限(比如:read、write、grant data1)
原来情况: user1 <----> data1
新加方案: userA <----> data1(部门userA同样有data1的权限)
2、如果user2导入数据data2--> 权限
原来情况: user2 <----> data2
新加方案: userA <----> data2(部门userA同样有data2的权限)
……
只要是部门A的用户,导入时都需要执行这两个过程。
……
那么在这个过程中,领导①有没有部门A的权限呢?
答:应该是没有的,因为现在还没有存。
二、查看:
根据甲方给出的user数据信息。他们会返回给我们 部门领导 与 普通员工:
1、if 普通用户:
只能查看自己的权限(已有功能)
2、if 部门领导①:
首先,查看领导①的能看到的数据。(因为领导①本身也是一个普通用户)
其次,查看userA 能看到的所有数据。