Skip to content

Commit e7d1362

Browse files
committed
Compatibility with Django LoginRequiredMiddleware
Django 5.1 introduced the LoginRequiredMiddleware that automatically requires an authenticated user on all views except those marked as not requiring a login.
1 parent 5d60cb3 commit e7d1362

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

azure_auth/decorators.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,24 @@
22
from urllib.parse import urlparse
33

44
from django.conf import settings
5-
from django.contrib.auth import BACKEND_SESSION_KEY
5+
from django.contrib.auth import BACKEND_SESSION_KEY, decorators
66
from django.shortcuts import redirect
77
from django.urls import reverse
88

99
from .handlers import AuthHandler
1010

1111

12+
def _dummy_login_not_required(view_func):
13+
return view_func
14+
15+
16+
# The login_not_required decorator was added in Django 5.1
17+
# For earlier version we use a dummy decorator
18+
login_not_required = getattr(
19+
decorators, "login_not_required", _dummy_login_not_required
20+
)
21+
22+
1223
def azure_auth_required(func):
1324
@functools.wraps(func)
1425
def _wrapper(request, *args, **kwargs):

azure_auth/views.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77

88
from azure_auth.utils import EntraStateSerializer
99

10+
from .decorators import login_not_required
1011
from .handlers import AuthHandler
1112

1213
serializer = EntraStateSerializer()
1314

1415

16+
@login_not_required
1517
def azure_auth_login(request: HttpRequest):
1618
return HttpResponseRedirect(
1719
AuthHandler(request).get_auth_uri(
@@ -20,6 +22,7 @@ def azure_auth_login(request: HttpRequest):
2022
)
2123

2224

25+
@login_not_required
2326
def azure_auth_logout(request: HttpRequest):
2427
# Auth handler has to be initialized before `logout()` to load the claims from the session
2528
auth_handler = AuthHandler(request)
@@ -28,6 +31,7 @@ def azure_auth_logout(request: HttpRequest):
2831
return HttpResponseRedirect(auth_handler.get_logout_uri())
2932

3033

34+
@login_not_required
3135
def azure_auth_callback(request: HttpRequest):
3236
token = AuthHandler(request).get_token_from_flow()
3337
user = authenticate(request, token=token)

0 commit comments

Comments
 (0)