Repository URL to install this package:
|
Version:
0.6.6.dev0 ▾
|
from functools import wraps
from flask_login import current_user
from werkzeug.exceptions import Forbidden
from .ability_enum import AbilityEnum
def create_permission_decorators(Role, Ability):
def user_is(role):
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
if current_user.is_role(role):
return func(*args, **kwargs)
else:
raise Forbidden("User is not allowed")
return inner
return wrapper
def user_has(ability_str):
ability = AbilityEnum[ability_str]
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
if current_user.has_ability(ability):
return func(*args, **kwargs)
else:
raise Forbidden(
f"User doesn't have the required ability: {ability.value}"
)
return inner
return wrapper
return (user_is, user_has)