Adds new token auth service

clubs
Laurent 1 year ago
parent d47a75162f
commit db0034ff44
  1. 2
      api/urls.py
  2. 23
      api/views.py

@ -28,6 +28,8 @@ urlpatterns = [
path("user-by-token/", views.user_by_token, name="user_by_token"), path("user-by-token/", views.user_by_token, name="user_by_token"),
path("change-password/", views.ChangePasswordView.as_view(), name="change_password"), path("change-password/", views.ChangePasswordView.as_view(), name="change_password"),
path('token-auth/', views.CustomAuthToken.as_view()),
# forgotten password # forgotten password
path('dj-rest-auth/', include('dj_rest_auth.urls')), path('dj-rest-auth/', include('dj_rest_auth.urls')),

@ -10,10 +10,33 @@ from rest_framework.generics import UpdateAPIView
from rest_framework.exceptions import MethodNotAllowed from rest_framework.exceptions import MethodNotAllowed
from rest_framework.permissions import IsAuthenticated from rest_framework.permissions import IsAuthenticated
from django.contrib.auth import authenticate
from rest_framework.views import APIView
from django.db.models import Q from django.db.models import Q
from .permissions import IsClubOwner from .permissions import IsClubOwner
class CustomAuthToken(APIView):
permission_classes = []
def post(self, request, *args, **kwargs):
username = request.data.get('username')
password = request.data.get('password')
user = authenticate(username=username, password=password)
print('a')
if user is not None:
print('b')
# Delete old token
count, details = Token.objects.filter(user=user).delete()
# Create new token
token, created = Token.objects.get_or_create(user=user)
return Response({'token': token.key, 'deleted': (count > 0) })
else:
print('c')
return Response({'error': 'Invalid Credentials'}, status=status.HTTP_401_UNAUTHORIZED)
@api_view(['GET']) @api_view(['GET'])
def user_by_token(request): def user_by_token(request):
serializer = UserSerializer(request.user) serializer = UserSerializer(request.user)

Loading…
Cancel
Save