From c1a64fc08f7e21c5c0933f09c665ff5a25dd8868 Mon Sep 17 00:00:00 2001 From: Matthew Lemon Date: Sat, 17 Oct 2020 14:46:23 +0100 Subject: replaced all LoginRequiredMixin and decorators with custom middleware --- config/middleware.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 config/middleware.py (limited to 'config/middleware.py') diff --git a/config/middleware.py b/config/middleware.py new file mode 100644 index 0000000..c3b7c46 --- /dev/null +++ b/config/middleware.py @@ -0,0 +1,27 @@ +""" +whipped from https://www.youtube.com/watch?v=DbAzWll4UIA&list=PLw02n0FEB3E3VSHjyYMcFadtQORvl1Ssj&index=27 +""" +import re + +from django.conf import settings +from django.shortcuts import redirect + +EXEMPT_URLS = [re.compile(settings.LOGIN_URL.lstrip("/"))] +if hasattr(settings, 'LOGIN_EXEMPT_URLS'): + EXEMPT_URLS += [re.compile(url) for url in settings.LOGIN_EXEMPT_URLS] + + +class LoginRequiredMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request, *args, **kwargs): + response = self.get_response(request) + return response + + def process_view(self, request, view_func, view_args, view_kwargs): + assert hasattr(request, 'user') + path = request.path_info.lstrip("/") + if not request.user.is_authenticated: + if not any(url.match(path) for url in EXEMPT_URLS): + return redirect(settings.LOGIN_URL) -- cgit v1.2.3