decorators.py 889 B

1234567891011121314151617181920212223242526272829303132
  1. from flask import g
  2. from public import app
  3. from functools import wraps
  4. from libs.tools import json_response
  5. def with_app_context(func):
  6. @wraps(func)
  7. def wrapper(*args, **kwargs):
  8. with app.app_context():
  9. return func(*args, **kwargs)
  10. return wrapper
  11. def require_permission(str_code):
  12. def decorate(func):
  13. @wraps(func)
  14. def wrapper(*args, **kwargs):
  15. if not g.user.is_supper:
  16. or_list = [x.strip() for x in str_code.split('|')]
  17. for or_item in or_list:
  18. and_set = {x.strip() for x in or_item.split('&')}
  19. if and_set.issubset(g.user.permissions):
  20. break
  21. else:
  22. return json_response(message='Permission denied'), 403
  23. return func(*args, **kwargs)
  24. return wrapper
  25. return decorate