From b792321619762519a44144d606d5197063468222 Mon Sep 17 00:00:00 2001 From: Lothar Komas Date: Thu, 28 Dec 2017 17:50:47 +0100 Subject: [PATCH 1/2] refactor views to provide serializer_valid and serializer_invalid as hooks for subclasses --- rest_framework_jwt/views.py | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/rest_framework_jwt/views.py b/rest_framework_jwt/views.py index 30cd4646..71779755 100644 --- a/rest_framework_jwt/views.py +++ b/rest_framework_jwt/views.py @@ -51,24 +51,30 @@ def get_serializer(self, *args, **kwargs): kwargs['context'] = self.get_serializer_context() return serializer_class(*args, **kwargs) + def serializer_valid(self, serializer, request): + user = serializer.object.get('user') or request.user + token = serializer.object.get('token') + response_data = jwt_response_payload_handler(token, user, request) + response = Response(response_data) + if api_settings.JWT_AUTH_COOKIE: + expiration = (datetime.utcnow() + + api_settings.JWT_EXPIRATION_DELTA) + response.set_cookie(api_settings.JWT_AUTH_COOKIE, + token, + expires=expiration, + httponly=True) + return response + + def serializer_invalid(self, serializer, request): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) if serializer.is_valid(): - user = serializer.object.get('user') or request.user - token = serializer.object.get('token') - response_data = jwt_response_payload_handler(token, user, request) - response = Response(response_data) - if api_settings.JWT_AUTH_COOKIE: - expiration = (datetime.utcnow() + - api_settings.JWT_EXPIRATION_DELTA) - response.set_cookie(api_settings.JWT_AUTH_COOKIE, - token, - expires=expiration, - httponly=True) - return response + return self.serializer_valid(serializer, request) - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + return self.serializer_invalid(serializer, request) class ObtainJSONWebToken(JSONWebTokenAPIView): From 52c8b7bfd0305b16575ddd115f8def62ee38e148 Mon Sep 17 00:00:00 2001 From: Lothar Komas Date: Fri, 29 Dec 2017 02:32:01 +0100 Subject: [PATCH 2/2] code formatting to allow tests to pass --- rest_framework_jwt/views.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rest_framework_jwt/views.py b/rest_framework_jwt/views.py index 71779755..b4324955 100644 --- a/rest_framework_jwt/views.py +++ b/rest_framework_jwt/views.py @@ -57,8 +57,7 @@ def serializer_valid(self, serializer, request): response_data = jwt_response_payload_handler(token, user, request) response = Response(response_data) if api_settings.JWT_AUTH_COOKIE: - expiration = (datetime.utcnow() + - api_settings.JWT_EXPIRATION_DELTA) + expiration = (datetime.utcnow() + api_settings.JWT_EXPIRATION_DELTA) response.set_cookie(api_settings.JWT_AUTH_COOKIE, token, expires=expiration,