37 lines
1.3 KiB
Python
37 lines
1.3 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
|
|
|
|
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)
|