【发布时间】:2015-11-02 14:14:22
【问题描述】:
我有一个图,其中包含两个这样的边定义:
isDepartment: [organisation] -> [organisation]
hasAccess: [user] -> [organisation]
组织嵌套在树中(无循环)。有多个顶级组织没有任何传入的isDepartment 边缘。
用户被授予访问一个或多个组织的权限。这些可以是顶级组织或树下某个位置的组织。如果用户有权访问某个组织,则它可以访问所有子组织。
我正在尝试构建一个自定义访问者或过滤器,为用户提供所有可访问的组织,包括到根目录的路径,以及是否可访问的属性。
例如,采取如下组织结构:
- 根 A
- 部门A.1
- 部门A.2
- 根 B
- 部门B.1
- 部门B.2
- 子部门。 B.2.1
- 根 C
- 部门C.1
- 部门C.2
现在选择一个有权访问Root A 和Dept. B.2 的用户。我想生成以下结果树:
- 根 A,可访问:true
- 部门A.1,可访问性:true
- 部门A.2,可访问性:true
- 根 B,可访问:假
- 部门B.2,可访问性:true
- 子部门。 B.2.1,可访问性:true
请注意,Root C 和 Dept. B1 不在结果中,因为用户无法访问它们,也无法访问它们的任何子项。
另请注意,Root B 已包含在内,但标记为 not accessible。这是因为用户只被授予访问 Root B 的孩子而不是 root 本身的访问权限。
我如何编写一个自定义函数/访问者/过滤器来完成这个?
【问题讨论】:
标签: graph tree-traversal arangodb