介绍
策略是针对某类用户角色打包的多个权限的组合,由多个权限、子策略组成。合理设计和使用策略可以更好、更方便地管理用户权限。
命名规则
策略由开发者自定义名称,一个 Ultipa 实例中的策略不能重名。
- 2 ~ 64 个字符
- 必须以字母开头
- 仅允许使用字母,下划线和数字(即 _ 、A-Z、a-z、0-9)
查看策略
返回的表名:_policy
返回的表头:name
|graphPrivileges
|systemPrivileges
|policies
(策略的名称、图集权限、系统权限、子策略)
语法:
// 查看当前 Ultipa 实例中的所有策略信息
show().policy()
// 查看当前 Ultipa 实例中的某个策略信息
show().policy("<name>")
创建策略
语法:
// 在当前 Ultipa 实例中创建一个策略
create().policy("<name>", <{}graph_privileges?>, <[]system_privileges?>, <[]policies?>)
其中,<{}graph_privileges?>
的格式为:
{
"<graph1>":["<graph_privilege>", "<graph_privilege>", ...],
"<graph2>":["<graph_privilege>", "<graph_privilege>", ...],
...
}
注:图集名 "<graph>"
用星号代替时 "*"
,表示当前 Ultipa 实例中的所有图集。
示例:创建名为 sales 的策略,包含对图集 default 和 client 的权限 UPDATE,以及系统权限 STAT
create().policy(
"sales",
{"default": ["UPDATE"], "client":["UPDATE"]},
["STAT"]
)
示例:创建名为 manager 的策略,包含对所有图集的权限 UPDATE,并且拥有策略 sales
create().policy(
"manager",
{"*": ["UPDATE"]},
[],
["sales"]
)
修改策略
语法:
// 修改当前 Ultipa 实例中的某个策略
alter().policy("<name>")
.set({graph_privileges:<{}new?>, system_privileges:<[]new?>, policies:<[]new?>})
示例:修改名为 sales 的策略, 使其只包含 default 图集的 UPDATE 权限
alter().policy("sales")
.set({graph_privileges: {"default": ["UPDATE"]}})
示例:修改名为 manager 的策略,使其包含所有图集的权限 UPDATE 和 DELETE,并且拥有策略 sales
alter().policy("manager").set({
graph_privileges: {"*": ["UPDATE", "DELETE"]},
policies: ["sales"]
})
删除策略
语法:
// 从当前 Ultipa 实例中删除某个策略
drop().policy("<name>")