File size: 581 Bytes
91ca409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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