Guest User

Untitled

a guest
Nov 8th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. class UserLoginSerializer(ModelSerializer):
  2. user_id = IntegerField(read_only=True)
  3. token = CharField(allow_blank=True, read_only=True)
  4. username = CharField(required=False, allow_blank= True)
  5. email = EmailField(label='Email Address', required=False, allow_blank= True)
  6. class Meta:
  7. model = User
  8. fields = [
  9. 'user_id',
  10. 'username',
  11. 'email',
  12. 'password',
  13. 'token',
  14. ]
  15. extra_kwargs = {"password": {"write_only": True}}
  16.  
  17. def validate(self, data):
  18. user_obj = None
  19. email = data.get("email", None)
  20. username = data.get("username", None)
  21. password = data["password"]
  22.  
  23. if not email and not username:
  24. raise ValidationError("A username or email is required to login.")
  25.  
  26. user = User.objects.filter(
  27. Q(email=email) |
  28. Q(username=username)
  29. ).distinct()
  30. user = user.exclude(email__isnull=True).exclude(email__iexact='')
  31.  
  32. if user.exists() and user.count() == 1:
  33. user_obj = user.first()
  34. else:
  35. raise ValidationError("This username/email is not valid!")
  36.  
  37. if user_obj:
  38. if not user_obj.check_password(password):
  39. raise ValidationError("Incorrect credentials, please try again!")
  40.  
  41.  
  42. data["token"] = "SOME RANDOM TOKEN"
  43. data["user_id"] = user_obj.id
  44.  
  45. return data
  46.  
  47. from rest_framework_jwt.views import obtain_jwt_token
  48.  
  49. urlpatterns = [
  50. # ...
  51.  
  52. url(r'^api-token-auth/', obtain_jwt_token),
  53. ]
Add Comment
Please, Sign In to add comment