@@ -175,8 +175,7 @@ def is_write_allowed(
175
175
176
176
def mask_pass (owned_permissions : int , requested_operation : int ,) -> bool :
177
177
"""
178
- When a subject tries to perform a write, this function calculates
179
- whether the requested operation is allowed on a set of owned
178
+ Calculates whether the requested operation is allowed on a set of owned
180
179
permissions.
181
180
182
181
>>> owned_perm = (
@@ -186,34 +185,24 @@ def mask_pass(owned_permissions: int, requested_operation: int,) -> bool:
186
185
>>> is_allowed(owned_perm, requested_op)
187
186
False
188
187
"""
189
- return int (owned_permissions & requested_operation ) > 0
188
+ return bool (owned_permissions & requested_operation )
190
189
191
- TOKEN_ALL = "*"
192
190
assert access_request .operation & (
193
191
Permission .CREATE | Permission .UPDATE | Permission .DELETE
194
192
)
195
193
196
194
resource = access_request .resource
197
195
operation = access_request .operation
198
- selector = access_request .selector
199
196
if resource not in owned_policies :
200
197
# Resource is unknown to subject.
201
198
return False
202
199
203
- if selector == TOKEN_ALL and selector not in owned_policies [resource ]:
204
- # For e.g CREATE without CREATE ALL policy
205
- return False
200
+ permissions = owned_policies [resource ].get (access_request .selector , 0 )
206
201
207
202
if TOKEN_ALL in owned_policies [resource ]:
208
203
# We might be asking for a specific instance but we have a "*" policy
209
204
# that contemplates it.
210
205
if mask_pass (owned_policies [resource ][TOKEN_ALL ], operation ):
211
206
return True
212
207
213
- # Now that we've reached here, it means that subject has no "*" policy
214
- # to allow it for asked resource. Hence it must have a specific policy
215
- if selector not in owned_policies [resource ]:
216
- return False
217
-
218
- permissions = owned_policies [resource ][selector ]
219
208
return mask_pass (permissions , operation )
0 commit comments