loimaroc / app /decorators.py
aymanemalih's picture
Upload 25 files
91ca409 verified
raw
history blame contribute delete
581 Bytes
from functools import wraps
from flask_jwt_extended import verify_jwt_in_request, get_jwt
from flask import jsonify
def roles_required(*roles):
def wrapper(fn):
@wraps(fn)
def decorator(*args, **kwargs):
verify_jwt_in_request()
claims = get_jwt()
user_roles = claims.get("roles", [])
if not any(role in roles for role in user_roles):
return jsonify(msg="Forbidden: insufficient permissions"), 403
return fn(*args, **kwargs)
return decorator
return wrapper