diff options
author | Brendan McCollam <bmccollam@uchicago.edu> | 2016-11-18 15:39:04 +0000 |
---|---|---|
committer | Brendan McCollam <bmccollam@uchicago.edu> | 2016-12-22 15:00:32 +0000 |
commit | a43ed5d5b0a2ae1be67935a701b48ba83b4d9893 (patch) | |
tree | be8ba77718ad01e7234e4d71d722f499d6a06010 /oauthlib/oauth2/rfc6749/grant_types/base.py | |
parent | f0bbc526065ff88eaa431163d8d7c1f72694221b (diff) | |
download | oauthlib-a43ed5d5b0a2ae1be67935a701b48ba83b4d9893.tar.gz |
Move custom validator registration onto GrantTypeBase
Diffstat (limited to 'oauthlib/oauth2/rfc6749/grant_types/base.py')
-rw-r--r-- | oauthlib/oauth2/rfc6749/grant_types/base.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/oauthlib/oauth2/rfc6749/grant_types/base.py b/oauthlib/oauth2/rfc6749/grant_types/base.py index 36b06eb..5a3888a 100644 --- a/oauthlib/oauth2/rfc6749/grant_types/base.py +++ b/oauthlib/oauth2/rfc6749/grant_types/base.py @@ -9,6 +9,7 @@ import logging from oauthlib.common import add_params_to_uri from oauthlib.oauth2.rfc6749 import errors, utils +from ..request_validator import RequestValidator log = logging.getLogger(__name__) @@ -17,6 +18,49 @@ class GrantTypeBase(object): error_uri = None request_validator = None default_response_mode = 'fragment' + refresh_token = True + response_types = ['code'] + + def __init__(self, request_validator=None, **kwargs): + self.request_validator = request_validator or RequestValidator() + + # Transforms class variables into instance variables: + self.response_types = self.response_types + self.refresh_token = self.refresh_token + + self._setup_validator_hooks() + for kw, val in kwargs.items(): + setattr(self, kw, val) + + def _setup_validator_hooks(self): + self._auth_validators_run_before_standard_ones = [] + self._auth_validators_run_after_standard_ones = [] + self._token_validators_run_before_standard_ones = [] + self._token_validators_run_after_standard_ones = [] + self._code_modifiers = [] + self._token_modifiers = [] + + def register_response_type(self, response_type): + self.response_types.append(response_type) + + def register_authorization_validator(self, validator, after_standard=True): + if after_standard: + self._auth_validators_run_after_standard_ones.append(validator) + else: + self._auth_validators_run_before_standard_ones.append(validator) + + def register_token_validator(self, validator, after_standard=True): + if after_standard: + self._token_validators_run_after_standard_ones.append(validator) + else: + self._token_validators_run_before_standard_ones.append(validator) + + def register_code_modifier(self, modifier): + self._code_modifiers.append(modifier) + + def register_token_modifier(self, modifier): + self._token_modifiers.append(modifier) + def create_authorization_response(self, request, token_handler): raise NotImplementedError('Subclasses must implement this method.') |