From e1dffa4ef7ee07a9fa0947f66c8b84c5f7bd3f1d Mon Sep 17 00:00:00 2001 From: Daniel Stanton Date: Wed, 25 Jan 2017 10:44:31 +0000 Subject: [PATCH] Reverted use of REST_AUTH_TOKEN_APP This would be a breaking change, and would make it harder to use JWT and Knox simultaneously (e.g. JWT for Web, Knox for Mobile), so reverted. --- docs/configuration.rst | 4 ++-- docs/installation.rst | 2 +- rest_auth/app_settings.py | 2 +- rest_auth/models.py | 4 ++-- rest_auth/registration/views.py | 4 ++-- rest_auth/tests/test_api.py | 6 +++--- rest_auth/tests/test_base.py | 2 +- rest_auth/tests/test_social.py | 2 +- rest_auth/views.py | 6 +++--- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/configuration.rst b/docs/configuration.rst index 31cd641..1f5b40f 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -10,7 +10,7 @@ Configuration - TOKEN_SERIALIZER - response for successful authentication in ``rest_auth.views.LoginView``, default value ``rest_auth.serializers.TokenSerializer`` - - JWT_SERIALIZER - (Using REST_AUTH_TOKEN_APP = 'jwt') response for successful authentication in ``rest_auth.views.LoginView``, default value ``rest_auth.serializers.JWTSerializer`` + - JWT_SERIALIZER - (Using REST_USE_JWT=True) response for successful authentication in ``rest_auth.views.LoginView``, default value ``rest_auth.serializers.JWTSerializer`` - USER_DETAILS_SERIALIZER - serializer class in ``rest_auth.views.UserDetailsView``, default value ``rest_auth.serializers.UserDetailsSerializer`` @@ -46,7 +46,7 @@ Configuration - **REST_SESSION_LOGIN** - Enable session login in Login API view (default: True) -- **REST_AUTH_TOKEN_APP** - Enable a compatible installed third party authentication app instead of built-in Django Rest Framework Tokens. Options are `'jwt'`, using django-rest-framework-jwt http://getblimp.github.io/django-rest-framework-jwt/, and `'knox'`, using django-rest-knox https://github.com/James1345/django-rest-knox/. (default: False) +- **REST_USE_JWT** - Enable JWT Authentication instead of Token/Session based. This is built on top of django-rest-framework-jwt http://getblimp.github.io/django-rest-framework-jwt/, which must also be installed. (default: False) - **OLD_PASSWORD_FIELD_ENABLED** - set it to True if you want to have old password verification on password change enpoint (default: False) diff --git a/docs/installation.rst b/docs/installation.rst index 8d056a7..6144011 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -159,5 +159,5 @@ By default, ``django-rest-auth`` uses Django's Token-based authentication. If yo .. code-block:: python - REST_AUTH_TOKEN_APP = 'jwt' + REST_USE_JWT = True diff --git a/rest_auth/app_settings.py b/rest_auth/app_settings.py index bb6c27a..59d3456 100644 --- a/rest_auth/app_settings.py +++ b/rest_auth/app_settings.py @@ -1,6 +1,6 @@ from django.conf import settings -if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'knox': +if getattr(settings, 'REST_USE_KNOX', False): from .utils import create_knox_token as default_create_token else: from .utils import default_create_token diff --git a/rest_auth/models.py b/rest_auth/models.py index 3061a97..13d4f74 100644 --- a/rest_auth/models.py +++ b/rest_auth/models.py @@ -1,10 +1,10 @@ from django.conf import settings -if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'knox': +if getattr(settings, 'REST_USE_KNOX', False): try: from knox.models import AuthToken as DefaultTokenModel except ImportError: - raise ImportError("Install django-rest-knox before setting REST_AUTH_TOKEN_APP to 'knox'") + raise ImportError("Install django-rest-knox to use REST_USE_KNOX = True") else: from rest_framework.authtoken.models import Token as DefaultTokenModel diff --git a/rest_auth/registration/views.py b/rest_auth/registration/views.py index 9e2dd6d..225ae0d 100644 --- a/rest_auth/registration/views.py +++ b/rest_auth/registration/views.py @@ -44,7 +44,7 @@ class RegisterView(CreateAPIView): allauth_settings.EmailVerificationMethod.MANDATORY: return {"detail": _("Verification e-mail sent.")} - if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': + if getattr(settings, 'REST_USE_JWT', False): data = { 'user': user, 'token': self.token @@ -71,7 +71,7 @@ class RegisterView(CreateAPIView): def perform_create(self, serializer): user = serializer.save(self.request) - if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': + if getattr(settings, 'REST_USE_JWT', False): self.token = jwt_encode(user) else: self.token = create_token(self.token_model, user, serializer) diff --git a/rest_auth/tests/test_api.py b/rest_auth/tests/test_api.py index 014fc43..a24e9f0 100644 --- a/rest_auth/tests/test_api.py +++ b/rest_auth/tests/test_api.py @@ -136,7 +136,7 @@ class APITestCase1(TestCase, BaseAPITestCase): self.post(self.login_url, data=payload, status_code=200) - @override_settings(REST_AUTH_TOKEN_APP='jwt') + @override_settings(REST_USE_JWT=True) def test_login_jwt(self): payload = { "username": self.USERNAME, @@ -367,7 +367,7 @@ class APITestCase1(TestCase, BaseAPITestCase): self.assertEqual(user.last_name, self.response.json['last_name']) self.assertEqual(user.email, self.response.json['email']) - @override_settings(REST_AUTH_TOKEN_APP='jwt') + @override_settings(REST_USE_JWT=True) def test_user_details_using_jwt(self): user = get_user_model().objects.create_user(self.USERNAME, self.EMAIL, self.PASS) payload = { @@ -398,7 +398,7 @@ class APITestCase1(TestCase, BaseAPITestCase): self._login() self._logout() - @override_settings(REST_AUTH_TOKEN_APP='jwt') + @override_settings(REST_USE_JWT=True) def test_registration_with_jwt(self): user_count = get_user_model().objects.all().count() diff --git a/rest_auth/tests/test_base.py b/rest_auth/tests/test_base.py index 616ca9d..faaf7bb 100644 --- a/rest_auth/tests/test_base.py +++ b/rest_auth/tests/test_base.py @@ -37,7 +37,7 @@ class BaseAPITestCase(object): # check_headers = kwargs.pop('check_headers', True) if hasattr(self, 'token'): - if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': + if getattr(settings, 'REST_USE_JWT', False): kwargs['HTTP_AUTHORIZATION'] = 'JWT %s' % self.token else: kwargs['HTTP_AUTHORIZATION'] = 'Token %s' % self.token diff --git a/rest_auth/tests/test_social.py b/rest_auth/tests/test_social.py index 82a41e2..56bdace 100644 --- a/rest_auth/tests/test_social.py +++ b/rest_auth/tests/test_social.py @@ -280,7 +280,7 @@ class TestSocialAuth(TestCase, BaseAPITestCase): @responses.activate @override_settings( - REST_AUTH_TOKEN_APP='jwt' + REST_USE_JWT=True ) def test_jwt(self): resp_body = '{"id":"123123123123","first_name":"John","gender":"male","last_name":"Smith","link":"https:\\/\\/www.facebook.com\\/john.smith","locale":"en_US","name":"John Smith","timezone":2,"updated_time":"2014-08-13T10:14:38+0000","username":"john.smith","verified":true}' # noqa diff --git a/rest_auth/views.py b/rest_auth/views.py index 3a03084..0493a76 100644 --- a/rest_auth/views.py +++ b/rest_auth/views.py @@ -52,7 +52,7 @@ class LoginView(GenericAPIView): django_login(self.request, self.user) def get_response_serializer(self): - if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': + if getattr(settings, 'REST_USE_JWT', False): response_serializer = JWTSerializer else: response_serializer = TokenSerializer @@ -61,7 +61,7 @@ class LoginView(GenericAPIView): def login(self): self.user = self.serializer.validated_data['user'] - if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': + if getattr(settings, 'REST_USE_JWT', False): self.token = jwt_encode(self.user) else: self.token = create_token(self.token_model, self.user, @@ -73,7 +73,7 @@ class LoginView(GenericAPIView): def get_response(self): serializer_class = self.get_response_serializer() - if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': + if getattr(settings, 'REST_USE_JWT', False): data = { 'user': self.user, 'token': self.token