code: def _stash_user(cls, user):
          
          global _stash
          ret = getattr(_stash, 'user', None)
          _stash.user = user
          return ret
docs: Now, be aware, the following is quite ugly, let me explain:
  
          Even if the user credentials match, the authentication can fail because
          Django's default ModelBackend calls user_can_authenticate(), which
          checks `is_active`. Now, earlier versions of allauth did not do this
          and simply returned the user as authenticated, even in case of
          `is_active=False`. For allauth scope, this does not pose a problem, as
          these users are properly redirected to an account inactive page.
  
          This does pose a problem when the allauth backend is used in a
          different context where allauth is not responsible for the login. Then,
          by not checking on `user_can_authenticate()` users will allow to become
          authenticated whereas according to Django logic this should not be
          allowed.
  
          In order to preserve the allauth behavior while respecting Django's
          logic, we stash a user for which the password check succeeded but
          `user_can_authenticate()` failed. In the allauth authentication logic,
          we can then unstash this user and proceed pointing the user to the
          account inactive page.