summaryrefslogtreecommitdiff
path: root/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py
diff options
context:
space:
mode:
authorIb Lundgren <ib.lundgren@gmail.com>2014-10-01 14:58:00 +0100
committerJoel Stevenson <jstevenson@bepress.com>2016-04-14 17:19:49 -0700
commit4da15da8e4ac49b42f7d5ab2c9b42de2f2d194c6 (patch)
tree3354612073ab3ddac95c5f147479cbbd81be7eb6 /oauthlib/oauth2/rfc6749/grant_types/authorization_code.py
parent21cbb8f711cb7ba71ef0c5706ff37c595d2d7cbd (diff)
downloadoauthlib-4da15da8e4ac49b42f7d5ab2c9b42de2f2d194c6.tar.gz
Support for extra token validators and code modifiers.
Diffstat (limited to 'oauthlib/oauth2/rfc6749/grant_types/authorization_code.py')
-rw-r--r--oauthlib/oauth2/rfc6749/grant_types/authorization_code.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py b/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py
index f8fe45d..7373f15 100644
--- a/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py
+++ b/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py
@@ -100,6 +100,8 @@ class AuthorizationCodeGrant(GrantTypeBase):
self.refresh_token = refresh_token
# NEW-FOR-OPENID
self._authorization_validators = []
+ self._token_validators = []
+ self._code_modifiers = []
self._token_modifiers = []
self.response_types = ['code']
@@ -109,6 +111,12 @@ class AuthorizationCodeGrant(GrantTypeBase):
def register_authorization_validator(self, validator):
self._authorization_validators.append(validator)
+ def register_token_validator(self, validator):
+ self._token_validators.append(validator)
+
+ def register_code_modifier(self, modifier):
+ self._code_modifiers.append(modifier)
+
def register_token_modifier(self, modifier):
self._token_modifiers.append(modifier)
@@ -227,6 +235,8 @@ class AuthorizationCodeGrant(GrantTypeBase):
return {'Location': common.add_params_to_uri(request.redirect_uri, e.twotuples)}, None, 302
grant = self.create_authorization_code(request)
+ for modifier in self._code_modifiers:
+ grant = modifier(grant, token_handler, request)
log.debug('Saving grant %r for %r.', grant, request)
self.request_validator.save_authorization_code(
request.client_id, grant, request)
@@ -256,7 +266,7 @@ class AuthorizationCodeGrant(GrantTypeBase):
token = token_handler.create_token(request, refresh_token=self.refresh_token)
# NEW-FOR-OPENID
for modifier in self._token_modifiers:
- token = modifier(token)
+ token = modifier(token, token_handler, request)
self.request_validator.save_token(token)
# END-NEW-FOR-OPENID
self.request_validator.invalidate_authorization_code(
@@ -426,3 +436,7 @@ class AuthorizationCodeGrant(GrantTypeBase):
log.debug('Redirect_uri (%r) invalid for client %r (%r).',
request.redirect_uri, request.client_id, request.client)
raise errors.AccessDeniedError(request=request)
+
+ for validator in self._token_validators:
+ validator(request)
+