1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from functools import wraps
- from flask import abort, g, redirect, url_for
- from flask_login import current_user
- from flask_wtf import FlaskForm
- from typing import ClassVar, Optional, Callable
- import app
- def role_required(role: str, opt: str):
- def required(func):
- @wraps(func)
- def new_func(*args, **kwargs):
- if not current_user.check_role(role): # 检查相应的权限
- app.HBlogFlask.print_user_not_allow_opt_log(opt)
- return abort(403)
- return func(*args, **kwargs)
- return new_func
- return required
- def api_role_required(role: str, opt: str):
- def required(func):
- @wraps(func)
- def new_func(*args, **kwargs):
- if not g.user.check_role(role): # 检查相应的权限
- app.HBlogFlask.print_user_not_allow_opt_log(opt)
- return abort(403)
- return func(*args, **kwargs)
- return new_func
- return required
- def form_required(form: ClassVar[FlaskForm], opt: str, callback: Optional[Callable] = None, **kw):
- def required(func):
- @wraps(func)
- def new_func(*args, **kwargs):
- f = form()
- if not f.validate_on_submit():
- app.HBlogFlask.print_form_error_log(opt)
- if callback is None:
- return abort(404)
- return callback(form=f, **kw, **kwargs)
- g.form = f
- return func(*args, **kwargs)
- return new_func
- return required
|