diff --git a/rest_framework_jwt/serializers.py b/rest_framework_jwt/serializers.py index 7b8a2b24..f79079f7 100644 --- a/rest_framework_jwt/serializers.py +++ b/rest_framework_jwt/serializers.py @@ -88,7 +88,7 @@ class VerificationBaseSerializer(Serializer): token = serializers.CharField() def validate(self, attrs): - msg = _('Please define a validate method.') + msg = 'Please define a validate method.' raise NotImplementedError(msg) def _check_payload(self, token): diff --git a/rest_framework_jwt/views.py b/rest_framework_jwt/views.py index e2ef064b..d26986d5 100644 --- a/rest_framework_jwt/views.py +++ b/rest_framework_jwt/views.py @@ -14,18 +14,15 @@ jwt_response_payload_handler = api_settings.JWT_RESPONSE_PAYLOAD_HANDLER -class ObtainJSONWebToken(APIView): +class JWTAPIView(APIView): """ - API View that receives a POST with a user's username and password. - - Returns a JSON Web Token that can be used for authenticated requests. + Base API View that various JWT interactions inherit from. """ throttle_classes = () permission_classes = () authentication_classes = () parser_classes = (parsers.FormParser, parsers.JSONParser,) renderer_classes = (renderers.JSONRenderer,) - serializer_class = JSONWebTokenSerializer def post(self, request): serializer = self.serializer_class(data=request.DATA) @@ -40,32 +37,24 @@ def post(self, request): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) -class VerifyJSONWebToken(APIView): +class ObtainJSONWebToken(JWTAPIView): + """ + API View that receives a POST with a user's username and password. + + Returns a JSON Web Token that can be used for authenticated requests. + """ + serializer_class = JSONWebTokenSerializer + + +class VerifyJSONWebToken(JWTAPIView): """ API View that checks the veracity of a token, returning the token if it is valid. """ - throttle_classes = () - permission_classes = () - authentication_classes = () - parser_classes = (parsers.FormParser, parsers.JSONParser,) - renderer_classes = (renderers.JSONRenderer,) serializer_class = VerifyJSONWebTokenSerializer - def post(self, request): - serializer = self.serializer_class(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) - - return Response(response_data) - - return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - -class RefreshJSONWebToken(VerifyJSONWebToken): +class RefreshJSONWebToken(JWTAPIView): """ API View that returns a refreshed token (with new expiration) based on existing token