Skip to content

Commit 6aa980c

Browse files
committed
fix: load all policy in permission class and remove from views
1 parent 5a39981 commit 6aa980c

2 files changed

Lines changed: 3 additions & 9 deletions

File tree

openedx_authz/rest_api/v1/permissions.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from rest_framework.permissions import BasePermission
66

77
from openedx_authz import api
8+
from openedx_authz.engine.enforcer import AuthzEnforcer
89

910

1011
class PermissionMeta(type(BasePermission)):
@@ -182,6 +183,7 @@ def has_permission(self, request, view) -> bool:
182183
"""
183184
if request.user.is_superuser or request.user.is_staff:
184185
return True
186+
AuthzEnforcer.get_enforcer().load_policy()
185187
return self._get_permission_instance(request).has_permission(request, view)
186188

187189
def has_object_permission(self, request, view, obj) -> bool:
@@ -198,6 +200,7 @@ def has_object_permission(self, request, view, obj) -> bool:
198200
"""
199201
if request.user.is_superuser or request.user.is_staff:
200202
return True
203+
AuthzEnforcer.get_enforcer().load_policy()
201204
return self._get_permission_instance(request).has_object_permission(request, view, obj)
202205

203206

openedx_authz/rest_api/v1/views.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
from openedx_authz import api
1818
from openedx_authz.constants import permissions
19-
from openedx_authz.engine.enforcer import AuthzEnforcer
2019
from openedx_authz.rest_api.data import RoleOperationError, RoleOperationStatus
2120
from openedx_authz.rest_api.decorators import authz_permissions, view_auth_classes
2221
from openedx_authz.rest_api.utils import (
@@ -257,8 +256,6 @@ def get(self, request: HttpRequest) -> Response:
257256
serializer.is_valid(raise_exception=True)
258257
query_params = serializer.validated_data
259258

260-
AuthzEnforcer.get_enforcer().load_policy()
261-
262259
user_role_assignments = api.get_all_user_role_assignments_in_scope(query_params["scope"])
263260
usernames = {assignment.subject.username for assignment in user_role_assignments}
264261
context = {"user_map": get_user_map(usernames)}
@@ -286,8 +283,6 @@ def put(self, request: HttpRequest) -> Response:
286283
serializer.is_valid(raise_exception=True)
287284
data = serializer.validated_data
288285

289-
AuthzEnforcer.get_enforcer().load_policy()
290-
291286
completed, errors = [], []
292287
for user_identifier in data["users"]:
293288
response_dict = {"user_identifier": user_identifier}
@@ -330,8 +325,6 @@ def put(self, request: HttpRequest) -> Response:
330325
@authz_permissions([permissions.MANAGE_LIBRARY_TEAM.identifier])
331326
def delete(self, request: HttpRequest) -> Response:
332327
"""Remove multiple users from a specific role within a scope."""
333-
AuthzEnforcer.get_enforcer().load_policy()
334-
335328
serializer = RemoveUsersFromRoleWithScopeSerializer(data=request.query_params)
336329
serializer.is_valid(raise_exception=True)
337330
data = serializer.validated_data
@@ -438,8 +431,6 @@ def get(self, request: HttpRequest) -> Response:
438431
serializer.is_valid(raise_exception=True)
439432
query_params = serializer.validated_data
440433

441-
AuthzEnforcer.get_enforcer().load_policy()
442-
443434
generic_scope = get_generic_scope(query_params["scope"])
444435
roles = api.get_role_definitions_in_scope(generic_scope)
445436
response_data = []

0 commit comments

Comments
 (0)