from django.conf import settings from django.shortcuts import redirect from django.urls import reverse from .handlers import AuthHandler class AzureMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): public_views = ["auth:login", "auth:logout", "auth:callback"] public_views.extend(settings.AZURE_AUTH.get("PUBLIC_URLS", [])) public_urls = [reverse(view_name) for view_name in public_views] public_paths = settings.AZURE_AUTH.get( "PUBLIC_PATHS", [] ) # added to resolve paths if request.path_info in public_urls: return self.get_response(request) # Added to resolve paths that can't be reversed for path in public_paths: if request.path_info.startswith(path): return self.get_response(request) if AuthHandler(request).get_token_from_cache(): # If the user is authenticated if request.user.is_authenticated: return self.get_response(request) return redirect("auth:login")