Skip to content

Commit 9bc63db

Browse files
committed
Basic docker compose setup
1 parent 9d6ac74 commit 9bc63db

16 files changed

+304
-9
lines changed

demo/keto/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

demo/keto/keto.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
version: v0.6.0-alpha.1
2+
3+
log:
4+
level: debug
5+
6+
namespaces:
7+
- id: 0
8+
name: videos
9+
10+
serve:
11+
read:
12+
host: 0.0.0.0
13+
port: 4466
14+
write:
15+
host: 0.0.0.0
16+
port: 4467

demo/keto/migrate.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
!#/bin/bash
2+
3+
# Create the database
4+
5+
# Migrate the database
6+
keto migrate up -y

demo/keto/namespaces.keto.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { Namespace, SubjectSet, Context } from "@ory/keto-namespace-types";
2+
3+
class User implements Namespace {
4+
related: {
5+
manager: User[];
6+
};
7+
}
8+
9+
class Group implements Namespace {
10+
related: {
11+
members: (User | Group)[];
12+
};
13+
}
14+
15+
class StacCollection implements Namespace {
16+
related: {
17+
parents: (StacItem | StacCollection)[];
18+
viewers: SubjectSet<Group, "members">[];
19+
};
20+
21+
permits = {
22+
view: (ctx: Context): boolean =>
23+
this.related.viewers.includes(ctx.subject) ||
24+
this.related.parents.traverse((p) => p.permits.view(ctx)),
25+
};
26+
}
27+
28+
class StacItem implements Namespace {
29+
related: {
30+
parents: (StacItem | StacCollection)[];
31+
viewers: (User | SubjectSet<Group, "members">)[];
32+
owners: (User | SubjectSet<Group, "members">)[];
33+
};
34+
35+
// Some comment
36+
permits = {
37+
view: (ctx: Context): boolean =>
38+
this.related.parents.traverse((p) => p.permits.view(ctx)) ||
39+
this.related.viewers.includes(ctx.subject) ||
40+
this.related.owners.includes(ctx.subject),
41+
42+
edit: (ctx: Context) => this.related.owners.includes(ctx.subject),
43+
};
44+
}

demo/keto/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"devDependencies": {
3+
"@ory/keto-namespace-types": "0.13.0-alpha.0"
4+
}
5+
}

demo/keto/pnpm-lock.yaml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"$schema": "../../../.schema/relation_tuple.schema.json",
3+
"namespace": "videos",
4+
"object": "/cats/1.mp4",
5+
"relation": "owner",
6+
"subject_set": {
7+
"namespace": "videos",
8+
"object": "/cats",
9+
"relation": "owner"
10+
}
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"$schema": "../../../.schema/relation_tuple.schema.json",
3+
"namespace": "videos",
4+
"object": "/cats/1.mp4",
5+
"relation": "view",
6+
"subject_set": {
7+
"namespace": "videos",
8+
"object": "/cats/1.mp4",
9+
"relation": "owner"
10+
}
11+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"$schema": "../../../.schema/relation_tuple.schema.json",
3+
"namespace": "videos",
4+
"object": "/cats/1.mp4",
5+
"relation": "view",
6+
"subject_id": "*"
7+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"$schema": "../../../.schema/relation_tuple.schema.json",
3+
"namespace": "videos",
4+
"object": "/cats/2.mp4",
5+
"relation": "owner",
6+
"subject_set": {
7+
"namespace": "videos",
8+
"object": "/cats",
9+
"relation": "owner"
10+
}
11+
}

0 commit comments

Comments
 (0)