Advertisement
Guest User

Untitled

a guest
Dec 28th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. class TokenCreateSerializer(serializers.Serializer):
  2. password = serializers.CharField(
  3. required=False, style={'input_type': 'password'}
  4. )
  5.  
  6. default_error_messages = {
  7. 'invalid_credentials': constants.INVALID_CREDENTIALS_ERROR,
  8. 'inactive_account': constants.INACTIVE_ACCOUNT_ERROR,
  9. }
  10.  
  11. def __init__(self, *args, **kwargs):
  12. super(TokenCreateSerializer, self).__init__(*args, **kwargs)
  13. self.user = None
  14. self.fields[User.USERNAME_FIELD] = serializers.CharField(
  15. required=False
  16. )
  17.  
  18. def validate(self, attrs):
  19. self.user = authenticate(
  20. username=attrs.get(User.USERNAME_FIELD),
  21. password=attrs.get('password')
  22. )
  23.  
  24. self._validate_user_exists(self.user)
  25. self._validate_user_is_active(self.user)
  26. return attrs
  27.  
  28. def _validate_user_exists(self, user):
  29. if not user:
  30. self.fail('invalid_credentials')
  31.  
  32. def _validate_user_is_active(self, user):
  33. if not user.is_active:
  34. self.fail('inactive_account')
  35.  
  36. class TokenCreateView(utils.ActionViewMixin, generics.GenericAPIView):
  37. """
  38. Use this endpoint to obtain user authentication token.
  39. """
  40. serializer_class = settings.SERIALIZERS.token_create
  41. permission_classes = [permissions.AllowAny]
  42.  
  43. def _action(self, serializer):
  44. token = utils.login_user(self.request, serializer.user)
  45. token_serializer_class = settings.SERIALIZERS.token
  46. return Response(
  47. data=token_serializer_class(token).data,
  48. status=status.HTTP_200_OK,
  49. )
  50.  
  51. class CustomTokenCreateView(utils.ActionViewMixin, generics.GenericAPIView):
  52. """
  53. Use this endpoint to obtain user authentication token.
  54. """
  55. serializer_class = TokenCreateSerializer
  56. permission_classes = [permissions.AllowAny]
  57.  
  58. def _action(self, serializer):
  59. token = utils.login_user(self.request, serializer.user)
  60. token_serializer_class = settings.SERIALIZERS.token
  61. content = {
  62. 'Token': token_serializer_class(token).data,
  63. 'promptmsg': 'You have successfully login',
  64. 'status': '200'
  65. }
  66. return Response(
  67. data=content,
  68. status=status.HTTP_200_OK,
  69. )
  70.  
  71. {
  72. "auth_token": "da57cd11c34cb4332eaa6cc2cac797d0ee95cafb"
  73. }
  74.  
  75. {
  76. "Token": {
  77. "auth_token": "da57cd11c34cb4332eaa6cc2cac797d0ee95cafb"
  78. },
  79. "promptmsg": "You have successfully login",
  80. "status": "200"
  81. }
  82.  
  83. {
  84. "Token": "da57cd11c34cb4332eaa6cc2cac797d0ee95cafb",
  85. "promptmsg": "You have successfully login",
  86. "status": "200"
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement