""" Authentication views. """ from django.contrib.auth import authenticate, login, logout, get_user_model from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework import status from .serializers import UserRegistrationSerializer, UserSerializer, LoginSerializer User = get_user_model() @api_view(['POST']) def register(request): """Register a new user.""" serializer = UserRegistrationSerializer(data=request.data) if serializer.is_valid(): user = serializer.save() return Response({ 'message': 'User created successfully', 'user': UserSerializer(user).data }, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @api_view(['POST']) def user_login(request): """Login user.""" serializer = LoginSerializer(data=request.data) if not serializer.is_valid(): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) username = serializer.validated_data['username'] password = serializer.validated_data['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return Response({ 'message': 'Login successful', 'user': UserSerializer(user).data }) return Response({'error': 'Invalid credentials'}, status=status.HTTP_401_UNAUTHORIZED) @api_view(['POST']) def user_logout(request): """Logout user.""" logout(request) return Response({'message': 'Logout successful'}) @api_view(['GET']) def current_user(request): """Get current logged-in user.""" if request.user.is_authenticated: return Response(UserSerializer(request.user).data) return Response({'error': 'Not authenticated'}, status=status.HTTP_401_UNAUTHORIZED)