@@ -19,7 +19,8 @@ bool_flip(b) = flipped {
19
19
flipped = true
20
20
}
21
21
22
- # perms_grant returns a set of boolean values (true, false).
22
+ # perms_grant returns a set of boolean values {true, false}.
23
+ # True means a positive permission in the set, false is a negative permission.
23
24
# It will only return `bool_flip(perm.negate)` for permissions that affect a given
24
25
# resource_type, resource_id, and action.
25
26
# The empty set is returned if no relevant permissions are found.
@@ -41,7 +42,7 @@ perms_grant(permissions) = grants {
41
42
default site = {}
42
43
site = grant {
43
44
# Boolean set for all site wide permissions.
44
- grant = { v | # Use set comprehension to remove dulpicate values
45
+ grant = { v | # Use set comprehension to remove duplicate values
45
46
# For each role, grab the site permission.
46
47
# Find the grants on this permission list.
47
48
v = perms_grant (input.subject.roles[_].site)[_]
@@ -53,7 +54,7 @@ user = grant {
53
54
# Only apply user permissions if the user owns the resource
54
55
input.object.owner != " "
55
56
input.object.owner == input.subject.id
56
- grant = { v | # Use set comprehension to remove dulpicate values
57
+ grant = { v |
57
58
# For each role, grab the user permissions.
58
59
# Find the grants on this permission list.
59
60
v = perms_grant (input.subject.roles[_].user)[_]
@@ -84,12 +85,15 @@ org_non_member {
84
85
}
85
86
86
87
# org is two rules that equate to the following
87
- # if ! org_non_member { return org_member }
88
- # else {false }
88
+ # if org_non_member { return {false} }
89
+ # else { org_member }
89
90
#
90
91
# It is important both rules cannot be true, as the `org` rules cannot produce multiple outputs.
91
- default org = []
92
+ default org = {}
92
93
org = set {
94
+ # We have to do !org_non_member because rego rules must evaluate to 'true'
95
+ # to have a value set.
96
+ # So we do "not not-org-member" which means "subject is in org"
93
97
not org_non_member
94
98
set = org_member
95
99
}
@@ -112,6 +116,8 @@ allow {
112
116
site[_]
113
117
}
114
118
119
+ # OR
120
+
115
121
# org allow
116
122
allow {
117
123
# No site or org deny
@@ -121,6 +127,8 @@ allow {
121
127
org[_]
122
128
}
123
129
130
+ # OR
131
+
124
132
# user allow
125
133
allow {
126
134
# No site, org, or user deny
0 commit comments