Exemple #1
0
    def auth_complete(self, *args, **kwargs):
        """Return user, might be logged in"""
        # Multiple unauthorized tokens are supported (see #521)
        name = self.AUTH_BACKEND.name + "unauthorized_token_name"
        token = None
        unauthed_tokens = self.request.session.get(name) or []
        if not unauthed_tokens:
            raise AuthTokenError(self, "Missing unauthorized token")
        for unauthed_token in unauthed_tokens:
            token = unauthed_token
            if not isinstance(unauthed_token, dict):
                token = parse_qs(unauthed_token)
            if token.get("oauth_token") == self.data.get("oauth_token"):
                unauthed_tokens = list(
                    set(unauthed_tokens) - set([unauthed_token]))
                self.request.session[name] = unauthed_tokens
                self.request.session.modified = True
                break
        else:
            raise AuthTokenError(self, "Incorrect tokens")

        try:
            access_token = self.access_token(token)
        except HTTPError as e:
            if e.code == 400:
                raise AuthCanceled(self)
            else:
                raise
        return self.do_auth(access_token, *args, **kwargs)
Exemple #2
0
 def oauth_authorization_request(self, token):
     """Generate OAuth request to authorize token."""
     if not isinstance(token, dict):
         token = parse_qs(token)
     params = self.auth_extra_arguments() or {}
     params.update(self.get_scope_argument())
     params["oauth_token"] = token.get("oauth_token")
     params["redirect_uri"] = self.redirect_uri
     return self.AUTHORIZATION_URL + "?" + urlencode(params)