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.
|
||||
"""
|
||||
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',
|
||||
|
|
|
@ -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