Merge pull request 'Try to fix permissions issue' (#151) from 148-instance-edit-permissions into main
All checks were successful
Build and Deploy Staging / build (push) Successful in 1m6s
Tests / test (push) Successful in 24s
Build and Deploy Staging / deploy (push) Successful in 22s

Reviewed-on: #151
This commit is contained in:
Tobias Brunner 2025-07-11 14:55:47 +00:00
commit 683977a001
2 changed files with 19 additions and 4 deletions

View file

@ -574,7 +574,7 @@ class ServiceInstance(ServalaModelMixin, models.Model):
unique_together = [("name", "organization", "context")]
rules_permissions = {
"view": rules.is_staff | perms.is_organization_member,
"change": rules.is_staff | perms.is_organization_member,
"change": rules.is_staff | perms.is_organization_admin,
"delete": rules.is_staff | perms.is_organization_admin,
"add": rules.is_authenticated,
}

View file

@ -13,15 +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)