summaryrefslogtreecommitdiff
path: root/oauthlib/oauth1/rfc5849/endpoints/authorization.py
diff options
context:
space:
mode:
authorIb Lundgren <ib.lundgren@gmail.com>2013-06-18 21:23:57 +0100
committerIb Lundgren <ib.lundgren@gmail.com>2013-06-18 21:23:57 +0100
commit6a634e0fe9abf14058e56749ecfa27db1c6b1732 (patch)
tree5b88291c45b288abcd7977b51ca19df349b864a6 /oauthlib/oauth1/rfc5849/endpoints/authorization.py
parent012deaf43189fb94a5b7a392ccfb6c15acb03d1e (diff)
downloadoauthlib-6a634e0fe9abf14058e56749ecfa27db1c6b1732.tar.gz
Authorization endpoint. #95
Diffstat (limited to 'oauthlib/oauth1/rfc5849/endpoints/authorization.py')
-rw-r--r--oauthlib/oauth1/rfc5849/endpoints/authorization.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/oauthlib/oauth1/rfc5849/endpoints/authorization.py b/oauthlib/oauth1/rfc5849/endpoints/authorization.py
new file mode 100644
index 0000000..672863b
--- /dev/null
+++ b/oauthlib/oauth1/rfc5849/endpoints/authorization.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import, unicode_literals
+
+"""
+oauthlib.oauth1.rfc5849
+~~~~~~~~~~~~~~
+
+This module is an implementation of various logic needed
+for signing and checking OAuth 1.0 RFC 5849 requests.
+"""
+
+from oauthlib.common import Request, add_params_to_uri
+
+from .base import BaseEndpoint
+from .. import errors
+
+
+class AuthorizationEndpoint(BaseEndpoint):
+
+ def create_verifier(self, request, credentials):
+ verifier = {
+ 'oauth_token': request.oauth_token,
+ 'oauth_verifier': self.token_generator(),
+ }
+ verifier.update(credentials)
+ self.request_validator.save_verifier(
+ request.oauth_token, verifier, request)
+ return verifier
+
+ def create_authorization_response(self, uri, http_method='GET', body=None,
+ headers=None, realms=None, credentials=None):
+ request = Request(uri, http_method=http_method, body=body,
+ headers=headers)
+
+ if not self.request_validator.verify_request_token(
+ request.oauth_token, request):
+ raise errors.InvalidClientError()
+ if not request.oauth_token:
+ raise NotImplementedError('request.oauth_token must be set after '
+ 'request token verification.')
+
+ request.realms = realms
+ if (request.realms and not self.request_validator.verify_realms(
+ request.oauth_token, request.realms, request)):
+ raise errors.InvalidRequestError(
+ description=('User granted access to realms outside of '
+ 'what the client may request.'))
+
+ redirect_uri = self.request_validator.get_redirect_uri(
+ request.oauth_token, request)
+ verifier = self.create_verifier(request, credentials or {})
+ uri = add_params_to_uri(redirect_uri, verifier.items())
+ return uri, {}, None, 301
+
+ def get_realms_and_credentials(self, uri, http_method='GET', body=None,
+ headers=None):
+ request = Request(uri, http_method=http_method, body=body,
+ headers=headers)
+
+ if not self.request_validator.verify_request_token(
+ request.oauth_token, request):
+ raise errors.InvalidClientError()
+
+ realms = self.request_validator.get_realms(
+ request.oauth_token, request)
+ return realms, {'resource_owner_key': request.oauth_token}