1 # -*- coding: utf-8 -*-
3 oauthlib.oauth2.rfc6749.grant_types
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 from __future__ import unicode_literals, absolute_import
10 from oauthlib.oauth2.rfc6749 import errors, utils
12 log = logging.getLogger(__name__)
15 class GrantTypeBase(object):
17 request_validator = None
19 def create_authorization_response(self, request, token_handler):
20 raise NotImplementedError('Subclasses must implement this method.')
22 def create_token_response(self, request, token_handler):
23 raise NotImplementedError('Subclasses must implement this method.')
25 def validate_grant_type(self, request):
26 client_id = getattr(request, 'client_id', None)
27 if not self.request_validator.validate_grant_type(client_id,
28 request.grant_type, request.client, request):
29 log.debug('Unauthorized from %r (%r) access to grant type %s.',
30 request.client_id, request.client, request.grant_type)
31 raise errors.UnauthorizedClientError(request=request)
33 def validate_scopes(self, request):
34 if not request.scopes:
35 request.scopes = utils.scope_to_list(request.scope) or utils.scope_to_list(
36 self.request_validator.get_default_scopes(request.client_id, request))
37 log.debug('Validating access to scopes %r for client %r (%r).',
38 request.scopes, request.client_id, request.client)
39 if not self.request_validator.validate_scopes(request.client_id,
40 request.scopes, request.client, request):
41 raise errors.InvalidScopeError(request=request)