From 099b837a4e2b0a8cd050d6ccf8aed7416e8785fe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 12:43:39 +1000 Subject: [PATCH] Login form fix (#5502) (#5504) * Handle login without supplier user - Use custom login form - Redirect back to login page - No longer throws error * Fix method return (cherry picked from commit 71ad4a1c99c35d6922c8c2f3b24bf9858db29bcd) Co-authored-by: Oliver --- InvenTree/InvenTree/forms.py | 20 +++++++++++++++++++- InvenTree/InvenTree/settings.py | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index 263a9a6cfa..9206676ab7 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -12,7 +12,7 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ from allauth.account.adapter import DefaultAccountAdapter -from allauth.account.forms import SignupForm, set_form_field_order +from allauth.account.forms import LoginForm, SignupForm, set_form_field_order from allauth.exceptions import ImmediateHttpResponse from allauth.socialaccount.adapter import DefaultSocialAccountAdapter from allauth_2fa.adapter import OTPAdapter @@ -166,6 +166,24 @@ class SetPasswordForm(HelperForm): # override allauth +class CustomLoginForm(LoginForm): + """Custom login form to override default allauth behaviour""" + + def login(self, request, redirect_url=None): + """Perform login action. + + First check that: + - A valid user has been supplied + """ + + if not self.user: + # No user supplied - redirect to the login page + return HttpResponseRedirect(reverse('account_login')) + + # Now perform default login action + return super().login(request, redirect_url) + + class CustomSignupForm(SignupForm): """Override to use dynamic settings.""" diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index 1d02d493e0..deb2256346 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -877,7 +877,7 @@ ACCOUNT_PREVENT_ENUMERATION = True # override forms / adapters ACCOUNT_FORMS = { - 'login': 'allauth.account.forms.LoginForm', + 'login': 'InvenTree.forms.CustomLoginForm', 'signup': 'InvenTree.forms.CustomSignupForm', 'add_email': 'allauth.account.forms.AddEmailForm', 'change_password': 'allauth.account.forms.ChangePasswordForm',