Skip to content

Commit

Permalink
[1.5.X] Fixed #19368 -- Ensured that login error messages adapt to ch…
Browse files Browse the repository at this point in the history
…anges in the User model.

Thanks to un33k for the report.

Backport of 27f8129 from master.
  • Loading branch information
freakboy3742 committed Dec 15, 2012
1 parent 311bd00 commit 9534192
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 9 deletions.
12 changes: 8 additions & 4 deletions django/contrib/admin/forms.py
Expand Up @@ -6,8 +6,8 @@
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import ugettext_lazy

ERROR_MESSAGE = ugettext_lazy("Please enter the correct username and password "
"for a staff account. Note that both fields are case-sensitive.")
ERROR_MESSAGE = ugettext_lazy("Please enter the correct %(username)s and password "
"for a staff account. Note that both fields may be case-sensitive.")


class AdminAuthenticationForm(AuthenticationForm):
Expand All @@ -26,8 +26,12 @@ def clean(self):
if username and password:
self.user_cache = authenticate(username=username, password=password)
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:
raise forms.ValidationError(message)
raise forms.ValidationError(message % {
'username': self.username_field.verbose_name
})
self.check_for_test_cookie()
return self.cleaned_data
12 changes: 7 additions & 5 deletions django/contrib/auth/forms.py
Expand Up @@ -148,8 +148,8 @@ class AuthenticationForm(forms.Form):
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)

error_messages = {
'invalid_login': _("Please enter a correct username and password. "
"Note that both fields are case-sensitive."),
'invalid_login': _("Please enter a correct %(username)s and password. "
"Note that both fields may be case-sensitive."),
'no_cookies': _("Your Web browser doesn't appear to have cookies "
"enabled. Cookies are required for logging in."),
'inactive': _("This account is inactive."),
Expand All @@ -168,8 +168,8 @@ def __init__(self, request=None, *args, **kwargs):

# Set the label for the "username" field.
UserModel = get_user_model()
username_field = UserModel._meta.get_field(UserModel.USERNAME_FIELD)
self.fields['username'].label = capfirst(username_field.verbose_name)
self.username_field = UserModel._meta.get_field(UserModel.USERNAME_FIELD)
self.fields['username'].label = capfirst(self.username_field.verbose_name)

def clean(self):
username = self.cleaned_data.get('username')
Expand All @@ -180,7 +180,9 @@ def clean(self):
password=password)
if self.user_cache is None:
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:
raise forms.ValidationError(self.error_messages['inactive'])
self.check_for_test_cookie()
Expand Down

0 comments on commit 9534192

Please sign in to comment.