From 105b93a0e3a4d8373739fe9c0496aaa415a58e97 Mon Sep 17 00:00:00 2001 From: Oskar Jaskolski Date: Wed, 28 Aug 2019 12:30:31 +0200 Subject: [PATCH 1/7] added method allowing to remove token --- InvenTree/users/views.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/InvenTree/users/views.py b/InvenTree/users/views.py index a4920b717e..207d8a98dc 100644 --- a/InvenTree/users/views.py +++ b/InvenTree/users/views.py @@ -27,15 +27,32 @@ class GetAuthToken(ObtainAuthToken): """ Return authentication token for an authenticated user. """ def post(self, request, *args, **kwargs): + return self.login(request) + + def delete(self, request): + return self.logout(request) + + def login(self, request): serializer = self.serializer_class(data=request.data, context={'request': request}) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] token, created = Token.objects.get_or_create(user=user) - + return Response({ 'token': token.key, 'pk': user.pk, 'username': user.username, 'email': user.email }) + + def logout(self, request): + try: + request.user.auth_token.delete() + except (AttributeError, ObjectDoesNotExist): + pass + + self.logout(request) + + return Response({"success": _("Successfully logged out.")}, + status=status.HTTP_200_OK) From 381e58ab1c3a5f1ec9b6273d3323724b2c376b57 Mon Sep 17 00:00:00 2001 From: Oskar Jaskolski Date: Wed, 28 Aug 2019 12:35:00 +0200 Subject: [PATCH 2/7] added import --- InvenTree/users/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/InvenTree/users/views.py b/InvenTree/users/views.py index 207d8a98dc..3f8347bf42 100644 --- a/InvenTree/users/views.py +++ b/InvenTree/users/views.py @@ -1,5 +1,6 @@ from rest_framework import generics, permissions from django.contrib.auth.models import User +from django.core.exceptions import ObjectDoesNotExist from .serializers import UserSerializer from rest_framework.authtoken.views import ObtainAuthToken From 5dcfc20d827b7b69f7e565980783d550b7aa156c Mon Sep 17 00:00:00 2001 From: Oskar Jaskolski Date: Wed, 28 Aug 2019 12:39:25 +0200 Subject: [PATCH 3/7] test --- InvenTree/users/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InvenTree/users/views.py b/InvenTree/users/views.py index 3f8347bf42..cfe6646115 100644 --- a/InvenTree/users/views.py +++ b/InvenTree/users/views.py @@ -53,7 +53,7 @@ class GetAuthToken(ObtainAuthToken): except (AttributeError, ObjectDoesNotExist): pass - self.logout(request) + logout(request) return Response({"success": _("Successfully logged out.")}, status=status.HTTP_200_OK) From 981884f3683685db3f0199988c16778d61dc385e Mon Sep 17 00:00:00 2001 From: Oskar Jaskolski Date: Wed, 28 Aug 2019 12:40:06 +0200 Subject: [PATCH 4/7] test --- InvenTree/users/views.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/InvenTree/users/views.py b/InvenTree/users/views.py index cfe6646115..a7d1725ceb 100644 --- a/InvenTree/users/views.py +++ b/InvenTree/users/views.py @@ -53,7 +53,5 @@ class GetAuthToken(ObtainAuthToken): except (AttributeError, ObjectDoesNotExist): pass - logout(request) - return Response({"success": _("Successfully logged out.")}, status=status.HTTP_200_OK) From 3c70c3a29ccfd25365646db481afff1d3008c776 Mon Sep 17 00:00:00 2001 From: Oskar Jaskolski Date: Wed, 28 Aug 2019 12:41:46 +0200 Subject: [PATCH 5/7] clean --- InvenTree/users/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InvenTree/users/views.py b/InvenTree/users/views.py index a7d1725ceb..4c7ef295c1 100644 --- a/InvenTree/users/views.py +++ b/InvenTree/users/views.py @@ -53,5 +53,5 @@ class GetAuthToken(ObtainAuthToken): except (AttributeError, ObjectDoesNotExist): pass - return Response({"success": _("Successfully logged out.")}, + return Response({"success": "Successfully logged out."}, status=status.HTTP_200_OK) From 0a6abd21bed0af764d492e33fe69c058849e3daf Mon Sep 17 00:00:00 2001 From: Oskar Jaskolski Date: Wed, 28 Aug 2019 12:47:56 +0200 Subject: [PATCH 6/7] fixed responde text --- InvenTree/users/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/InvenTree/users/views.py b/InvenTree/users/views.py index 4c7ef295c1..4b4e6259ae 100644 --- a/InvenTree/users/views.py +++ b/InvenTree/users/views.py @@ -6,6 +6,7 @@ from .serializers import UserSerializer from rest_framework.authtoken.views import ObtainAuthToken from rest_framework.authtoken.models import Token from rest_framework.response import Response +from rest_framework import status class UserDetail(generics.RetrieveAPIView): @@ -54,4 +55,4 @@ class GetAuthToken(ObtainAuthToken): pass return Response({"success": "Successfully logged out."}, - status=status.HTTP_200_OK) + status=status.HTTP_202_ACCEPTED) From 8949542baff5e8cb45f798f7eb61bcbeb0452a89 Mon Sep 17 00:00:00 2001 From: Oskar Jaskolski Date: Wed, 28 Aug 2019 12:53:08 +0200 Subject: [PATCH 7/7] fixed response text --- InvenTree/users/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/InvenTree/users/views.py b/InvenTree/users/views.py index 4b4e6259ae..01d9834c69 100644 --- a/InvenTree/users/views.py +++ b/InvenTree/users/views.py @@ -51,8 +51,8 @@ class GetAuthToken(ObtainAuthToken): def logout(self, request): try: request.user.auth_token.delete() + return Response({"success": "Successfully logged out."}, + status=status.HTTP_202_ACCEPTED) except (AttributeError, ObjectDoesNotExist): - pass - - return Response({"success": "Successfully logged out."}, - status=status.HTTP_202_ACCEPTED) + return Response({"error": "Bad request"}, + status=status.HTTP_400_BAD_REQUEST)