In admin login site, I found that ValidationError message for 'inactive' user does not exist. (In AuthenticationForm it exists) I know default BackEnd checks the is_active in user_can_authenticate() method, but I think adding this error message would be helpful if using other BackEnd like AllowAllUsersModelBackEnd.
In AuthenticationForm, it shows inactive error message to the inactive user(user that is_active=False
)
def confirm_login_allowed(self, user):
...
if not user.is_active:
raise forms.ValidationError(
self.error_messages['inactive'],
code='inactive',
)
but in AdminAuthenticationForm, it shows invalid_login error message to the inactive user(user that is_active=False
)
def confirm_login_allowed(self, user):
if not user.is_active or not user.is_staff:
raise forms.ValidationError(
self.error_messages['invalid_login'],
code='invalid_login',
params={'username': self.username_field.verbose_name}
)
So I suggest to change it like
error_messages = {
...
'inactive': _("This account is inactive."),
}
...
def confirm_login_allowed(self, user):
if not user.is_active:
raise forms.ValidationError(
self.error_messages['inactive'],
code='inactive',
)
if not user.is_staff:
raise forms.ValidationError(
self.error_messages['invalid_login'],
code='invalid_login',
params = {'username': self.username_field.verbose_name},
)
....
PR
This ticket is related to ticket_28645, so I make the commits for these two tickets in the same PR.