snapshot of https://github.com/ory/keto.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
CI / Run lints and checks (push) Failing after 47s
CI / Run tests (push) Failing after 1s
CI / Run race tests (push) Failing after 5s
CI / Build CLI docs (push) Has been skipped
CI / Run buf actions (push) Failing after 5s
CodeQL / Analyze (go) (push) Failing after 3s
CodeQL / Analyze (javascript) (push) Failing after 2s
Docker Image Scanners / scanners (push) Failing after 3s
Format / format (push) Failing after 3s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Draft newsletter (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
Some checks failed
CI / Run lints and checks (push) Failing after 47s
CI / Run tests (push) Failing after 1s
CI / Run race tests (push) Failing after 5s
CI / Build CLI docs (push) Has been skipped
CI / Run buf actions (push) Failing after 5s
CodeQL / Analyze (go) (push) Failing after 3s
CodeQL / Analyze (javascript) (push) Failing after 2s
Docker Image Scanners / scanners (push) Failing after 3s
Format / format (push) Failing after 3s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Draft newsletter (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
This commit is contained in:
7
contrib/rewrites-example/keto.yaml
Normal file
7
contrib/rewrites-example/keto.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
dsn: memory
|
||||
|
||||
namespaces:
|
||||
location: file://./namespaces.keto.ts
|
||||
|
||||
log:
|
||||
level: trace
|
||||
47
contrib/rewrites-example/namespaces.keto.ts
Normal file
47
contrib/rewrites-example/namespaces.keto.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
// Copyright © 2023 Ory Corp
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Namespace, SubjectSet, Context } from "@ory/keto-namespace-types"
|
||||
|
||||
class User implements Namespace {
|
||||
related: {
|
||||
manager: User[]
|
||||
}
|
||||
}
|
||||
|
||||
class Group implements Namespace {
|
||||
related: {
|
||||
members: (User | Group)[]
|
||||
}
|
||||
}
|
||||
|
||||
class Folder implements Namespace {
|
||||
related: {
|
||||
parents: (File | Folder)[]
|
||||
viewers: SubjectSet<Group, "members">[]
|
||||
}
|
||||
|
||||
permits = {
|
||||
view: (ctx: Context): boolean =>
|
||||
this.related.viewers.includes(ctx.subject) ||
|
||||
this.related.parents.traverse((p) => p.permits.view(ctx)),
|
||||
}
|
||||
}
|
||||
|
||||
class File implements Namespace {
|
||||
related: {
|
||||
parents: (File | Folder)[]
|
||||
viewers: (User | SubjectSet<Group, "members">)[]
|
||||
owners: (User | SubjectSet<Group, "members">)[]
|
||||
}
|
||||
|
||||
// Some comment
|
||||
permits = {
|
||||
view: (ctx: Context): boolean =>
|
||||
this.related.parents.traverse((p) => p.permits.view(ctx)) ||
|
||||
this.related.viewers.includes(ctx.subject) ||
|
||||
this.related.owners.includes(ctx.subject),
|
||||
|
||||
edit: (ctx: Context) => this.related.owners.includes(ctx.subject),
|
||||
}
|
||||
}
|
||||
58
contrib/rewrites-example/package-lock.json
generated
Normal file
58
contrib/rewrites-example/package-lock.json
generated
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"name": "rewrites-example",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "rewrites-example",
|
||||
"devDependencies": {
|
||||
"@ory/keto-namespace-types": "file:../namespace-type-lib",
|
||||
"typescript": "latest"
|
||||
}
|
||||
},
|
||||
"../../../../../../namespace-type-lib": {
|
||||
"extraneous": true
|
||||
},
|
||||
"../namespace-type-lib": {
|
||||
"name": "@ory/keto-namespace-types",
|
||||
"version": "0.9.0-alpha.0",
|
||||
"dev": true,
|
||||
"devDependencies": {
|
||||
"@ory/keto-namespace-types": "file:./",
|
||||
"typescript": "^4.7.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@ory/keto-namespace-types": {
|
||||
"resolved": "../namespace-type-lib",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "4.7.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
|
||||
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.2.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@ory/keto-namespace-types": {
|
||||
"version": "file:../namespace-type-lib",
|
||||
"requires": {
|
||||
"@ory/keto-namespace-types": "file:",
|
||||
"typescript": "^4.7.4"
|
||||
}
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.7.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
|
||||
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
||||
7
contrib/rewrites-example/package.json
Normal file
7
contrib/rewrites-example/package.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"@ory/keto-namespace-types": "file:../namespace-type-lib",
|
||||
"typescript": "latest"
|
||||
}
|
||||
}
|
||||
66
contrib/rewrites-example/relation-tuples/tuples.json
Normal file
66
contrib/rewrites-example/relation-tuples/tuples.json
Normal file
@@ -0,0 +1,66 @@
|
||||
[
|
||||
{
|
||||
"namespace": "Group",
|
||||
"object": "developer",
|
||||
"relation": "members",
|
||||
"subject_set": {
|
||||
"namespace": "User",
|
||||
"object": "Patrik"
|
||||
}
|
||||
},
|
||||
{
|
||||
"namespace": "Group",
|
||||
"object": "developer",
|
||||
"relation": "members",
|
||||
"subject_set": {
|
||||
"namespace": "User",
|
||||
"object": "Henning"
|
||||
}
|
||||
},
|
||||
{
|
||||
"namespace": "Folder",
|
||||
"object": "keto/",
|
||||
"relation": "viewers",
|
||||
"subject_set": {
|
||||
"namespace": "Group",
|
||||
"object": "developer",
|
||||
"relation": "members"
|
||||
}
|
||||
},
|
||||
{
|
||||
"namespace": "File",
|
||||
"object": "keto/README.md",
|
||||
"relation": "parents",
|
||||
"subject_set": {
|
||||
"namespace": "Folder",
|
||||
"object": "keto/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"namespace": "Folder",
|
||||
"object": "keto/src/",
|
||||
"relation": "parents",
|
||||
"subject_set": {
|
||||
"namespace": "Folder",
|
||||
"object": "keto/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"namespace": "File",
|
||||
"object": "keto/src/main.go",
|
||||
"relation": "parents",
|
||||
"subject_set": {
|
||||
"namespace": "Folder",
|
||||
"object": "keto/src/"
|
||||
}
|
||||
},
|
||||
{
|
||||
"namespace": "File",
|
||||
"object": "private",
|
||||
"relation": "owners",
|
||||
"subject_set": {
|
||||
"namespace": "User",
|
||||
"object": "Henning"
|
||||
}
|
||||
}
|
||||
]
|
||||
3
contrib/rewrites-example/tsconfig.json
Normal file
3
contrib/rewrites-example/tsconfig.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "@ory/keto-namespace-types/tsconfig.json"
|
||||
}
|
||||
Reference in New Issue
Block a user