aboutsummaryrefslogtreecommitdiffstats
path: root/config/middleware.py
diff options
context:
space:
mode:
authorMatthew Lemon <lemon@matthewlemon.com>2020-10-17 14:46:23 +0100
committerMatthew Lemon <lemon@matthewlemon.com>2020-10-17 14:46:23 +0100
commitc1a64fc08f7e21c5c0933f09c665ff5a25dd8868 (patch)
treec729e128233070125280dcf550f86dbc59d06088 /config/middleware.py
parent59592232da815f4e8c6f61cb9042e738990c1b6e (diff)
replaced all LoginRequiredMixin and decorators with custom middleware
Diffstat (limited to 'config/middleware.py')
-rw-r--r--config/middleware.py27
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)