diff --git a/korrekturmanagementsystem/middleware.py b/korrekturmanagementsystem/middleware.py new file mode 100644 index 0000000..7f84ed6 --- /dev/null +++ b/korrekturmanagementsystem/middleware.py @@ -0,0 +1,19 @@ +from django.urls import reverse_lazy +from django.http import HttpResponseRedirect + +class LoginRequiredMiddleware: + def __init__(self, get_response): + self.get_response = get_response + self.login_exempt_urls = [ + reverse_lazy("login"), + reverse_lazy("logout"), + "/admin/", + ] + + def __call__(self, request): + if ( + not request.user.is_authenticated and + not any(request.path.startswith(str(url)) for url in self.login_exempt_urls) + ): + return HttpResponseRedirect(reverse_lazy("login")) + return self.get_response(request) \ No newline at end of file diff --git a/korrekturmanagementsystem/settings.py b/korrekturmanagementsystem/settings.py index 470dc91..837fdb8 100644 --- a/korrekturmanagementsystem/settings.py +++ b/korrekturmanagementsystem/settings.py @@ -48,6 +48,7 @@ MIDDLEWARE = [ "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", + "korrekturmanagementsystem.middleware.LoginRequiredMiddleware" ] ROOT_URLCONF = "korrekturmanagementsystem.urls" @@ -123,3 +124,6 @@ STATIC_URL = "static/" # https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" + +LOGIN_REDIRECT_URL = "/ticketsystem" +LOGOUT_REDIRECT_URL = "/accounts/login/" \ No newline at end of file diff --git a/korrekturmanagementsystem/urls.py b/korrekturmanagementsystem/urls.py index a7f61d3..a4d8a5b 100644 --- a/korrekturmanagementsystem/urls.py +++ b/korrekturmanagementsystem/urls.py @@ -21,4 +21,5 @@ from django.urls import include, path urlpatterns = [ path("ticketsystem/", include("ticketsystem.urls")), path("admin/", admin.site.urls), + path("accounts/", include('django.contrib.auth.urls')) ] diff --git a/ticketsystem/templates/registration/login.html b/ticketsystem/templates/registration/login.html new file mode 100644 index 0000000..cce14db --- /dev/null +++ b/ticketsystem/templates/registration/login.html @@ -0,0 +1,56 @@ +{% block content %} + + +
+

🔐 Login

+
+ {% csrf_token %} + {{ form.as_p }} + +
+
+{% endblock %} diff --git a/ticketsystem/views.py b/ticketsystem/views.py index 47c10b8..8e6925d 100644 --- a/ticketsystem/views.py +++ b/ticketsystem/views.py @@ -16,7 +16,7 @@ class HomeView(TemplateView): template_name = "ticketsystem/home.html" -class TicketListView(ListView): +class TicketListView(LoginRequiredMixin, ListView): model = Ticket template_name = "ticketsystem/index.html" context_object_name = "tickets"