决定是允许用户是否具有所需的角色。所需角色和用户当前权限为 JSON 格式。
所需权限:(另存为属性)
{
"data": {
"service1": {
"service1.1": true
},
"service2": {
"service2.1: false,
"service2.2": true,
"service2.3": false
}
}
}
用户当前权限:
{
"data": {
"service1": {
"service1.1": true
},
"service2": {
"service2.1: false,
"service2.2": false,
"service2.3": true
}
}
}
为了做出决定,我们需要检查用户是否拥有类似于所需权限的服务。在上面的示例中,用户将 data.service1.service1.1 设为 true,data.service2.service2.3 设为 true,其中所需角色 data.service1.service1.1 设为 true,data.service2.service2.2 设为是的,在这种情况下,我们否认。
我编写了单独的规则来检查每个服务,但这只是对服务组合的检查。
rule service1.1{
permit
condition
(allOf(function[booleanEqual], true, requiredRoles.data.service1.service1.1))
&&
(allOf(function[booleanEqual], true, requiredRoles.data.service1.service1.1))
on permit {
advice reasonForPermit{
reasonAttribute= "Contains Valid services"
}
}
}
有人可以帮忙写一个 if .. 然后签入 alfa 吗?