diff --git a/api/urls.py b/api/urls.py index 375dc20..eab1768 100644 --- a/api/urls.py +++ b/api/urls.py @@ -28,6 +28,8 @@ urlpatterns = [ path("user-by-token/", views.user_by_token, name="user_by_token"), path("change-password/", views.ChangePasswordView.as_view(), name="change_password"), + path('token-auth/', views.CustomAuthToken.as_view()), + # forgotten password path('dj-rest-auth/', include('dj_rest_auth.urls')), diff --git a/api/views.py b/api/views.py index 588a38c..13b44da 100644 --- a/api/views.py +++ b/api/views.py @@ -10,10 +10,33 @@ from rest_framework.generics import UpdateAPIView from rest_framework.exceptions import MethodNotAllowed 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 .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']) def user_by_token(request): serializer = UserSerializer(request.user)