Advertisement
Guest User

Untitled

a guest
Jul 8th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. from functools import wraps
  2. from flask import Flask, request, jsonify
  3. from flask_restful import Resource, Api
  4. from flask_jwt_extended import (
  5. JWTManager, jwt_optional, get_jwt_identity, create_access_token
  6. )
  7.  
  8. app = Flask(__name__)
  9. app.secret_key = 'super-secret' # Change this!
  10. api = Api(app)
  11. jwt = JWTManager(app)
  12.  
  13.  
  14. def simulate_limiter(func):
  15. @wraps(func)
  16. def wrapper(*args, **kwargs):
  17. identity = get_jwt_identity()
  18. if identity:
  19. print("Limiter hit with user {}".format(identity))
  20. else:
  21. print("Decorator hit with a user not logged in")
  22. return func(*args, **kwargs)
  23. return wrapper
  24.  
  25.  
  26. @app.route('/login', methods=['POST'])
  27. def login():
  28. username = request.json.get('username', None)
  29. password = request.json.get('password', None)
  30. if username != 'test' or password != 'test':
  31. return jsonify({"msg": "Bad username or password"}), 401
  32. ret = {'access_token': create_access_token(identity=username)}
  33. return jsonify(ret), 200
  34.  
  35.  
  36. class HelloWorld(Resource):
  37. method_decorators = [simulate_limiter, jwt_optional]
  38. def get(self):
  39. identity = get_jwt_identity()
  40. if identity:
  41. return {'hello': identity}
  42. else:
  43. return {'hello': 'pesant'}
  44.  
  45.  
  46. api.add_resource(HelloWorld, '/')
  47.  
  48. if __name__ == '__main__':
  49. app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement