diff --git a/src/servala/core/rules.py b/src/servala/core/rules.py index 814a8ea..cf4dc1c 100644 --- a/src/servala/core/rules.py +++ b/src/servala/core/rules.py @@ -13,17 +13,30 @@ def has_organization_role(user, org, roles): @rules.predicate -def is_organization_owner(user, org): +def is_organization_owner(user, obj): + if hasattr(obj, "organization"): + org = obj.organization + else: + org = obj return has_organization_role(user, org, ["owner"]) @rules.predicate -def is_organization_admin(user, org): +def is_organization_admin(user, obj): + if hasattr(obj, "organization"): + org = obj.organization + else: + org = obj return has_organization_role(user, org, ["owner", "admin"]) @rules.predicate -def is_organization_member(user, org): +def is_organization_member(user, obj): + if hasattr(obj, "organization"): + org = obj.organization + else: + org = obj return has_organization_role(user, org, None) + rules.add_perm("core", rules.is_staff)