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 390cbc0404..c387dc19a7 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -891,7 +891,7 @@ REMOVE_SUCCESS_URL = 'settings' # 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',