Skip to content

Commit 0dce5ad

Browse files
committed
refactor: use auto save in the enforcer
1 parent c5b97a0 commit 0dce5ad

2 files changed

Lines changed: 5 additions & 8 deletions

File tree

openedx_authz/apps.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ def ready(self):
4949
from django.contrib.auth import get_user_model
5050
from dauthz.core import enforcer
5151

52+
enforcer.enable_auto_save(True)
53+
5254
# Add minimum policies for anonymous users
5355
anonymous_policies = [
5456
("/", "*"),
@@ -66,7 +68,6 @@ def ready(self):
6668
if not enforcer.has_policy("anonymous", resource, action):
6769
enforcer.add_policy("anonymous", resource, action)
6870

69-
enforcer.save_policy()
7071
print("\n\nAdded minimum policies for anonymous users!")
7172

7273
# Ensure admin users have access to all resources
@@ -76,6 +77,5 @@ def ready(self):
7677
admin_users = User.objects.filter(is_staff=True, is_superuser=True)
7778
for user in admin_users:
7879
enforcer.add_role_for_user(user.username, "admin")
79-
enforcer.save_policy()
8080

8181
print("Added admin users to the authorization policy!\n\n")

openedx_authz/views.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
from .models import Library
1111
from .serializers import LibrarySerializer
1212

13+
enforcer.enable_auto_save(True)
14+
1315

1416
class LibraryViewSet(viewsets.ViewSet):
1517
"""
@@ -50,7 +52,6 @@ def create(self, request):
5052
f"{self.request.path}{library.id}/",
5153
"(GET)|(PUT)|(DELETE)|(PATCH)",
5254
)
53-
enforcer.save_policy()
5455
return Response(LibrarySerializer(library).data, status=status.HTTP_201_CREATED)
5556
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
5657

@@ -98,7 +99,6 @@ def destroy(self, request, pk=None):
9899
library_title = library.title
99100
library.delete()
100101
enforcer.remove_filtered_policy(1, self.request.user.username, f"{self.request.path}{library.id}/", "")
101-
enforcer.save_policy()
102102

103103
return Response(
104104
{"detail": f'Library "{library_title}" has been deleted.'},
@@ -123,9 +123,9 @@ def create(self, request):
123123
}
124124
```
125125
"""
126+
enforcer.enable_auto_save(True)
126127
username = request.data["username"]
127128
enforcer.add_role_for_user(username, "admin")
128-
enforcer.save_policy()
129129
return Response(f"Admin role assigned to user {username}", status=status.HTTP_201_CREATED)
130130

131131
def destroy(self, request, pk=None):
@@ -135,7 +135,6 @@ def destroy(self, request, pk=None):
135135
"""
136136
username = pk
137137
enforcer.delete_role_for_user(username, "admin")
138-
enforcer.save_policy()
139138
return Response(f"Admin role removed from user {username}", status=status.HTTP_204_NO_CONTENT)
140139

141140

@@ -176,7 +175,6 @@ def create(self, request):
176175
return Response({"error": "username, obj, and act are required fields"}, status=status.HTTP_400_BAD_REQUEST)
177176

178177
enforcer.add_policy(username, obj, act)
179-
enforcer.save_policy()
180178

181179
return Response(
182180
{
@@ -207,7 +205,6 @@ def destroy(self, request, pk=None):
207205
return Response({"error": "obj and act query parameters are required"}, status=status.HTTP_400_BAD_REQUEST)
208206

209207
result = enforcer.remove_policy(username, obj, act)
210-
enforcer.save_policy()
211208

212209
if result:
213210
return Response(

0 commit comments

Comments
 (0)