Guest User

Untitled

a guest
Sep 8th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. from flask_restful import Resource, reqparse
  2. from flask_jwt_extended import create_access_token, create_refresh_token, jwt_refresh_token_required, get_jwt_identity, fresh_jwt_required
  3.  
  4. from models.user import UserModel
  5.  
  6. import hashlib
  7.  
  8. _user_parser = reqparse.RequestParser()
  9. _user_parser.add_argument(
  10. "username",
  11. type=str,
  12. required=True,
  13. help="This field cannot be blank"
  14. )
  15. _user_parser.add_argument(
  16. "password",
  17. type=str,
  18. required=True,
  19. help="This field cannot be blank"
  20. )
  21.  
  22.  
  23. class User(Resource):
  24. def get(self, user_id):
  25. user = UserModel.find_user_by_id(user_id)
  26. if user:
  27. return user.json()
  28.  
  29. return {
  30. "message": "User not found!"
  31. }, 404
  32.  
  33. @fresh_jwt_required
  34. def delete(self, user_id):
  35. user = UserModel.find_user_by_id(user_id)
  36. if user:
  37. user.remove_from_db()
  38. return {
  39. "message": "User deleted!"
  40. }, 200
  41.  
  42. return {
  43. "message": "User not found!"
  44. }, 404
  45.  
  46.  
  47. class UserRegister(Resource):
  48. def post(self):
  49. data = _user_parser.parse_args()
  50.  
  51. if UserModel.find_user_by_username(data["username"]):
  52. return {
  53. "message": "User exists!"
  54. }, 400
  55.  
  56. user = UserModel(data["username"], hashlib.sha256(data["password"].encode("utf-8")).hexdigest())
  57. user.save_to_db()
  58. return {
  59. "message": "User {} created!".format(data["username"])
  60. }
  61.  
  62.  
  63. class UserLogin(Resource):
  64. def post(self):
  65. data = _user_parser.parse_args()
  66.  
  67. user = UserModel.find_user_by_username(data["username"])
  68.  
  69. if user and user.password == hashlib.sha256(data["password"].encode("utf-8")).hexdigest():
  70. access_token = create_access_token(identity=user.id, fresh=True) # Puts User ID as Identity in JWT
  71. refresh_token = create_refresh_token(identity=user.id) # Puts User ID as Identity in JWT
  72.  
  73. return {
  74. "access_token": access_token,
  75. "refresh_token": refresh_token
  76. }, 200
  77.  
  78. return {
  79. "message": "Invalid credentials!"
  80. }, 401
  81.  
  82.  
  83. class TokenRefresh(Resource):
  84. @jwt_refresh_token_required
  85. def post(self):
  86. current_user_id = get_jwt_identity() # Gets Identity from JWT
  87. new_token = create_access_token(identity=current_user_id, fresh=False)
  88. return {
  89. "access_token": new_token
  90. }, 200
Add Comment
Please, Sign In to add comment