2025-01-28 22:13:07 +01:00
|
|
|
from rest_framework.permissions import IsAuthenticated
|
|
|
|
from rest_framework.response import Response
|
|
|
|
from rest_framework.views import APIView
|
2025-02-02 23:45:29 +01:00
|
|
|
from rest_framework_simplejwt.tokens import RefreshToken
|
2025-01-28 22:13:07 +01:00
|
|
|
|
|
|
|
from .serializers import UserSerializer
|
|
|
|
|
|
|
|
|
2025-02-02 23:45:29 +01:00
|
|
|
# Logout View
|
|
|
|
class LogoutView(APIView):
|
|
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
|
|
|
|
def post(self, request):
|
|
|
|
try:
|
|
|
|
refresh_token = request.data["refresh"]
|
|
|
|
token = RefreshToken(refresh_token)
|
|
|
|
token.blacklist()
|
|
|
|
return Response({"message": "Logout successful"})
|
|
|
|
except Exception as e:
|
|
|
|
return Response({"error": str(e)}, status=400)
|
|
|
|
|
|
|
|
|
2025-01-28 22:13:07 +01:00
|
|
|
class ProfileView(APIView):
|
|
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
|
|
|
|
def get(self, request):
|
|
|
|
user = request.user
|
|
|
|
serializer = UserSerializer(user)
|
|
|
|
return Response(serializer.data)
|
|
|
|
|
|
|
|
def patch(self, request):
|
|
|
|
user = request.user
|
|
|
|
serializer = UserSerializer(user, data=request.data, partial=True)
|
|
|
|
if serializer.is_valid():
|
|
|
|
serializer.save()
|
|
|
|
return Response(serializer.data)
|
|
|
|
return Response(serializer.errors, status=400)
|
|
|
|
|
|
|
|
def put(self, request):
|
|
|
|
user = request.user
|
|
|
|
serializer = UserSerializer(user, data=request.data)
|
|
|
|
if serializer.is_valid():
|
|
|
|
serializer.save()
|
|
|
|
return Response(serializer.data)
|
|
|
|
return Response(serializer.errors, status=400)
|