Fixed #19368 -- Ensured that login error messages adapt to changes in the User model.
Thanks to un33k for the report.
This commit is contained in:
parent
47e1df896b
commit
27f8129d64
|
@ -6,8 +6,8 @@ from django.contrib.auth import authenticate
|
||||||
from django.contrib.auth.forms import AuthenticationForm
|
from django.contrib.auth.forms import AuthenticationForm
|
||||||
from django.utils.translation import ugettext_lazy
|
from django.utils.translation import ugettext_lazy
|
||||||
|
|
||||||
ERROR_MESSAGE = ugettext_lazy("Please enter the correct username and password "
|
ERROR_MESSAGE = ugettext_lazy("Please enter the correct %(username)s and password "
|
||||||
"for a staff account. Note that both fields are case-sensitive.")
|
"for a staff account. Note that both fields may be case-sensitive.")
|
||||||
|
|
||||||
|
|
||||||
class AdminAuthenticationForm(AuthenticationForm):
|
class AdminAuthenticationForm(AuthenticationForm):
|
||||||
|
@ -26,8 +26,12 @@ class AdminAuthenticationForm(AuthenticationForm):
|
||||||
if username and password:
|
if username and password:
|
||||||
self.user_cache = authenticate(username=username, password=password)
|
self.user_cache = authenticate(username=username, password=password)
|
||||||
if self.user_cache is None:
|
if self.user_cache is None:
|
||||||
raise forms.ValidationError(message)
|
raise forms.ValidationError(message % {
|
||||||
|
'username': self.username_field.verbose_name
|
||||||
|
})
|
||||||
elif not self.user_cache.is_active or not self.user_cache.is_staff:
|
elif not self.user_cache.is_active or not self.user_cache.is_staff:
|
||||||
raise forms.ValidationError(message)
|
raise forms.ValidationError(message % {
|
||||||
|
'username': self.username_field.verbose_name
|
||||||
|
})
|
||||||
self.check_for_test_cookie()
|
self.check_for_test_cookie()
|
||||||
return self.cleaned_data
|
return self.cleaned_data
|
||||||
|
|
|
@ -148,8 +148,8 @@ class AuthenticationForm(forms.Form):
|
||||||
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
|
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
|
||||||
|
|
||||||
error_messages = {
|
error_messages = {
|
||||||
'invalid_login': _("Please enter a correct username and password. "
|
'invalid_login': _("Please enter a correct %(username)s and password. "
|
||||||
"Note that both fields are case-sensitive."),
|
"Note that both fields may be case-sensitive."),
|
||||||
'no_cookies': _("Your Web browser doesn't appear to have cookies "
|
'no_cookies': _("Your Web browser doesn't appear to have cookies "
|
||||||
"enabled. Cookies are required for logging in."),
|
"enabled. Cookies are required for logging in."),
|
||||||
'inactive': _("This account is inactive."),
|
'inactive': _("This account is inactive."),
|
||||||
|
@ -168,8 +168,8 @@ class AuthenticationForm(forms.Form):
|
||||||
|
|
||||||
# Set the label for the "username" field.
|
# Set the label for the "username" field.
|
||||||
UserModel = get_user_model()
|
UserModel = get_user_model()
|
||||||
username_field = UserModel._meta.get_field(UserModel.USERNAME_FIELD)
|
self.username_field = UserModel._meta.get_field(UserModel.USERNAME_FIELD)
|
||||||
self.fields['username'].label = capfirst(username_field.verbose_name)
|
self.fields['username'].label = capfirst(self.username_field.verbose_name)
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
username = self.cleaned_data.get('username')
|
username = self.cleaned_data.get('username')
|
||||||
|
@ -180,7 +180,9 @@ class AuthenticationForm(forms.Form):
|
||||||
password=password)
|
password=password)
|
||||||
if self.user_cache is None:
|
if self.user_cache is None:
|
||||||
raise forms.ValidationError(
|
raise forms.ValidationError(
|
||||||
self.error_messages['invalid_login'])
|
self.error_messages['invalid_login'] % {
|
||||||
|
'username': self.username_field.verbose_name
|
||||||
|
})
|
||||||
elif not self.user_cache.is_active:
|
elif not self.user_cache.is_active:
|
||||||
raise forms.ValidationError(self.error_messages['inactive'])
|
raise forms.ValidationError(self.error_messages['inactive'])
|
||||||
self.check_for_test_cookie()
|
self.check_for_test_cookie()
|
||||||
|
|
Loading…
Reference in New Issue