mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-01-23 15:54:16 +03:00
it's safe to import scope and constants
This commit is contained in:
parent
86375f2d95
commit
34887ed756
|
@ -551,6 +551,8 @@ except (ImportError, ImproperlyConfigured):
|
|||
# OAuth 2 support is optional
|
||||
try:
|
||||
import provider as oauth2_provider
|
||||
from provider import scope as oauth2_provider_scope
|
||||
from provider import constants as oauth2_constants
|
||||
if oauth2_provider.__version__ in ('0.2.3', '0.2.4'):
|
||||
# 0.2.3 and 0.2.4 are supported version that do not support
|
||||
# timezone aware datetimes
|
||||
|
@ -561,6 +563,8 @@ try:
|
|||
from django.utils.timezone import now as provider_now
|
||||
except ImportError:
|
||||
oauth2_provider = None
|
||||
oauth2_provider_scope = None
|
||||
oauth2_constants = None
|
||||
provider_now = None
|
||||
|
||||
# Handle lazy strings
|
||||
|
|
|
@ -8,7 +8,8 @@ import warnings
|
|||
SAFE_METHODS = ['GET', 'HEAD', 'OPTIONS']
|
||||
|
||||
from django.http import Http404
|
||||
from rest_framework.compat import (get_model_name, oauth2_provider)
|
||||
from rest_framework.compat import (get_model_name, oauth2_provider_scope,
|
||||
oauth2_constants)
|
||||
|
||||
|
||||
class BasePermission(object):
|
||||
|
@ -218,8 +219,8 @@ class TokenHasReadWriteScope(BasePermission):
|
|||
if hasattr(token, 'resource'): # OAuth 1
|
||||
return read_only or not request.auth.resource.is_readonly
|
||||
elif hasattr(token, 'scope'): # OAuth 2
|
||||
required = oauth2_provider.constants.READ if read_only else oauth2_provider.constants.WRITE
|
||||
return oauth2_provider.scope.check(required, request.auth.scope)
|
||||
required = oauth2_constants.READ if read_only else oauth2_constants.WRITE
|
||||
return oauth2_provider_scope.check(required, request.auth.scope)
|
||||
|
||||
assert False, ('TokenHasReadWriteScope requires either the'
|
||||
'`OAuthAuthentication` or `OAuth2Authentication` authentication '
|
||||
|
|
|
@ -19,7 +19,7 @@ from rest_framework.authentication import (
|
|||
)
|
||||
from rest_framework.authtoken.models import Token
|
||||
from rest_framework.compat import patterns, url, include
|
||||
from rest_framework.compat import oauth2_provider
|
||||
from rest_framework.compat import oauth2_provider, oauth2_provider_scope
|
||||
from rest_framework.compat import oauth, oauth_provider
|
||||
from rest_framework.test import APIRequestFactory, APIClient
|
||||
from rest_framework.views import APIView
|
||||
|
@ -581,7 +581,7 @@ class OAuth2Tests(TestCase):
|
|||
def test_post_form_with_invalid_scope_failing_auth(self):
|
||||
"""Ensure POSTing with a readonly scope instead of a write scope fails"""
|
||||
read_only_access_token = self.access_token
|
||||
read_only_access_token.scope = oauth2_provider.scope.SCOPE_NAME_DICT['read']
|
||||
read_only_access_token.scope = oauth2_provider_scope.SCOPE_NAME_DICT['read']
|
||||
read_only_access_token.save()
|
||||
auth = self._create_authorization_header(token=read_only_access_token.token)
|
||||
response = self.csrf_client.get('/oauth2-with-scope-test/', HTTP_AUTHORIZATION=auth)
|
||||
|
@ -593,7 +593,7 @@ class OAuth2Tests(TestCase):
|
|||
def test_post_form_with_valid_scope_passing_auth(self):
|
||||
"""Ensure POSTing with a write scope succeed"""
|
||||
read_write_access_token = self.access_token
|
||||
read_write_access_token.scope = oauth2_provider.scope.SCOPE_NAME_DICT['write']
|
||||
read_write_access_token.scope = oauth2_provider_scope.SCOPE_NAME_DICT['write']
|
||||
read_write_access_token.save()
|
||||
auth = self._create_authorization_header(token=read_write_access_token.token)
|
||||
response = self.csrf_client.post('/oauth2-with-scope-test/', HTTP_AUTHORIZATION=auth)
|
||||
|
|
Loading…
Reference in New Issue
Block a user