From 3ff31cfb75141e861c9cf0481ee1a92073a00d19 Mon Sep 17 00:00:00 2001 From: Patrik Date: Tue, 22 Nov 2022 13:52:48 +0100 Subject: [PATCH 1/2] fix: relative file URL parsing --- internal/driver/config/namespace_watcher.go | 2 +- internal/driver/config/opl_config_namespace_watcher.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/driver/config/namespace_watcher.go b/internal/driver/config/namespace_watcher.go index ca1a6e584..9c8643bf9 100644 --- a/internal/driver/config/namespace_watcher.go +++ b/internal/driver/config/namespace_watcher.go @@ -110,7 +110,7 @@ func watchTarget(ctx context.Context, target string, handler eventHandler, log * return errors.WithStack(err) } if info.IsDir() { - watcher, err = watcherx.WatchDirectory(ctx, targetUrl.Path, eventCh) + watcher, err = watcherx.WatchDirectory(ctx, urlx.GetURLFilePath(targetUrl), eventCh) } else { watcher, err = watcherx.Watch(ctx, targetUrl, eventCh) } diff --git a/internal/driver/config/opl_config_namespace_watcher.go b/internal/driver/config/opl_config_namespace_watcher.go index 58d8d8c57..515e706f6 100644 --- a/internal/driver/config/opl_config_namespace_watcher.go +++ b/internal/driver/config/opl_config_namespace_watcher.go @@ -49,7 +49,7 @@ func newOPLConfigWatcher(ctx context.Context, c *Config, target string) (*oplCon } switch targetUrl.Scheme { - case "file": + case "file", "": return nw, watchTarget(ctx, target, nw, c.l) case "http", "https", "base64": file, err := c.Fetcher().Fetch(target) From 1765a1a14ebc61c61c5881079c2fa55163828f70 Mon Sep 17 00:00:00 2001 From: Patrik Date: Tue, 22 Nov 2022 14:57:38 +0100 Subject: [PATCH 2/2] docs: update quickstart to use OPL --- contrib/cat-videos-example/keto.yml | 5 ++- contrib/cat-videos-example/namespaces.ts | 19 +++++++++++ contrib/cat-videos-example/package-lock.json | 32 +++++++++++++++++++ contrib/cat-videos-example/package.json | 5 +++ .../relation-tuples/cats1_owner.json | 4 +-- .../relation-tuples/cats1_view_owner.json | 11 ------- .../relation-tuples/cats2_owner.json | 4 +-- .../relation-tuples/cats2_view.json | 11 ------- 8 files changed, 62 insertions(+), 29 deletions(-) create mode 100644 contrib/cat-videos-example/namespaces.ts create mode 100644 contrib/cat-videos-example/package-lock.json create mode 100644 contrib/cat-videos-example/package.json delete mode 100644 contrib/cat-videos-example/relation-tuples/cats1_view_owner.json delete mode 100644 contrib/cat-videos-example/relation-tuples/cats2_view.json diff --git a/contrib/cat-videos-example/keto.yml b/contrib/cat-videos-example/keto.yml index 03eb4f2b2..ec553032f 100644 --- a/contrib/cat-videos-example/keto.yml +++ b/contrib/cat-videos-example/keto.yml @@ -1,11 +1,10 @@ -version: v0.6.0-alpha.1 +version: v0.10.0-alpha.0 log: level: debug namespaces: - - id: 0 - name: videos + location: file://./contrib/cat-videos-example/namespaces.ts dsn: memory diff --git a/contrib/cat-videos-example/namespaces.ts b/contrib/cat-videos-example/namespaces.ts new file mode 100644 index 000000000..91430a019 --- /dev/null +++ b/contrib/cat-videos-example/namespaces.ts @@ -0,0 +1,19 @@ +import { Context, Namespace } from "@ory/keto-namespace-types" + +class User implements Namespace { + related: {} +} + +class Video implements Namespace { + related: { + owners: User[] + parents: Video[] + } + + permits = { + view: (ctx: Context) => this.permits.isOwner(ctx), + isOwner: (ctx: Context) => + this.related.owners.includes(ctx.subject) || + this.related.parents.traverse((p) => p.permits.isOwner(ctx)), + } +} diff --git a/contrib/cat-videos-example/package-lock.json b/contrib/cat-videos-example/package-lock.json new file mode 100644 index 000000000..b3ffcf058 --- /dev/null +++ b/contrib/cat-videos-example/package-lock.json @@ -0,0 +1,32 @@ +{ + "name": "cat-videos-example", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@ory/keto-namespace-types": "file:../namespace-type-lib" + } + }, + "../namespace-type-lib": { + "version": "0.9.0-alpha.0", + "devDependencies": { + "@ory/keto-namespace-types": "file:./", + "typescript": "^4.7.4" + } + }, + "node_modules/@ory/keto-namespace-types": { + "resolved": "../namespace-type-lib", + "link": true + } + }, + "dependencies": { + "@ory/keto-namespace-types": { + "version": "file:../namespace-type-lib", + "requires": { + "@ory/keto-namespace-types": "file:", + "typescript": "^4.7.4" + } + } + } +} diff --git a/contrib/cat-videos-example/package.json b/contrib/cat-videos-example/package.json new file mode 100644 index 000000000..a0b9d04e5 --- /dev/null +++ b/contrib/cat-videos-example/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@ory/keto-namespace-types": "file:../namespace-type-lib" + } +} diff --git a/contrib/cat-videos-example/relation-tuples/cats1_owner.json b/contrib/cat-videos-example/relation-tuples/cats1_owner.json index 515bc1665..dd1e7d537 100644 --- a/contrib/cat-videos-example/relation-tuples/cats1_owner.json +++ b/contrib/cat-videos-example/relation-tuples/cats1_owner.json @@ -2,10 +2,10 @@ "$schema": "../../../.schema/relation_tuple.schema.json", "namespace": "videos", "object": "/cats/1.mp4", - "relation": "owner", + "relation": "parent", "subject_set": { "namespace": "videos", "object": "/cats", - "relation": "owner" + "relation": "" } } diff --git a/contrib/cat-videos-example/relation-tuples/cats1_view_owner.json b/contrib/cat-videos-example/relation-tuples/cats1_view_owner.json deleted file mode 100644 index d48d624b3..000000000 --- a/contrib/cat-videos-example/relation-tuples/cats1_view_owner.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "../../../.schema/relation_tuple.schema.json", - "namespace": "videos", - "object": "/cats/1.mp4", - "relation": "view", - "subject_set": { - "namespace": "videos", - "object": "/cats/1.mp4", - "relation": "owner" - } -} diff --git a/contrib/cat-videos-example/relation-tuples/cats2_owner.json b/contrib/cat-videos-example/relation-tuples/cats2_owner.json index 3702371e9..8d4764927 100644 --- a/contrib/cat-videos-example/relation-tuples/cats2_owner.json +++ b/contrib/cat-videos-example/relation-tuples/cats2_owner.json @@ -2,10 +2,10 @@ "$schema": "../../../.schema/relation_tuple.schema.json", "namespace": "videos", "object": "/cats/2.mp4", - "relation": "owner", + "relation": "parent", "subject_set": { "namespace": "videos", "object": "/cats", - "relation": "owner" + "relation": "" } } diff --git a/contrib/cat-videos-example/relation-tuples/cats2_view.json b/contrib/cat-videos-example/relation-tuples/cats2_view.json deleted file mode 100644 index e72f20e1e..000000000 --- a/contrib/cat-videos-example/relation-tuples/cats2_view.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "../../../.schema/relation_tuple.schema.json", - "namespace": "videos", - "object": "/cats/2.mp4", - "relation": "view", - "subject_set": { - "namespace": "videos", - "object": "/cats/2.mp4", - "relation": "owner" - } -}