from functools import wraps from areas.roles.role_service import RoleService from flask_jwt_extended import get_jwt, verify_jwt_in_request from helpers import Unauthorized def admin_required(): def wrapper(fn): @wraps(fn) def decorator(*args, **kwargs): verify_jwt_in_request() claims = get_jwt() user_id = claims["user_id"] is_admin = RoleService.is_user_admin(user_id) if is_admin: return fn(*args, **kwargs) else: raise Unauthorized("You need to have admin permissions.") return decorator return wrapper