diff options
author | Ib Lundgren <ib.lundgren@gmail.com> | 2014-10-03 14:30:19 +0100 |
---|---|---|
committer | Joel Stevenson <jstevenson@bepress.com> | 2016-04-14 17:29:50 -0700 |
commit | e0ed5d8ac3174dd7adf023baaaeb35aaefa0081c (patch) | |
tree | b7411778aea970a71c8606dc6cabfeaa55e82535 /oauthlib/oauth2/rfc6749/grant_types/implicit.py | |
parent | d66e937b30004e54ef0680103e3fc9abb3e8d87f (diff) | |
download | oauthlib-e0ed5d8ac3174dd7adf023baaaeb35aaefa0081c.tar.gz |
Response mode support.
Diffstat (limited to 'oauthlib/oauth2/rfc6749/grant_types/implicit.py')
-rw-r--r-- | oauthlib/oauth2/rfc6749/grant_types/implicit.py | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/oauthlib/oauth2/rfc6749/grant_types/implicit.py b/oauthlib/oauth2/rfc6749/grant_types/implicit.py index 94427d0..6b8f423 100644 --- a/oauthlib/oauth2/rfc6749/grant_types/implicit.py +++ b/oauthlib/oauth2/rfc6749/grant_types/implicit.py @@ -119,6 +119,18 @@ class ImplicitGrant(GrantTypeBase): def __init__(self, request_validator=None): self.request_validator = request_validator or RequestValidator() + self._authorization_validators = [] + self._token_modifiers = [] + self.response_types = ['token'] + + def register_response_type(self, response_type): + self.response_types.append(response_type) + + def register_authorization_validator(self, validator): + self._authorization_validators.append(validator) + + def register_token_modifier(self, modifier): + self._token_modifiers.append(modifier) def create_authorization_response(self, request, token_handler): """Create an authorization response. @@ -231,11 +243,10 @@ class ImplicitGrant(GrantTypeBase): token = token_handler.create_token(request, refresh_token=False) # NEW-FOR-OPENID for modifier in self._token_modifiers: - token = modifier(token) + token = modifier(token, token_handler, request) self.request_validator.save_token(token, request) - # END-NEW-FOR-OPENID - return {'Location': common.add_params_to_uri(request.redirect_uri, token.items(), - fragment=True)}, None, 302 + return self.prepare_authorization_response( + request, token, {}, None, 302) def validate_authorization_request(self, request): return self.validate_token_request(request) @@ -341,10 +352,15 @@ class ImplicitGrant(GrantTypeBase): # http://tools.ietf.org/html/rfc6749#section-3.3 self.validate_scopes(request) - return request.scopes, { - 'client_id': request.client_id, - 'redirect_uri': request.redirect_uri, - 'response_type': request.response_type, - 'state': request.state, - 'request': request, + request_info = { + 'client_id': request.client_id, + 'redirect_uri': request.redirect_uri, + 'response_type': request.response_type, + 'state': request.state, + 'request': request, } + + for validator in self._authorization_validators: + request_info.update(validator(request)) + + return request.scopes, request_info |