- Add HealthCheckView to authapp - Update authapp/urls.py to include health check - Update docker-compose.yml for backend services - Add frontend service to docker-compose.yml - Add external config for frontend
48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
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"}) |