from rest_framework import status from rest_framework.authtoken.models import Token from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView from .serializers import RegisterSerializer, UserSerializer class RegisterView(APIView): permission_classes = [AllowAny] def post(self, request): serializer = RegisterSerializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.save() token, _ = Token.objects.get_or_create(user=user) return Response( {"token": token.key, "user": UserSerializer(user).data}, status=status.HTTP_201_CREATED, ) class MeView(APIView): permission_classes = [IsAuthenticated] def get(self, request): return Response(UserSerializer(request.user).data) class LogoutView(APIView): permission_classes = [IsAuthenticated] def post(self, request): if request.auth: request.auth.delete() return Response(status=status.HTTP_204_NO_CONTENT)