tool.py 955 B

1234567891011121314151617181920212223242526272829303132
  1. from functools import wraps
  2. from flask import abort, g
  3. from flask_login import current_user
  4. from flask_wtf import FlaskForm
  5. from typing import ClassVar
  6. import app
  7. def role_required(role: str, opt: str):
  8. def required(func):
  9. @wraps(func)
  10. def new_func(*args, **kwargs):
  11. if not current_user.check_role(role): # 检查相应的权限
  12. app.HBlogFlask.print_user_not_allow_opt_log(opt)
  13. return abort(403)
  14. return func(*args, **kwargs)
  15. return new_func
  16. return required
  17. def form_required(form: ClassVar[FlaskForm], opt: str):
  18. def required(func):
  19. @wraps(func)
  20. def new_func(*args, **kwargs):
  21. f = form()
  22. if not f.validate_on_submit():
  23. app.HBlogFlask.print_form_error_log(opt)
  24. return abort(404)
  25. g.form = f
  26. return func(*args, **kwargs)
  27. return new_func
  28. return required