山海鲸可视化

层级权限生效逻辑

1. 逻辑简介

数据决策系统中的权限载体“部门”可以为树结构,存在父部门和子部门。下文中称为权限载体树
数据决策系统中的权限实体“目录”可以为树结构,存在父目录和子目录。下文中称为权限实体树
按照不同的时间先后顺序给父部门/子部门分配父目录/子目录的权限,最终生效结果各不相同。
职务和子部门同理,都会被父部门配置的权限覆盖掉。
【注意事项】本文中的权限配置是指打开或关闭某维度的权限,维度包括:“查看”等。
1)对于树结构,先配置子节点的权限,再配置父节点的权限。在父节点配置过的权限维度下,父节点权限会覆盖相应维度的子节点权限。
2)对于树结构,先给父节点配置权限,再给子节点配置不同的权限。父子节点权限各自生效,互不影响。

2. 父覆盖子

逻辑:对于树结构,先配置子节点的权限,再配置父节点的权限。在父节点配置过的权限维度下,父节点权限会覆盖相应维度的子节点权限。

2.1 权限载体树

逻辑:对于同一权限实体(如同一目录),先给子部门配置权限,再给父部门配置权限。在父部门配置过的权限维度下,父部门权限会覆盖相应维度的子节点权限。
场景:先给子部门分配目录权限,维度为“查看”。
1.png

再给父部门分配目录权限,维度为“查看”。
2.png

结果:在父部门配置过的权限维度下,父部门权限会覆盖相应维度的子节点权限。
父部门配置过的权限维度为“查看”,覆盖相应维度的子部门权限为“查看”,如下图所示:
1.png

2.2 权限实体树

逻辑:给当权限实体是一棵树结构(例如目录树),给同一权限载体(例如角色)先配置子节点的权限,再配置父节点的权限。在父节点配置过的权限维度下,父节点权限会覆盖相应维度的子节点权限。
场景:先给角色 X 分配子目录 1 的权限,维度为“查看”。
3.png

再给角色 X 分配父目录的权限,维度为“查看”
4.png

结果:在父目录配置过的权限维度下,父目录权限会覆盖相应维度的子目录权限,如父目录的“查看”维度。
父目录及子目录的“查看”维度被覆盖,子目录 1 的最终权限为“查看”

2.3 平行权限树

逻辑:对于权限载体树(父子部门)和权限实体树(父子目录),先给子部门配置子目录权限,再给父部门配置父目录的权限。在父部门对父目录配置过的权限维度下,父部门对父目录的权限会覆盖相应维度下子部门对子目录的权限。
场景:先给子部门配置子目录的权限,维度为“查看”
1.png

再给父部门配置父目录的权限,维度为“查看”
5.png

结果:
在父部门对父目录配置过的权限维度下,父部门对父目录的权限会覆盖相应维度下子部门对子目录的权限,如父目录的“查看”维度。
父部门对父目录未配置的权限维度,则无法覆盖子目录相应维度的权限。
父目录及子目录的“查看”维度被覆盖,子目录 1 的最终权限为“查看”,如下图所示:
6.png

2.4 交叉权限树

逻辑:对于权限载体树(父子部门)和权限实体树(父子目录),先给子部门配置父子目录权限,再给父部门配置父目录权限。在父部门对父目录配置过的权限维度下,父部门对父目录的权限会覆盖相应维度下子部门对父子目录的权限。
场景:先给子部门配置子目录 1 权限,维度为“查看”,给子部门配置子目录 2 权限,维度为“查看”
11.png

再给父部门配置父目录权限,维度为“查看”
12.png

结果:在父部门对父目录配置过的权限维度下,父部门对父目录的权限会覆盖相应维度下子部门对父子目录的权限,如父目录的“查看”维度。
子部门对父子目录的“查看”维度被覆盖,子部门的父目录及所有子目录的最终权限为“查看”,如下图所示:
13.png

3. 子不影响父

逻辑:对于树结构,先给父节点配置权限,再给子节点配置不同的权限,父子节点权限各自生效,互不影响。

3.1 权限载体树

逻辑:对于同一权限实体(如同一数据连接),先给父部门配置权限,再给子部门配置权限,父子部门的权限互不影响,各自生效自己的权限。
场景:先给父部门分配目录的权限,维度为“查看”
2.png

再给子部门分配目录的权限,维度为“查看”
1.png

结果:父部门对目录的“查看”权限不变,子部门对目录的“查看”权限不变。

3.2 权限实体树

逻辑:当权限实体是一棵树结构(比如目录树),给任一权限载体先配置父节点的权限,再配置子节点的权限,父子节点的权限均正常保留,互不影响各自生效。
场景:先给角色 X 分配父目录的权限,维度为“查看”
4.png

再给角色 X 分配子目录 1 的权限,维度为“查看”
3.png

结果:角色 X 对父目录的“查看”权限不变,角色 X 对子目录 1 的“查看”权限不变。

3.3 平行权限树

逻辑:对于权限载体树(父子部门)和权限实体树(父子目录),给父部门配置父目录权限,再给子部门配置子目录的权限。
在父部门对父目录配置过的权限维度下,父部门对父目录的权限会覆盖相应维度下子部门对父子目录的权限,但之后配置的子目录会保持子部门的设置。
场景:先给父部门配置父目录的权限,维度为“查看”
5.png

给子部门关闭子目录 1 的“查看”权限。
7.png

结果:父部门对父目录的“查看”权限不变。
在父部门对父目录配置过的权限维度下,父目录权限会覆盖相应维度的子目录权限,如“查看”。所以,父部门对子目录有“查看”权限,如下图所示:
5.png

子目录 1 和子目录 2 保持子部门自己的权限配置,子部门对子目录 1 无权限,子部门对子目录 2 有“查看”权限。
在父部门对父目录配置过的权限维度下,父部门对父目录的权限会覆盖相应维度下子部门对父子目录的权限,子部门对父目录和其他子目录有“查看”权限,如下图所示:
8.png

3.4 交叉权限树

逻辑:对于权限载体树(父子部门)和权限实体树(父子目录),给子部门配置父目录权限,给父部门配置子目录权限。
按照权限设置的时间先后顺序,对于子部门的子目录来说,先被子部门对父目录的权限覆盖,再被父部门对子目录的权限覆盖。
场景:先给子部门配置父目录的权限,维度为“查看”
6.png

再给父部门配置子目录 1 的权限,维度为“查看”
9.png

结果:对于子部门的子目录来说,先被子部门对父目录的权限覆盖。此时,子部门对子目录有“查看”权限。
再被父部门对子目录的权限覆盖,子部门对子目录 1 有“查看”权限。
10.png