Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. import datetime
  2. from functools import wraps
  3.  
  4. from flask import request
  5.  
  6. from api import db, log
  7. from api.common.models import Token
  8.  
  9.  
  10. def auth_required(f):
  11. @wraps(f)
  12. def decorated(*args, **kwargs):
  13. try:
  14. token = request.headers['X-AuthToken']
  15. if token is None:
  16. return {'state': 'fail', 'message': 'Authorization required'}, 403
  17. token = Token.query.get(token)
  18. if token is None:
  19. return {'state': 'fail', 'message': 'Invalid token'}, 403
  20. if token.expires_at is not None and token.expires_at < datetime.datetime.now():
  21. token.delete()
  22. db.session.flush()
  23. db.session.commit()
  24. return {'state': 'fail', 'message': 'Token was expired'}, 403
  25. return f(token=token, *args, **kwargs)
  26. except Exception as e:
  27. db.session.rollback()
  28. log.exception(e)
  29. return {'state': 'fail', 'message': str(e)}, 500
  30.  
  31. return decorated
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement