Source code for jwt_allauth.logout.views

from django.utils.translation import gettext_lazy as _
from rest_framework import status
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework_simplejwt.exceptions import TokenError, InvalidToken

from jwt_allauth.logout.serializers import RemoveRefreshTokenSerializer
from jwt_allauth.tokens.models import RefreshTokenWhitelistModel


[docs] class LogoutView(APIView): """ Calls Django logout method and delete the Token object assigned to the current User object. Accepts/Returns nothing. """ permission_classes = (IsAuthenticated,)
[docs] def get(self, request, *args, **kwargs): return self.http_method_not_allowed(request, *args, **kwargs)
[docs] def post(self, request): return self.logout(request)
[docs] @staticmethod def logout(request): try: RemoveRefreshTokenSerializer( data=request.data, context={'user': request.user.id} ).is_valid(raise_exception=True) return Response( {"detail": _("Successfully logged out.")}, status=status.HTTP_200_OK ) except (TokenError, InvalidToken): return Response( {"detail": _("Invalid token.")}, status=status.HTTP_400_BAD_REQUEST )
[docs] class LogoutAllView(APIView): """ Logout from all devices. Accepts/Returns nothing. """ permission_classes = (IsAuthenticated,)
[docs] def get(self, request, *args, **kwargs): return self.http_method_not_allowed(request, *args, **kwargs)
[docs] def post(self, request): return self.logout(request)
[docs] @staticmethod def logout(request): RefreshTokenWhitelistModel.objects.filter(user=request.user.id).delete() return Response( {"detail": _("Successfully logged out from all devices.")}, status=status.HTTP_200_OK )