diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index 41cc896..b2d56e8 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -1,6 +1,7 @@ import json import kubernetes +import rules import urlman from django.conf import settings from django.core.cache import cache @@ -12,6 +13,7 @@ from encrypted_fields.fields import EncryptedJSONField from kubernetes import client, config from kubernetes.client.rest import ApiException +from servala.core import rules as perms from servala.core.models.mixins import ServalaModelMixin from servala.core.validators import kubernetes_name_validator @@ -486,6 +488,12 @@ class ServiceInstance(ServalaModelMixin, models.Model): # Names are unique per de-facto namespace, which is defined by the # Organization + ServiceDefinition (group, version) + the ControlPlane. unique_together = [("name", "organization", "context")] + rules_permissions = { + "view": rules.is_staff | perms.is_organization_member, + "change": rules.is_staff | perms.is_organization_member, + "delete": rules.is_staff | perms.is_organization_admin, + "add": rules.is_authenticated, + } class urls(urlman.Urls): base = "{self.organization.urls.instances}{self.name}/"