Browse Source

用户权限模型的设计概念文档初稿上传

xiaoct 7 years ago
parent
commit
c247037d22
2 changed files with 96 additions and 0 deletions
  1. 1 0
      gitbook/product/SUMMARY.md
  2. 95 0
      gitbook/product/permission.md

+ 1 - 0
gitbook/product/SUMMARY.md

@@ -14,3 +14,4 @@
 * 相关文档
 ___
 * [修订记录](updateLog.md)
+* [用户权限模型的设计概念(初稿)](permission.md)

+ 95 - 0
gitbook/product/permission.md

@@ -0,0 +1,95 @@
+# 用户权限模型的设计概念
+## 人员信息的导入与整理
+1. 使用UAS的用户验证机制校验密码,并且获取用户对应的姓名、部门和岗位字段
+2. 引入用户组概念,用户表下以用户组ID列表的方式标注其归属的用户组,一个用户可以属于多个组
+
+
+## 业务流程
+1. 管理员配置好数据源后,管理员默认获得所有的权限
+2. 管理员设计数据开放策略,将数据源分发给分析者
+3. 分析者基于自己拥有的数据权限制作图表,然后设计图表分发策略将信息将图表分发给阅读者
+
+## 数据开放策略设计流程
+1. 设置开放对象(分析者):
+    1. 开放对象由多条判断语句定义,每条判断语句匹配到具体的用户,最后取其并集
+    2. 判断语句中可以按照四种方式定位应用对象:
+        1. 用户名/姓名
+        2. 部门
+        3. 部门 + 岗位
+        4. 用户组
+2. 设置开放策略:
+    1. 数据开放策略由`行策略`和`列策略`组成
+    2. 行策略由多条判断语句定义,以筛选的方式作用于当前的数据,最后取其交集
+    3. 列策略由多选框定义,默认开放全部列,通过操作定向屏蔽列
+    4. 可以引入部门/岗位/用户组作为变量用于编写判断语句
+3. 备注:
+    1. 若出现分析者适用多条数据开放策略的情况,其具体获得的数据取并集
+        - 例如: 假设策略规定部门A的分析者只能获取部门A的数据、部门B的分析者只能获取部门B的数据, 若有员工既属于部门A也属于部门B, 则该员工能获取部门A和部门B的数据。
+
+
+## 图表分发策略设计流程
+1. 设置分发对象(阅读者):
+    1. 分发对象由多条判断语句定义,每条判断语句匹配到具体的用户,最后取其并集
+    2. 判断语句中可以按照四种方式定位应用对象:
+        1. 用户名/姓名
+        2. 部门
+        3. 部门 + 岗位
+        4. 用户组
+2. 设置分发策略:
+    1. 分发策略由多条判断语句定义,以筛选的方式作用于当前的数据,最后取其交集
+    2. 可以引入部门/岗位/用户组作为变量用于编写判断语句
+3. 备注:
+    1. 若出现阅读者适用多条图表分发策略的情况,其具体可阅读的图表取并集
+        - 例如: 假设策略规定部门A的阅读者只能阅读图表1、部门B的阅读者只能阅读图表2, 若有员工既属于部门A也属于部门B, 则该员工能获阅读图表1和图表2。
+
+
+## 看板分发策略设计流程
+1. 设置分发对象(阅读者):
+    1. 分发对象由多条判断语句定义,每条判断语句匹配到具体的用户,最后取其并集
+    2. 判断语句中可以按照四种方式定位应用对象:
+        1. 用户名/姓名
+        2. 部门
+        3. 部门 + 岗位
+        4. 用户组
+2. 设置分发策略:
+    1. 分发策略由多条判断语句定义,以筛选的方式作用于当前的数据,最后取其交集
+    2. 可以引入部门/岗位/用户组作为变量用于编写判断语句
+3. 备注:
+    1. 若出现阅读者适用多条看板分发策略的情况,其具体可阅读的看板取并集
+        - 例如: 假设策略规定部门A的阅读者只能阅读看板1、部门B的阅读者只能阅读看板2, 若有员工既属于部门A也属于部门B, 则该员工能获阅读看板1和看板2。
+
+
+# 业务实现方式
+
+## 用户登录验证
+1. 复现现有UAS系统的用户模块,使用相同的密码加盐算法和验证流程,使用相同的token
+2. 验证通过后,获取用户对应的部门和岗位信息
+
+## 对数据源执行数据开放策略
+- 查看可用数据源列表
+    1. 分析者发出查看可用数据源列表的请求后,服务端根据token获取用户的部门、岗位、用户组信息
+    2. 对分析者所请求的数据源执行一次权限判断,筛选出分析者有权使用的数据源
+    3. 为每个符合条件的数据源获得对应的开放策略(包括行策略和列策略),一并返回前端
+    4. 前端提供按钮供分析者查看生效中的数据开放策略
+- 查看单个数据源的数据列信息
+    1. 分析者发出查看单个数据源的数据列信息请求后,服务端根据token获取用户的部门、岗位、用户组信息
+    2. 对分析者所请求的数据源执行一次权限判断流程:
+        - 如果分析者不属于开放对象,则直接报错(备注:理论上分析者在前台无法请求自身完全无开放权限的数据源的数据列信息)
+        - 如果分析者属于开放对象,则获取对应的`列开放策略`,然后筛选出开放的数据列
+
+## 对图表/看板执行图表/看板分发策略
+- 查看图表/看板列表
+    1. 阅读者发出查询图表/看板列表的请求后,服务端根据token获取用户的部门、岗位、用户组信息
+    2. 对列表中每个图表/看板执行一次权限判断流程,筛选出阅读者有权限访问的图表或看板后返回前端
+- 查看单个图表/看板
+    1. 阅读者发出查看单个图表/看板的请求后,服务端根据token获取用户的部门、岗位、用户组信息
+    2. 对阅读者所请求的单个图表/看板执行一次权限判断流程,如果阅读者无权限访问应当返回403,有权限则进入正常业务流程
+
+## 对看板刷新请求执行数据开放策略
+- 分发看板请求刷新数据时应当附带看板作者的用户信息,服务端进行两次判断:
+    1. 先以当前阅读者的身份信息判断其是否有该看板的阅读权限
+    2. 上一条通过后,对`看板作者`的用户信息执行数据开放权限判断(而不是当前用户的图表阅读权限判断)
+- 这种方案可以让看板作者在分发看板时无需考虑阅读者是否有看板内各图表的阅读权限。
+
+
+# 界面元素和原型图(待更新)