Files
Reskreen/authapp/views.py
2024-07-28 14:19:13 +02:00

45 lines
1.5 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
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)