Advertisement
Guest User

Untitled

a guest
Jun 24th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. """
  2. Represents the User database entity
  3. """
  4. from argon2 import PasswordHasher
  5. from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired
  6. from current.config import SECRET_KEY
  7. from current.models.database_model import DatabaseModel, CharField
  8.  
  9.  
  10. class User(DatabaseModel):
  11. username = CharField(unique=True)
  12. email = CharField(unique=True)
  13. password = CharField()
  14.  
  15. @classmethod
  16. def create_user(cls, username, email, password, **kwargs):
  17. email = email.lower()
  18. try:
  19. cls.select().where(
  20. (cls.email == email) | (cls.username**username)
  21. ).get()
  22. except cls.DoesNotExist:
  23. user = cls(username=username, email=email)
  24. user.password = user.set_password(password)
  25. user.save()
  26. return user
  27. else:
  28. raise AlreadyExistsException()
  29.  
  30. @staticmethod
  31. def verify_auth_token(token):
  32. serializer = Serializer(SECRET_KEY)
  33. try:
  34. data = serializer.loads(token)
  35. except (SignatureExpired, BadSignature):
  36. return None
  37. else:
  38. user = User.get(User.id == data['id'])
  39. return user
  40.  
  41. @staticmethod
  42. def set_password(password):
  43. return PasswordHasher().hash(password)
  44.  
  45. def verify_password(self, password):
  46. return PasswordHasher().verify(self.password, password)
  47.  
  48. def generate_auth_token(self, expires=None):
  49. serializer = Serializer(SECRET_KEY, expires_in=expires)
  50. return serializer.dumps({'id': self.id})
  51.  
  52.  
  53. class AlreadyExistsException(Exception):
  54. def __init__(self, *args, **kwargs):
  55. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement