from rest_framework.views import APIView from rest_framework import generics from rest_framework.authtoken.views import ObtainAuthToken from rest_framework.authtoken.models import Token from rest_framework.response import Response from .serializers import UserSerializer from rest_framework.permissions import IsAuthenticated, AllowAny from rest_framework import status from django.http import JsonResponse from django.middleware.csrf import get_token def get_csrf_token(request): return JsonResponse({'csrfToken': get_token(request)}) class CustomAuthToken(ObtainAuthToken): def post(self, request, *args, **kwargs): response = super().post(request, *args, **kwargs) token = Token.objects.get(key=response.data['token']) return Response({'token': token.key, 'user_id': token.user_id}) class RegenerateTokenView(APIView): permission_classes = [IsAuthenticated] def post(self, request): user = request.user # Supprimer l'ancien token Token.objects.filter(user=user).delete() # Générer un nouveau token token = Token.objects.create(user=user) return Response({'token': token.key}, status=status.HTTP_201_CREATED) class VerifyTokenView(APIView): permission_classes = [IsAuthenticated] def get(self, request): user = request.user return Response({ 'user_id': user.id, 'username': user.username, 'email': user.email }, status=status.HTTP_200_OK) class HealthCheckView(APIView): permission_classes = [AllowAny] def get(self, request, *args, **kwargs): return Response({"status": "healthy"})