Advertisement
Guest User

Untitled

a guest
Jan 8th, 2017
824
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. from flask import Flask
  2. from flask_restful import Resource, Api, abort
  3. from functools import wraps
  4. from flask_cors import CORS, cross_origin
  5.  
  6.  
  7.  
  8.  
  9. app = Flask(__name__)
  10. api = Api(app)
  11. CORS(app)
  12. from flask_jwt import JWT, jwt_required, current_identity
  13. from werkzeug.security import safe_str_cmp
  14.  
  15. class User(object):
  16. def __init__(self, id, username, password):
  17. self.id = id
  18. self.username = username
  19. self.password = password
  20.  
  21. def __str__(self):
  22. return "User(id='%s')" % self.id
  23.  
  24. users = [
  25. User(1, 'user1', 'abcxyz'),
  26. User(2, 'user2', 'abcxyz'),
  27. ]
  28.  
  29. username_table = {u.username: u for u in users}
  30. userid_table = {u.id: u for u in users}
  31.  
  32. def authenticate(username, password):
  33. user = username_table.get(username, None)
  34. if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')):
  35. return user
  36.  
  37. def identity(payload):
  38. user_id = payload['identity']
  39. return userid_table.get(user_id, None)
  40.  
  41. app.config['SECRET_KEY'] = '32rfwdscsacsdcsad'
  42.  
  43. jwt = JWT(app, authenticate, identity)
  44.  
  45.  
  46. def checkuser(func):
  47. @wraps(func)
  48. def wrapper(*args, **kwargs):
  49. if current_identity.username == 'user1':
  50. return func(*args, **kwargs)
  51. return abort(401)
  52. return wrapper
  53.  
  54. class HelloWorld(Resource):
  55. decorators = [checkuser, jwt_required()]
  56. def get(self):
  57. return {'hello': current_identity.username}
  58.  
  59. api.add_resource(HelloWorld, '/')
  60.  
  61. if __name__ == '__main__':
  62. app.run(debug=True,host='localhost', port=80)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement