Skip to content

Commit

Permalink
Fixed #28751 -- Corrected the error message for inactive users in Adm…
Browse files Browse the repository at this point in the history
…inAuthenticationForm.

Thanks SeungWon Kang for the report and Tim Graham for the review.
  • Loading branch information
shangdahao authored and timgraham committed Nov 8, 2017
1 parent 359370a commit ebb9989
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
8 changes: 5 additions & 3 deletions django/contrib/admin/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,18 @@ class AdminAuthenticationForm(AuthenticationForm):
"""
A custom authentication form used in the admin app.
"""
error_messages = {
error_messages = dict(AuthenticationForm.error_messages)
error_messages.update({
'invalid_login': _(
"Please enter the correct %(username)s and password for a staff "
"account. Note that both fields may be case-sensitive."
),
}
})
required_css_class = 'required'

def confirm_login_allowed(self, user):
if not user.is_active or not user.is_staff:
super().confirm_login_allowed(user)
if not user.is_staff:
raise forms.ValidationError(
self.error_messages['invalid_login'],
code='invalid_login',
Expand Down
17 changes: 17 additions & 0 deletions tests/admin_views/test_forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from django.contrib.admin.forms import AdminAuthenticationForm
from django.contrib.auth.models import User
from django.test import TestCase


class AdminAuthenticationFormTests(TestCase):
@classmethod
def setUpTestData(cls):
User.objects.create_user(username='inactive', password='password', is_active=False)

def test_inactive_user(self):
data = {
'username': 'inactive',
'password': 'password',
}
form = AdminAuthenticationForm(None, data)
self.assertEqual(form.non_field_errors(), ['This account is inactive.'])

0 comments on commit ebb9989

Please sign in to comment.