From 40e6dc838fe819cd203a4798e88346799acd8719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Lebleu?= Date: Mon, 13 Jan 2020 10:06:39 +0100 Subject: [PATCH] core: use class-based views for auth --- modoboa/admin/tests/test_domain.py | 3 +-- modoboa/core/tests/test_views.py | 2 +- modoboa/core/views/__init__.py | 4 ++-- modoboa/core/views/auth.py | 16 +++++++++------- modoboa/urls.py | 10 ++++++---- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/modoboa/admin/tests/test_domain.py b/modoboa/admin/tests/test_domain.py index b8a8e9b15..593a772a9 100644 --- a/modoboa/admin/tests/test_domain.py +++ b/modoboa/admin/tests/test_domain.py @@ -318,8 +318,7 @@ class DomainTestCase(ModoTestCase): domain = Domain.objects.get(name="test2.com") url = reverse("admin:domain_detail", args=[domain.pk]) response = self.client.get(url) - self.assertEqual(response.status_code, 302) - self.assertTrue(response.url.startswith("/accounts/login")) + self.assertEqual(response.status_code, 403) def test_domain_quota_list_view(self): """Test quota list view.""" diff --git a/modoboa/core/tests/test_views.py b/modoboa/core/tests/test_views.py index 838182a81..584179be9 100644 --- a/modoboa/core/tests/test_views.py +++ b/modoboa/core/tests/test_views.py @@ -122,7 +122,7 @@ class DashboardTestCase(ModoTestCase): self.client.logout() self.client.login(username=self.user.username, password="toto") response = self.client.get(url) - self.assertEqual(response.status_code, 302) + self.assertEqual(response.status_code, 403) def test_custom_news(self): """Check that custom news are displayed.""" diff --git a/modoboa/core/views/__init__.py b/modoboa/core/views/__init__.py index c59caeeed..f0300f63b 100644 --- a/modoboa/core/views/__init__.py +++ b/modoboa/core/views/__init__.py @@ -4,13 +4,14 @@ from .admin import ( check_top_notifications, information, logs, logs_page, parameters, viewsettings ) -from .auth import dologin, dologout, password_reset +from .auth import PasswordResetView, dologin, dologout from .base import RootDispatchView from .dashboard import DashboardView from .user import api_access, index, preferences, profile __all__ = [ "DashboardView", + "PasswordResetView", "RootDispatchView", "api_access", "check_top_notifications", @@ -21,7 +22,6 @@ __all__ = [ "logs", "logs_page", "parameters", - "password_reset", "preferences", "profile", "viewsettings", diff --git a/modoboa/core/views/auth.py b/modoboa/core/views/auth.py index cecb7f493..d135eef8f 100644 --- a/modoboa/core/views/auth.py +++ b/modoboa/core/views/auth.py @@ -115,11 +115,13 @@ def dologout(request): return HttpResponseRedirect(reverse("core:login")) -def password_reset(request, **kwargs): +class PasswordResetView(auth_views.PasswordResetView): """Custom view to override form.""" - kwargs.update({ - "from_email": ( - request.localconfig.parameters.get_value("sender_address")), - "password_reset_form": forms.PasswordResetForm - }) - return auth_views.password_reset(request, **kwargs) + + form_class = forms.PasswordResetForm + + def setup(self, request, *args, **kwargs): + super().setup(request, *args, **kwargs) + self.from_email = request.localconfig.parameters.get_value( + "sender_address" + ) diff --git a/modoboa/urls.py b/modoboa/urls.py index 94039bfe4..ba3f06e69 100644 --- a/modoboa/urls.py +++ b/modoboa/urls.py @@ -30,13 +30,15 @@ urlpatterns = [ path('user/forward/', user_views.forward, name="user_forward"), - path('accounts/password_reset/', core_views.password_reset, + path('accounts/password_reset/', core_views.PasswordResetView.as_view(), name="password_reset"), - path('accounts/password_reset/done/', auth_views.password_reset_done, + path('accounts/password_reset/done/', + auth_views.PasswordResetDoneView.as_view(), name="password_reset_done"), - path('reset///', auth_views.password_reset_confirm, + path('reset///', + auth_views.PasswordResetConfirmView.as_view(), name="password_reset_confirm"), - path('reset/done/', auth_views.password_reset_complete, + path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name="password_reset_complete"), ]