xbackend/utils/casbin/effect/__init__.py
2021-05-15 15:38:02 +08:00

24 lines
912 B
Python

from .default_effectors import AllowOverrideEffector, DenyOverrideEffector, AllowAndDenyEffector, PriorityEffector
from .effector import Effector
def get_effector(expr):
''' creates an effector based on the current policy effect expression '''
if expr == "some(where (p_eft == allow))":
return AllowOverrideEffector()
elif expr == "!some(where (p_eft == deny))":
return DenyOverrideEffector()
elif expr == "some(where (p_eft == allow)) && !some(where (p_eft == deny))":
return AllowAndDenyEffector()
elif expr == "priority(p_eft) || deny":
return PriorityEffector()
else:
raise RuntimeError("unsupported effect")
def effect_to_bool(effect):
""" """
if effect == Effector.ALLOW:
return True
if effect == Effector.DENY:
return False
raise RuntimeError("effect can't be converted to boolean")