1- from .serializers import MyTokenObtainPairSerializer , RegisterSerializer , ChangePasswordSerializer , UpdateUserSerializer
1+ from .serializers import RegisterSerializer , ChangePasswordSerializer , UpdateUserSerializer
22from rest_framework .permissions import AllowAny , IsAuthenticated
3- from rest_framework_simplejwt .views import TokenObtainPairView
43from rest_framework import generics
54from django .contrib .auth .models import User
6-
7-
8- class MyObtainTokenPairView ( TokenObtainPairView ):
9- permission_classes = ( AllowAny ,)
10- serializer_class = MyTokenObtainPairSerializer
5+ from rest_framework . views import APIView
6+ from rest_framework_simplejwt . tokens import RefreshToken
7+ from rest_framework . response import Response
8+ from rest_framework import status
9+ from rest_framework_simplejwt . token_blacklist . models import BlacklistedToken , OutstandingToken
1110
1211
1312class RegisterView (generics .CreateAPIView ):
@@ -28,3 +27,28 @@ class UpdateProfileView(generics.UpdateAPIView):
2827 queryset = User .objects .all ()
2928 permission_classes = (IsAuthenticated ,)
3029 serializer_class = UpdateUserSerializer
30+
31+
32+ class LogoutView (APIView ):
33+ permission_classes = (IsAuthenticated ,)
34+
35+ def post (self , request ):
36+ try :
37+ refresh_token = request .data ["refresh_token" ]
38+ token = RefreshToken (refresh_token )
39+ token .blacklist ()
40+
41+ return Response (status = status .HTTP_205_RESET_CONTENT )
42+ except Exception as e :
43+ return Response (status = status .HTTP_400_BAD_REQUEST )
44+
45+
46+ class LogoutAllView (APIView ):
47+ permission_classes = (IsAuthenticated ,)
48+
49+ def post (self , request ):
50+ tokens = OutstandingToken .objects .filter (user_id = request .user .id )
51+ for token in tokens :
52+ t , _ = BlacklistedToken .objects .get_or_create (token = token )
53+
54+ return Response (status = status .HTTP_205_RESET_CONTENT )
0 commit comments