[request_definition] # 权限查询请求定义 # 请求主体 sub:谁在请求?张三还是李四? # 所在域 dom:在哪个组织下面?「圣典翻译团队 A」?还是「圣典翻译团队 B?」 # 请求对象 obj:请求什么?模板?项目?项目译文? # 请求操作 act:修改?删除?新增? r = sub, dom, obj, act [policy_definition] # 策略定义,与请求参数一致 p = sub, dom, obj, act [role_definition] # 角色分组,一个是用户角色分组,一个是资源角色分组 # 用户分组,张三隶属于「哪个组织」下面的「哪个小组」? g = _, _, _ # 资源分组,该资源隶属于「哪个组织」下面的「哪个分类(模板、项目、译文)」? g2 = _, _, _ [policy_effect] # 判断标准:some 意思是只要有一个结果匹配为真,则结果为真 e = some(where (p.eft == allow)) # 匹配器,请求操作 act 支持正则匹配 [matchers] m = g(r.sub, p.sub, r.dom) && g2(r.obj, p.obj, r.dom) && regexMatch(r.act, p.act)