#28751: Add an error message for inactive user login in AdminAuthenticationForm
-------------------------------------+-------------------------------------
     Reporter:  SeungWon Kang        |                    Owner:  nobody
         Type:                       |                   Status:  new
  Cleanup/optimization               |
    Component:  contrib.admin        |                  Version:  master
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Description changed by SeungWon Kang:

Old description:

> In admin login site, I found that error message for 'inactive' user does
> not exist. (In AuthenticationForm it exists) I know default BackEnd
> checks the inactive in user_can_authenticate() method, but I think this
> error message is helpful if using other BackEnd like
> AllowAllUsersModelBackEnd.
>
> In AuthenticationForm,
> {{{
>     def confirm_login_allowed(self, user):
>         ...
>         if not user.is_active:
>             raise forms.ValidationError(
>                 self.error_messages['inactive'],
>                 code='inactive',
>             )
> }}}
>
> but in AdminAuthenticationForm,
>
> {{{
>     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}
>             )
> }}}

New description:

 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},
             )
     ....
 }}}

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/28751#comment:3>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/065.6c74c0357a8c101810793ec5777a35ab%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to