summaryrefslogtreecommitdiff
path: root/oauthlib/oauth2/rfc6749/grant_types/base.py
diff options
context:
space:
mode:
authorBrendan McCollam <bmccollam@uchicago.edu>2016-11-18 15:39:04 +0000
committerBrendan McCollam <bmccollam@uchicago.edu>2016-12-22 15:00:32 +0000
commita43ed5d5b0a2ae1be67935a701b48ba83b4d9893 (patch)
treebe8ba77718ad01e7234e4d71d722f499d6a06010 /oauthlib/oauth2/rfc6749/grant_types/base.py
parentf0bbc526065ff88eaa431163d8d7c1f72694221b (diff)
downloadoauthlib-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.py44
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.')