From 9408a5c7bf6501e14fcbbbc8e32b405214cdbb8b Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Wed, 7 Jun 2023 22:08:20 +1000 Subject: [PATCH] Avoid showing the test@example.com email address on the password reset page Also updated login form to prompt you to use your username if you fail to login with what looks like an email address. --- pinaxcon/settings.py | 3 +++ pinaxcon/urls.py | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/pinaxcon/settings.py b/pinaxcon/settings.py index 37e9105c..a82361ad 100644 --- a/pinaxcon/settings.py +++ b/pinaxcon/settings.py @@ -631,3 +631,6 @@ if not DEBUG: 'security.W004', # Don't want to preload HSTS at this stage. 'security.W021'] + + +THEME_CONTACT_EMAIL = CONFERENCE_EMAIL diff --git a/pinaxcon/urls.py b/pinaxcon/urls.py index d0c19230..ec121e6e 100644 --- a/pinaxcon/urls.py +++ b/pinaxcon/urls.py @@ -1,6 +1,9 @@ +from account.forms import LoginUsernameForm +from account.views import LoginView import debug_toolbar from django.conf import settings from django.conf.urls.static import static +from django.core.exceptions import ValidationError from django.views.generic import RedirectView from django.views.generic import TemplateView from django.urls import include, path @@ -11,6 +14,22 @@ from django.contrib import admin import symposion.views +class CustomLoginForm(LoginUsernameForm): + def clean(self): + # To use account.forms.LoginEmailForm, we need to enforce unique + # emails. Since we probably already have duplicate emails in the system, + # we'll defer that to next year. + try: + super().clean() + except ValidationError as e: + if '@' in self.cleaned_data['username']: + raise ValidationError( + f'{e.message} Please login with your username, rather than your email.' + ) + else: + raise + + urlpatterns = [ # Trialling homepage via flatpages. # path('', TemplateView.as_view(template_name="homepage.html")), @@ -27,6 +46,7 @@ urlpatterns = [ path("teams/", include("symposion.teams.urls")), path('raffle/', include("pinaxcon.raffle.urls")), + path("account/login/", LoginView.as_view(form_class=CustomLoginForm, template_name='account/login.html'), name="account_login"), path("account/", include("account.urls")), # Required by registrasion