Merge pull request 'Try to fix permissions issue' (#151) from 148-instance-edit-permissions into main
Reviewed-on: #151
This commit is contained in:
commit
683977a001
2 changed files with 19 additions and 4 deletions
|
@ -574,7 +574,7 @@ class ServiceInstance(ServalaModelMixin, models.Model):
|
||||||
unique_together = [("name", "organization", "context")]
|
unique_together = [("name", "organization", "context")]
|
||||||
rules_permissions = {
|
rules_permissions = {
|
||||||
"view": rules.is_staff | perms.is_organization_member,
|
"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,
|
"delete": rules.is_staff | perms.is_organization_admin,
|
||||||
"add": rules.is_authenticated,
|
"add": rules.is_authenticated,
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,15 +13,30 @@ def has_organization_role(user, org, roles):
|
||||||
|
|
||||||
|
|
||||||
@rules.predicate
|
@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"])
|
return has_organization_role(user, org, ["owner"])
|
||||||
|
|
||||||
|
|
||||||
@rules.predicate
|
@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"])
|
return has_organization_role(user, org, ["owner", "admin"])
|
||||||
|
|
||||||
|
|
||||||
@rules.predicate
|
@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)
|
return has_organization_role(user, org, None)
|
||||||
|
|
||||||
|
|
||||||
|
rules.add_perm("core", rules.is_staff)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue