37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
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
|