@peerbit/identity-access-controller 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/esm/acl-db.js +9 -9
- package/lib/esm/acl-db.js.map +1 -1
- package/package.json +6 -6
- package/src/access.ts +1 -1
- package/src/acl-db.ts +9 -9
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# "Chain agnostic" Access Controller
|
|
2
2
|
## 🚧 Experimental state 🚧
|
|
3
3
|
|
|
4
|
-
An access controller that supports different layers of
|
|
4
|
+
An access controller that supports different layers of control and fallbacks.
|
|
5
5
|
|
|
6
6
|
- A store containing ACL information, for example what public key can read and write
|
|
7
7
|
- A distributed relation store that lets you use linked devices to get access
|
|
8
8
|
- A fallback trusted network access controller that lets you have access if you are trusted by the root trust identity
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
As of
|
|
11
|
+
As of now, go through the tests for documentation.
|
package/lib/esm/acl-db.js
CHANGED
|
@@ -8,8 +8,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { field, variant } from "@dao-xyz/borsh";
|
|
11
|
-
import { Documents, DocumentIndex
|
|
12
|
-
import { getPathGenerator, TrustedNetwork, getFromByTo, IdentityGraph, createIdentityGraphStore
|
|
11
|
+
import { Documents, DocumentIndex } from "@peerbit/document";
|
|
12
|
+
import { getPathGenerator, TrustedNetwork, getFromByTo, IdentityGraph, createIdentityGraphStore } from "@peerbit/trusted-network";
|
|
13
13
|
import { Access, AccessType } from "./access";
|
|
14
14
|
import { sha256Sync } from "@peerbit/crypto";
|
|
15
15
|
import { Program } from "@peerbit/program";
|
|
@@ -27,17 +27,17 @@ export let IdentityAccessController = class IdentityAccessController extends Pro
|
|
|
27
27
|
this.access = new Documents({
|
|
28
28
|
id: opts.id && sha256Sync(concat([opts.id, new Uint8Array([0])])),
|
|
29
29
|
index: new DocumentIndex({
|
|
30
|
-
query: new RPC()
|
|
31
|
-
})
|
|
30
|
+
query: new RPC()
|
|
31
|
+
})
|
|
32
32
|
});
|
|
33
33
|
this.trustedNetwork = opts.trustedNetwork
|
|
34
34
|
? opts.trustedNetwork
|
|
35
35
|
: new TrustedNetwork({
|
|
36
36
|
id: opts.id && sha256Sync(concat([opts.id, new Uint8Array([1])])),
|
|
37
|
-
rootTrust: opts.rootTrust
|
|
37
|
+
rootTrust: opts.rootTrust
|
|
38
38
|
});
|
|
39
39
|
this.identityGraphController = new IdentityGraph({
|
|
40
|
-
relationGraph: createIdentityGraphStore(opts.id && sha256Sync(concat([opts.id, new Uint8Array([2])])))
|
|
40
|
+
relationGraph: createIdentityGraphStore(opts.id && sha256Sync(concat([opts.id, new Uint8Array([2])])))
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
// allow anyone write to the ACL db, but assume entry is invalid until a verifier verifies
|
|
@@ -120,15 +120,15 @@ export let IdentityAccessController = class IdentityAccessController extends Pro
|
|
|
120
120
|
async open(properties) {
|
|
121
121
|
await this.identityGraphController.open({
|
|
122
122
|
role: properties?.role,
|
|
123
|
-
canRead: this.canRead.bind(this)
|
|
123
|
+
canRead: this.canRead.bind(this)
|
|
124
124
|
});
|
|
125
125
|
await this.access.open({
|
|
126
126
|
role: properties?.role,
|
|
127
127
|
type: Access,
|
|
128
128
|
canPerform: this.canPerform.bind(this),
|
|
129
129
|
index: {
|
|
130
|
-
canRead: this.canRead.bind(this)
|
|
131
|
-
}
|
|
130
|
+
canRead: this.canRead.bind(this)
|
|
131
|
+
}
|
|
132
132
|
});
|
|
133
133
|
await this.trustedNetwork.open(properties);
|
|
134
134
|
}
|
package/lib/esm/acl-db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl-db.js","sourceRoot":"","sources":["../../src/acl-db.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACN,SAAS,EACT,aAAa,
|
|
1
|
+
{"version":3,"file":"acl-db.js","sourceRoot":"","sources":["../../src/acl-db.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/identity-access-controller",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"description": "Access controller that operates on a DB",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@dao-xyz/borsh": "^5.1.5",
|
|
34
|
-
"@peerbit/document": "3.0.
|
|
35
|
-
"@peerbit/trusted-network": "2.0.
|
|
34
|
+
"@peerbit/document": "3.0.5",
|
|
35
|
+
"@peerbit/trusted-network": "2.0.5"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@peerbit/test-utils": "^1.0.
|
|
39
|
-
"@peerbit/time": "^1.0.
|
|
38
|
+
"@peerbit/test-utils": "^1.0.20",
|
|
39
|
+
"@peerbit/time": "^1.0.3"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "0cfa376bc90c31e1063ddaf5435c828b490e0228"
|
|
42
42
|
}
|
package/src/access.ts
CHANGED
package/src/acl-db.ts
CHANGED
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
Role,
|
|
6
6
|
TransactionContext,
|
|
7
7
|
PutOperation,
|
|
8
|
-
DeleteOperation
|
|
8
|
+
DeleteOperation
|
|
9
9
|
} from "@peerbit/document";
|
|
10
10
|
import {
|
|
11
11
|
getPathGenerator,
|
|
12
12
|
TrustedNetwork,
|
|
13
13
|
getFromByTo,
|
|
14
14
|
IdentityGraph,
|
|
15
|
-
createIdentityGraphStore
|
|
15
|
+
createIdentityGraphStore
|
|
16
16
|
} from "@peerbit/trusted-network";
|
|
17
17
|
import { Access, AccessType } from "./access";
|
|
18
18
|
import { Entry } from "@peerbit/log";
|
|
@@ -45,20 +45,20 @@ export class IdentityAccessController extends Program {
|
|
|
45
45
|
this.access = new Documents({
|
|
46
46
|
id: opts.id && sha256Sync(concat([opts.id, new Uint8Array([0])])),
|
|
47
47
|
index: new DocumentIndex({
|
|
48
|
-
query: new RPC()
|
|
49
|
-
})
|
|
48
|
+
query: new RPC()
|
|
49
|
+
})
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
this.trustedNetwork = opts.trustedNetwork
|
|
53
53
|
? opts.trustedNetwork
|
|
54
54
|
: new TrustedNetwork({
|
|
55
55
|
id: opts.id && sha256Sync(concat([opts.id, new Uint8Array([1])])),
|
|
56
|
-
rootTrust: opts.rootTrust
|
|
56
|
+
rootTrust: opts.rootTrust
|
|
57
57
|
});
|
|
58
58
|
this.identityGraphController = new IdentityGraph({
|
|
59
59
|
relationGraph: createIdentityGraphStore(
|
|
60
60
|
opts.id && sha256Sync(concat([opts.id, new Uint8Array([2])]))
|
|
61
|
-
)
|
|
61
|
+
)
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -174,15 +174,15 @@ export class IdentityAccessController extends Program {
|
|
|
174
174
|
async open(properties?: { role?: Role }) {
|
|
175
175
|
await this.identityGraphController.open({
|
|
176
176
|
role: properties?.role,
|
|
177
|
-
canRead: this.canRead.bind(this)
|
|
177
|
+
canRead: this.canRead.bind(this)
|
|
178
178
|
});
|
|
179
179
|
await this.access.open({
|
|
180
180
|
role: properties?.role,
|
|
181
181
|
type: Access,
|
|
182
182
|
canPerform: this.canPerform.bind(this),
|
|
183
183
|
index: {
|
|
184
|
-
canRead: this.canRead.bind(this)
|
|
185
|
-
}
|
|
184
|
+
canRead: this.canRead.bind(this)
|
|
185
|
+
}
|
|
186
186
|
});
|
|
187
187
|
await this.trustedNetwork.open(properties);
|
|
188
188
|
}
|