Esempio n. 1
0
def get_user(request):
    from seahub.auth.models import AnonymousUser
    try:
        username = request.session[SESSION_KEY]
        backend_path = request.session[BACKEND_SESSION_KEY]
        backend = load_backend(backend_path)
        user = backend.get_user(username) or AnonymousUser()
    except KeyError:
        user = AnonymousUser()
    return user
Esempio n. 2
0
    def authenticate(self, request):
        """
        auth request from repo_api_token,
        fill request.user with AnonymousUser temporarily,
        return key from headers' token,
        and set request.token_creator to person whom repo_api_token was generated by
        :param request: request
        :return: AnonymousUser, repo_api_token
        """
        auth = request.META.get('HTTP_AUTHORIZATION', '').split()
        if not auth or auth[0].lower() != 'token':
            return None

        if len(auth) == 1:
            msg = 'Invalid token header. No credentials provided.'
            raise AuthenticationFailed(msg)
        elif len(auth) > 2:
            msg = 'Invalid token header. Token string should not contain spaces.'
            raise AuthenticationFailed(msg)

        rat = RepoAPITokens.objects.filter(token=auth[1]).first()
        if not rat:
            raise AuthenticationFailed('Token inactive or deleted')
        request.repo_api_token_obj = rat

        return AnonymousUser(), auth[1]
Esempio n. 3
0
def logout(request):
    """
    Removes the authenticated user's ID from the request and flushes their
    session data.
    Also remove all passwords used to decrypt repos.
    """
    request.session.flush()
    if hasattr(request, 'user'):
        from seahub.base.accounts import User
        if isinstance(request.user, User):
            pass
        from seahub.auth.models import AnonymousUser
        request.user = AnonymousUser()
Esempio n. 4
0
def logout(request):
    """
    Removes the authenticated user's ID from the request and flushes their
    session data.
    Also remove all passwords used to decrypt repos.
    """
    request.session.flush()
    if hasattr(request, 'user'):
        from seahub.base.accounts import User
        if isinstance(request.user, User):
            if is_org_context(request):
                org_id = request.user.org.org_id
                request.user.remove_org_repo_passwds(org_id)
            else:
                request.user.remove_repo_passwds()
        from seahub.auth.models import AnonymousUser
        request.user = AnonymousUser()
Esempio n. 5
0
def auth(request):
    """
    Returns context variables required by apps that use Django's authentication
    system.

    If there is no 'user' attribute in the request, uses AnonymousUser (from
    django.contrib.auth).
    """
    if hasattr(request, 'user'):
        user = request.user
    else:
        from seahub.auth.models import AnonymousUser
        user = AnonymousUser()

    return {
        'user': user,
        'perms': None,
    }
Esempio n. 6
0
    def test_anonymous_user(self):
        self.request.user = AnonymousUser()

        unenc_repos = get_unencry_rw_repos_by_user(self.request)
        assert len(unenc_repos) == 0
Esempio n. 7
0
 def test_anonymous_user(self):
     self.fake_request.user = AnonymousUser()
     resp = a_view(self.fake_request, self.group.id)
     self.assertEqual(resp.status_code, 302)
     self.assertRegex(resp['Location'], '/accounts/login')
Esempio n. 8
0
 def _anon_post_request(self, data={}, session={}):
     request = self.factory.post('/rand', data)
     request.user = AnonymousUser()
     request.session = session
     request.cloud_mode = False
     return request
Esempio n. 9
0
 def _anon_request(self, session={}):
     request = self.factory.get('/rand')
     request.user = AnonymousUser()
     request.session = session
     request.cloud_mode = False
     return request