diff options
| author | swistakm | 2013-02-26 11:22:21 +0100 | 
|---|---|---|
| committer | swistakm | 2013-02-26 11:22:21 +0100 | 
| commit | 59a6f5f463472656518cb0680b9da5f22a724882 (patch) | |
| tree | 6f4b2c00a7004b30d5539c89e5788a44cec4746c /rest_framework/authentication.py | |
| parent | 5d9ed34e4115f683294082faf9c9584a53bb7e49 (diff) | |
| download | django-rest-framework-59a6f5f463472656518cb0680b9da5f22a724882.tar.bz2 | |
Move oauth2 and django-oauth-plus imports to compat and fix some minor issues
- alias oauth2 as oauth
- remove rouge print
- remove docstring markups
- OAuthAuthentication.authenticate() now returns (user, token) two-tuple on success
- don't set request.user because it's already set
Diffstat (limited to 'rest_framework/authentication.py')
| -rw-r--r-- | rest_framework/authentication.py | 31 | 
1 files changed, 10 insertions, 21 deletions
| diff --git a/rest_framework/authentication.py b/rest_framework/authentication.py index 2bd0767e..b507c5e1 100644 --- a/rest_framework/authentication.py +++ b/rest_framework/authentication.py @@ -4,23 +4,14 @@ Provides a set of pluggable authentication policies.  from __future__ import unicode_literals  from django.contrib.auth import authenticate  from django.utils.encoding import DjangoUnicodeDecodeError +from django.core.exceptions import ImproperlyConfigured  from rest_framework import exceptions, HTTP_HEADER_ENCODING  from rest_framework.compat import CsrfViewMiddleware +from rest_framework.compat import oauth +from rest_framework.compat import oauth_provider  from rest_framework.authtoken.models import Token  import base64 -from django.core.exceptions import ImproperlyConfigured -try: -    import oauth2 -except ImportError: -    oauth2 = None - -try: -    import oauth_provider -    from oauth_provider.store import store -except ImportError: -    oauth_provider = None -  class BaseAuthentication(object):      """ @@ -169,15 +160,15 @@ class TokenAuthentication(BaseAuthentication):  class OAuthAuthentication(BaseAuthentication):      """rest_framework OAuth authentication backend using -    django-oath-plus""" +    django-oath-plus and oauth2"""      www_authenticate_realm = 'api'      require_active = True      def __init__(self, **kwargs):          super(OAuthAuthentication, self).__init__(**kwargs) -        if oauth2 is None: -            raise ImproperlyConfigured("The 'python-oauth2' package could not be imported. It is required for use with the 'OAuthAuthentication' class.") +        if oauth is None: +            raise ImproperlyConfigured("The 'oauth2' package could not be imported. It is required for use with the 'OAuthAuthentication' class.")          if oauth_provider is None:              raise ImproperlyConfigured("The 'django-oauth-plus' package could not be imported. It is required for use with the 'OAuthAuthentication' class.") @@ -185,7 +176,7 @@ class OAuthAuthentication(BaseAuthentication):      def authenticate(self, request):          """ -        :returns: two-tuple of (user, auth) if authentication succeeds, or None otherwise. +        Returns two-tuple of (user, auth token) if authentication succeeds, or None otherwise.          """          from oauth_provider.store import store          if self.is_valid_request(request): @@ -213,16 +204,14 @@ class OAuthAuthentication(BaseAuthentication):              try:                  self.validate_token(request, consumer, token) -            except oauth2.Error, e: -                print "got e" +            except oauth.Error, e:                  raise exceptions.AuthenticationFailed(e.message)              if not self.check_active(token.user):                  raise exceptions.AuthenticationFailed('User not active: %s' % token.user.username)              if consumer and token: -                request.user = token.user -                return (request.user, None) +                return (token.user, token)              raise exceptions.AuthenticationFailed(                  'You are not allowed to access this resource.') @@ -272,4 +261,4 @@ class OAuthAuthentication(BaseAuthentication):      def check_nonce(self, request, oauth_request):          """Checks nonce of request""" -        return store.check_nonce(request, oauth_request, oauth_request['oauth_nonce']) +        return oauth_provider.store.store.check_nonce(request, oauth_request, oauth_request['oauth_nonce']) | 
