little-pager-97837
09/30/2022, 10:07 AMclass User implements Namespace {
}
class Organization implements Namespace {
related: {
members: User[]
}
}
class Role implements Namespace {
related: {
has: User[]
}
}
class Permission implements Namespace {
related: {
allowed: (User | SubjectSet<Role, "has">)[]
}
}
class Product implements Namespace {
related: {
owners: Organization[]
viewers: SubjectSet<Permission, "allowed">[]
editors: SubjectSet<Permission, "allowed">[]
}
permits = {
view: (ctx: Context): boolean =>
this.related.owners.traverse((org) => org.related.members.includes(ctx.subject)) &&
(this.related.viewers.includes(ctx.subject) || this.related.editors.includes(ctx.subject)),
edit: (ctx: Context): boolean =>
this.related.owners.traverse((org) => org.related.members.includes(ctx.subject)) &&
this.related.editors.includes(ctx.subject),
}
}
Users is member of some organization
User has some role
Role has some permissions
And permissions allow to view/edit Product
My initial tuples.json
Organization hazemag members User:Bob
Organization hazemag members User:Alice
Organization bmw members User:John
Role developer has User:John
Role developer has User:Bob
Role viewer has User:Alice
Permission view-products allowed Role:viewer
Permission edit-products allowed Role:developer
Product product/1 owners Organization:hazemag
Product product/1 viewers Permission:view-products
Product product/1 editors Permission:edit-products
Product product/2 owners Organization:bmw
Product product/2 viewers Permission:view-products
Product product/2 editors Permission:edit-products
But that checks return denied
keto check User:Alice view Product product/1
keto check User:Bob view Product product/1
Do you have any ideas why it's happening?little-pager-97837
09/30/2022, 11:15 AMlittle-pager-97837
09/30/2022, 12:12 PMable-wolf-57940
09/30/2022, 12:12 PM&&
? We are looking into keto as well and build up something similar 😊little-pager-97837
09/30/2022, 12:13 PMProduct product/1 viewers Permission:view-products
it should be
Product product/1 viewers Permission:view-products#allowed
able-wolf-57940
09/30/2022, 12:14 PM