@peerbit/identity-access-controller 1.0.17 → 2.0.0

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.
@@ -1,7 +1,6 @@
1
- import { Documents, Role } from "@peerbit/document";
1
+ import { Documents, Role, TransactionContext, PutOperation, DeleteOperation } from "@peerbit/document";
2
2
  import { TrustedNetwork, IdentityGraph } from "@peerbit/trusted-network";
3
3
  import { Access } from "./access";
4
- import { Entry } from "@peerbit/log";
5
4
  import { PublicSignKey } from "@peerbit/crypto";
6
5
  import { Program } from "@peerbit/program";
7
6
  import { PeerId } from "@libp2p/interface-peer-id";
@@ -14,8 +13,8 @@ export declare class IdentityAccessController extends Program {
14
13
  rootTrust: PublicSignKey | PeerId;
15
14
  trustedNetwork?: TrustedNetwork;
16
15
  });
17
- canRead(s: PublicSignKey | undefined): Promise<boolean>;
18
- canAppend(entry: Entry<any>): Promise<boolean>;
16
+ canRead(_obj: any, s: PublicSignKey | undefined): Promise<boolean>;
17
+ canPerform(_operation: PutOperation<Access> | DeleteOperation, context: TransactionContext<Access>): Promise<boolean>;
19
18
  open(properties?: {
20
19
  role?: Role;
21
20
  }): Promise<void>;
package/lib/esm/acl-db.js CHANGED
@@ -8,7 +8,7 @@ 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 } from "@peerbit/document";
11
+ import { Documents, DocumentIndex, } from "@peerbit/document";
12
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";
@@ -44,7 +44,7 @@ export let IdentityAccessController = class IdentityAccessController extends Pro
44
44
  // can append will be anyone who has peformed some proof of work
45
45
  // or
46
46
  // custom can append
47
- async canRead(s) {
47
+ async canRead(_obj, s) {
48
48
  // TODO, improve, caching etc
49
49
  if (!s) {
50
50
  return false;
@@ -78,15 +78,15 @@ export let IdentityAccessController = class IdentityAccessController extends Pro
78
78
  }
79
79
  return false;
80
80
  }
81
- async canAppend(entry) {
81
+ async canPerform(_operation, context) {
82
82
  // TODO, improve, caching etc
83
83
  // Check whether it is trusted by trust web
84
- const canAppendByKey = async (key) => {
84
+ const canPerformByKey = async (key) => {
85
85
  if (await this.trustedNetwork.isTrusted(key)) {
86
86
  return true;
87
87
  }
88
88
  // Else check whether its trusted by this access controller
89
- const canWriteCheck = async (key) => {
89
+ const canPerformCheck = async (key) => {
90
90
  for (const value of this.access.index.index.values()) {
91
91
  const access = value.value;
92
92
  if (access instanceof Access) {
@@ -100,18 +100,18 @@ export let IdentityAccessController = class IdentityAccessController extends Pro
100
100
  }
101
101
  }
102
102
  };
103
- if (await canWriteCheck(key)) {
103
+ if (await canPerformCheck(key)) {
104
104
  return true;
105
105
  }
106
106
  for await (const trustedByKey of getPathGenerator(key, this.identityGraphController.relationGraph, getFromByTo)) {
107
- if (await canWriteCheck(trustedByKey.from)) {
107
+ if (await canPerformCheck(trustedByKey.from)) {
108
108
  return true;
109
109
  }
110
110
  }
111
111
  return false;
112
112
  };
113
- for (const key of await entry.getPublicKeys()) {
114
- if (await canAppendByKey(key)) {
113
+ for (const key of await context.entry.getPublicKeys()) {
114
+ if (await canPerformByKey(key)) {
115
115
  return true;
116
116
  }
117
117
  }
@@ -125,8 +125,10 @@ export let IdentityAccessController = class IdentityAccessController extends Pro
125
125
  await this.access.open({
126
126
  role: properties?.role,
127
127
  type: Access,
128
- canAppend: this.canAppend.bind(this),
129
- canRead: this.canRead.bind(this),
128
+ canPerform: this.canPerform.bind(this),
129
+ index: {
130
+ canRead: this.canRead.bind(this),
131
+ },
130
132
  });
131
133
  await this.trustedNetwork.open(properties);
132
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"acl-db.js","sourceRoot":"","sources":["../../src/acl-db.ts"],"names":[],"mappings":"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"}
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": "1.0.17",
3
+ "version": "2.0.0",
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": "2.0.1",
35
- "@peerbit/trusted-network": "1.0.17"
34
+ "@peerbit/document": "3.0.0",
35
+ "@peerbit/trusted-network": "2.0.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@peerbit/test-utils": "^1.0.15",
38
+ "@peerbit/test-utils": "^1.0.16",
39
39
  "@peerbit/time": "^1.0.2"
40
40
  },
41
- "gitHead": "4752c301fb49b2f937b4039533ff5bc3537da3e0"
41
+ "gitHead": "464e807d679e24b897b7811ac99d6f85fbd756f9"
42
42
  }
package/src/acl-db.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  import { field, variant } from "@dao-xyz/borsh";
2
- import { Documents, DocumentIndex, Role } from "@peerbit/document";
2
+ import {
3
+ Documents,
4
+ DocumentIndex,
5
+ Role,
6
+ TransactionContext,
7
+ PutOperation,
8
+ DeleteOperation,
9
+ } from "@peerbit/document";
3
10
  import {
4
11
  getPathGenerator,
5
12
  TrustedNetwork,
@@ -62,7 +69,7 @@ export class IdentityAccessController extends Program {
62
69
 
63
70
  // custom can append
64
71
 
65
- async canRead(s: PublicSignKey | undefined): Promise<boolean> {
72
+ async canRead(_obj: any, s: PublicSignKey | undefined): Promise<boolean> {
66
73
  // TODO, improve, caching etc
67
74
 
68
75
  if (!s) {
@@ -110,16 +117,19 @@ export class IdentityAccessController extends Program {
110
117
  return false;
111
118
  }
112
119
 
113
- async canAppend(entry: Entry<any>): Promise<boolean> {
120
+ async canPerform(
121
+ _operation: PutOperation<Access> | DeleteOperation,
122
+ context: TransactionContext<Access>
123
+ ): Promise<boolean> {
114
124
  // TODO, improve, caching etc
115
125
 
116
126
  // Check whether it is trusted by trust web
117
- const canAppendByKey = async (key: PublicSignKey): Promise<boolean> => {
127
+ const canPerformByKey = async (key: PublicSignKey): Promise<boolean> => {
118
128
  if (await this.trustedNetwork.isTrusted(key)) {
119
129
  return true;
120
130
  }
121
131
  // Else check whether its trusted by this access controller
122
- const canWriteCheck = async (key: PublicSignKey) => {
132
+ const canPerformCheck = async (key: PublicSignKey) => {
123
133
  for (const value of this.access.index.index.values()) {
124
134
  const access = value.value;
125
135
  if (access instanceof Access) {
@@ -137,7 +147,7 @@ export class IdentityAccessController extends Program {
137
147
  }
138
148
  }
139
149
  };
140
- if (await canWriteCheck(key)) {
150
+ if (await canPerformCheck(key)) {
141
151
  return true;
142
152
  }
143
153
  for await (const trustedByKey of getPathGenerator(
@@ -145,7 +155,7 @@ export class IdentityAccessController extends Program {
145
155
  this.identityGraphController.relationGraph,
146
156
  getFromByTo
147
157
  )) {
148
- if (await canWriteCheck(trustedByKey.from)) {
158
+ if (await canPerformCheck(trustedByKey.from)) {
149
159
  return true;
150
160
  }
151
161
  }
@@ -153,8 +163,8 @@ export class IdentityAccessController extends Program {
153
163
  return false;
154
164
  };
155
165
 
156
- for (const key of await entry.getPublicKeys()) {
157
- if (await canAppendByKey(key)) {
166
+ for (const key of await context.entry.getPublicKeys()) {
167
+ if (await canPerformByKey(key)) {
158
168
  return true;
159
169
  }
160
170
  }
@@ -169,8 +179,10 @@ export class IdentityAccessController extends Program {
169
179
  await this.access.open({
170
180
  role: properties?.role,
171
181
  type: Access,
172
- canAppend: this.canAppend.bind(this),
173
- canRead: this.canRead.bind(this),
182
+ canPerform: this.canPerform.bind(this),
183
+ index: {
184
+ canRead: this.canRead.bind(this),
185
+ },
174
186
  });
175
187
  await this.trustedNetwork.open(properties);
176
188
  }