diff --git a/docs/configuration.rst b/docs/configuration.rst index 1f5b40f..31cd641 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_USE_JWT=True) response for successful authentication in ``rest_auth.views.LoginView``, default value ``rest_auth.serializers.JWTSerializer`` + - JWT_SERIALIZER - (Using REST_AUTH_TOKEN_APP = 'jwt') 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_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) +- **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) - **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 6144011..8d056a7 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_USE_JWT = True + REST_AUTH_TOKEN_APP = 'jwt' diff --git a/rest_auth/app_settings.py b/rest_auth/app_settings.py index eb00544..96568aa 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_USE_KNOX', False): +if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'knox': from rest_auth.serializers import KnoxTokenSerializer as DefaultTokenSerializer else: from rest_auth.serializers import TokenSerializer as DefaultTokenSerializer diff --git a/rest_auth/models.py b/rest_auth/models.py index 13d4f74..3061a97 100644 --- a/rest_auth/models.py +++ b/rest_auth/models.py @@ -1,10 +1,10 @@ from django.conf import settings -if getattr(settings, 'REST_USE_KNOX', False): +if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'knox': try: from knox.models import AuthToken as DefaultTokenModel except ImportError: - raise ImportError("Install django-rest-knox to use REST_USE_KNOX = True") + raise ImportError("Install django-rest-knox before setting REST_AUTH_TOKEN_APP to 'knox'") 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 1e7d8f6..ce84a0d 100644 --- a/rest_auth/registration/views.py +++ b/rest_auth/registration/views.py @@ -43,7 +43,7 @@ class RegisterView(CreateAPIView): allauth_settings.EmailVerificationMethod.MANDATORY: return {"detail": _("Verification e-mail sent.")} - if getattr(settings, 'REST_USE_JWT', False): + if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': data = { 'user': user, 'token': self.token @@ -64,7 +64,7 @@ class RegisterView(CreateAPIView): def perform_create(self, serializer): user = serializer.save(self.request) - if getattr(settings, 'REST_USE_JWT', False): + if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': 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 a24e9f0..014fc43 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_USE_JWT=True) + @override_settings(REST_AUTH_TOKEN_APP='jwt') 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_USE_JWT=True) + @override_settings(REST_AUTH_TOKEN_APP='jwt') 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_USE_JWT=True) + @override_settings(REST_AUTH_TOKEN_APP='jwt') 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 faaf7bb..616ca9d 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_USE_JWT', False): + if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': 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 56bdace..82a41e2 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_USE_JWT=True + REST_AUTH_TOKEN_APP='jwt' ) 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 0493a76..3a03084 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_USE_JWT', False): + if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': 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_USE_JWT', False): + if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': 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_USE_JWT', False): + if getattr(settings, 'REST_AUTH_TOKEN_APP', False) is 'jwt': data = { 'user': self.user, 'token': self.token