Fixed #28751 -- Corrected the error message for inactive users in AdminAuthenticationForm.
Thanks SeungWon Kang for the report and Tim Graham for the review.
This commit is contained in:
parent
359370a8b8
commit
ebb998976e
|
@ -7,16 +7,18 @@ class AdminAuthenticationForm(AuthenticationForm):
|
||||||
"""
|
"""
|
||||||
A custom authentication form used in the admin app.
|
A custom authentication form used in the admin app.
|
||||||
"""
|
"""
|
||||||
error_messages = {
|
error_messages = dict(AuthenticationForm.error_messages)
|
||||||
|
error_messages.update({
|
||||||
'invalid_login': _(
|
'invalid_login': _(
|
||||||
"Please enter the correct %(username)s and password for a staff "
|
"Please enter the correct %(username)s and password for a staff "
|
||||||
"account. Note that both fields may be case-sensitive."
|
"account. Note that both fields may be case-sensitive."
|
||||||
),
|
),
|
||||||
}
|
})
|
||||||
required_css_class = 'required'
|
required_css_class = 'required'
|
||||||
|
|
||||||
def confirm_login_allowed(self, user):
|
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(
|
raise forms.ValidationError(
|
||||||
self.error_messages['invalid_login'],
|
self.error_messages['invalid_login'],
|
||||||
code='invalid_login',
|
code='invalid_login',
|
||||||
|
|
|
@ -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.'])
|
Loading…
Reference in New Issue