diff options
author | Matthew Lemon <lemon@matthewlemon.com> | 2020-10-17 14:46:23 +0100 |
---|---|---|
committer | Matthew Lemon <lemon@matthewlemon.com> | 2020-10-17 14:46:23 +0100 |
commit | c1a64fc08f7e21c5c0933f09c665ff5a25dd8868 (patch) | |
tree | c729e128233070125280dcf550f86dbc59d06088 /config/middleware.py | |
parent | 59592232da815f4e8c6f61cb9042e738990c1b6e (diff) |
replaced all LoginRequiredMixin and decorators with custom middleware
Diffstat (limited to 'config/middleware.py')
-rw-r--r-- | config/middleware.py | 27 |
1 files changed, 27 insertions, 0 deletions
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) |