Advertisement
Guest User

Untitled

a guest
Mar 18th, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. import json
  2. from django.shortcuts import render
  3. from rest_framework.views import APIView
  4. from rest_framework.response import Response
  5. from django.http import HttpResponse
  6. from django.template.response import TemplateResponse
  7. from rest_framework import status, permissions, exceptions
  8. from django.contrib.auth import authenticate, login
  9. from django.views.decorators.csrf import csrf_exempt
  10. from .serializers import AuthFormSerializer
  11. from rest_framework.authtoken.models import Token
  12. from datetime import datetime
  13. from rest_framework.renderers import TemplateHTMLRenderer
  14. from test_django.authenticators import TokenExpireAuth
  15. from rest_framework.status import (
  16. HTTP_400_BAD_REQUEST,
  17. HTTP_404_NOT_FOUND,
  18. HTTP_200_OK,
  19. HTTP_201_CREATED,
  20. )
  21. import ipdb
  22.  
  23.  
  24. class AuthView(APIView):
  25. permission_classes = (permissions.AllowAny,)
  26.  
  27. renderer_classes = [TemplateHTMLRenderer]
  28.  
  29. @csrf_exempt
  30. def get(self, request):
  31. # response = TemplateResponse(request, 'login.html', {})
  32.  
  33. return render(request, 'login.html', {})
  34.  
  35. @csrf_exempt
  36. def post(self, request):
  37.  
  38. serializer = AuthFormSerializer(data=request.data)
  39. serializer.is_valid(raise_exception=True)
  40. data = serializer.data
  41. username = data.get('username')
  42. password = data.get('password')
  43.  
  44. if username is None or password is None:
  45. return Response({'error': 'Please provide both username and password'},
  46. status=HTTP_400_BAD_REQUEST, template_name='login.html')
  47. user = authenticate(username=username, password=password)
  48.  
  49. if not user:
  50. return Response({'error': 'Invalid Credentials'},
  51. status=HTTP_404_NOT_FOUND, template_name='login.html')
  52. self.token, _ = Token.objects.get_or_create(user=user)
  53. user_token = Token.objects.get(user_id = user.pk)
  54.  
  55.  
  56. if (datetime.now() - user_token.created.replace(tzinfo=None)).days > 10:
  57. Token.objects.update(user_id=user.pk, key=Token.generate_key(user.pk), created = datetime.now())
  58. print('done')
  59. # ipdb.set_trace()
  60. context = {'token': self.token.key}
  61. # return Response(, status=HTTP_201_CREATED, template_name='')
  62. return HttpResponse(json.dumps(context), content_type="application/json")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement