from rest_framework import status from rest_framework.decorators import api_view, permission_classes from rest_framework.permissions import AllowAny from rest_framework.response import Response from rest_framework.authtoken.models import Token from django.contrib.auth import login from .serializers import UserRegistrationSerializer, UserLoginSerializer, UserSerializer @api_view(['POST']) @permission_classes([AllowAny]) def register(request): serializer = UserRegistrationSerializer(data=request.data) if serializer.is_valid(): user = serializer.save() token, created = Token.objects.get_or_create(user=user) return Response({ 'user': UserSerializer(user).data, 'token': token.key }, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @api_view(['POST']) @permission_classes([AllowAny]) def login_view(request): serializer = UserLoginSerializer(data=request.data) if serializer.is_valid(): user = serializer.validated_data['user'] login(request, user) token, created = Token.objects.get_or_create(user=user) return Response({ 'user': UserSerializer(user).data, 'token': token.key }) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @api_view(['GET']) def profile(request): serializer = UserSerializer(request.user) return Response(serializer.data)