import flask_jwt_extended from flask_jwt_extended import jwt_optional, get_jwt_identity from functools import wraps from flask_restx import abort from backend import jwt_auth from backend.models.user_model import User def requires_permission_level(permission_level): def decorator(f): @wraps(f) def decorated_function(*args, **kwargs): # if flask_jwt_extended.verify_jwt_in_request(): current_user_id = get_jwt_identity() user = User.get_by_identifier(current_user_id) if user is not None: if not user.has_permission(permission_level): abort(401, f"You are missing the permission: {permission_level}") return f(*args, **kwargs) return decorated_function return decorator def require_jwt(): def decorator(f): @wraps(f) def decorated_function(*args, **kwargs): return jwt_auth.login_required(jwt_optional(f(*args, **kwargs))) return decorated_function return decorator