Skip to content

Commit e9165ed

Browse files
committed
refactor: replace enforcer import with custom enforcer
1 parent 907027b commit e9165ed

3 files changed

Lines changed: 34 additions & 7 deletions

File tree

openedx_authz/apps.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,10 @@ def ready(self):
4747
"""
4848
# pylint: disable=import-outside-toplevel
4949
from django.contrib.auth import get_user_model
50-
from dauthz.core import enforcer
5150

52-
enforcer.enable_auto_save(True)
51+
from openedx_authz.custom_enforcer import get_enforcer
52+
53+
enforcer = get_enforcer()
5354

5455
# Add minimum policies for anonymous users
5556
anonymous_policies = [
@@ -68,8 +69,6 @@ def ready(self):
6869
if not enforcer.has_policy("anonymous", resource, action):
6970
enforcer.add_policy("anonymous", resource, action)
7071

71-
print("\n\nAdded minimum policies for anonymous users!")
72-
7372
# Ensure admin users have access to all resources
7473
User = get_user_model()
7574

@@ -78,4 +77,4 @@ def ready(self):
7877
for user in admin_users:
7978
enforcer.add_role_for_user(user.username, "admin")
8079

81-
print("Added admin users to the authorization policy!\n\n")
80+
print("\n\nAdded default policies!\n\n")

openedx_authz/custom_enforcer.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"""
2+
Enforcer instance for openedx_authz.
3+
"""
4+
5+
from dauthz.core import enforcer
6+
from redis_watcher import WatcherOptions, new_watcher
7+
8+
9+
def callback_function(event):
10+
"""
11+
Callback function for the enforcer.
12+
"""
13+
print("\n\nUpdate for remove filtered policy callback, event: {}".format(event))
14+
15+
16+
def get_enforcer():
17+
"""
18+
Get the enforcer instance.
19+
"""
20+
enforcer.enable_auto_save(True)
21+
watcher_options = WatcherOptions()
22+
watcher_options.host = "redis"
23+
watcher_options.port = 6379
24+
watcher_options.optional_update_callback = callback_function
25+
watcher = new_watcher(watcher_options)
26+
enforcer.set_watcher(watcher)
27+
return enforcer

openedx_authz/views.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22
Views for openedx_authz DRF API.
33
"""
44

5-
from dauthz.core import enforcer
65
from django.shortcuts import get_object_or_404
76
from rest_framework import status, viewsets
87
from rest_framework.response import Response
98

9+
from openedx_authz.custom_enforcer import get_enforcer
10+
1011
from .models import Library
1112
from .serializers import LibrarySerializer
1213

13-
enforcer.enable_auto_save(True)
14+
enforcer = get_enforcer()
1415

1516

1617
class LibraryViewSet(viewsets.ViewSet):

0 commit comments

Comments
 (0)