Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- from django.shortcuts import render
- from rest_framework.views import APIView
- from rest_framework.response import Response
- from django.http import HttpResponse
- from django.template.response import TemplateResponse
- from rest_framework import status, permissions, exceptions
- from django.contrib.auth import authenticate, login
- from django.views.decorators.csrf import csrf_exempt
- from .serializers import AuthFormSerializer
- from rest_framework.authtoken.models import Token
- from datetime import datetime
- from rest_framework.renderers import TemplateHTMLRenderer
- from test_django.authenticators import TokenExpireAuth
- from rest_framework.status import (
- HTTP_400_BAD_REQUEST,
- HTTP_404_NOT_FOUND,
- HTTP_200_OK,
- HTTP_201_CREATED,
- )
- import ipdb
- class AuthView(APIView):
- permission_classes = (permissions.AllowAny,)
- renderer_classes = [TemplateHTMLRenderer]
- @csrf_exempt
- def get(self, request):
- # response = TemplateResponse(request, 'login.html', {})
- return render(request, 'login.html', {})
- @csrf_exempt
- def post(self, request):
- serializer = AuthFormSerializer(data=request.data)
- serializer.is_valid(raise_exception=True)
- data = serializer.data
- username = data.get('username')
- password = data.get('password')
- if username is None or password is None:
- return Response({'error': 'Please provide both username and password'},
- status=HTTP_400_BAD_REQUEST, template_name='login.html')
- user = authenticate(username=username, password=password)
- if not user:
- return Response({'error': 'Invalid Credentials'},
- status=HTTP_404_NOT_FOUND, template_name='login.html')
- self.token, _ = Token.objects.get_or_create(user=user)
- user_token = Token.objects.get(user_id = user.pk)
- if (datetime.now() - user_token.created.replace(tzinfo=None)).days > 10:
- Token.objects.update(user_id=user.pk, key=Token.generate_key(user.pk), created = datetime.now())
- print('done')
- # ipdb.set_trace()
- context = {'token': self.token.key}
- # return Response(, status=HTTP_201_CREATED, template_name='')
- return HttpResponse(json.dumps(context), content_type="application/json")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement