@powerhousedao/reactor-api 5.1.0-dev.3 → 5.1.0-dev.30
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/dist/codegen.js +2 -2
- package/dist/codegen.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/src/graphql/auth/index.d.ts +2 -0
- package/dist/src/graphql/auth/index.d.ts.map +1 -0
- package/dist/src/graphql/auth/index.js +2 -0
- package/dist/src/graphql/auth/index.js.map +1 -0
- package/dist/src/graphql/auth/resolvers.d.ts +149 -0
- package/dist/src/graphql/auth/resolvers.d.ts.map +1 -0
- package/dist/src/graphql/auth/resolvers.js +173 -0
- package/dist/src/graphql/auth/resolvers.js.map +1 -0
- package/dist/src/graphql/auth/schema.graphql +173 -0
- package/dist/src/graphql/auth/subgraph.d.ts +177 -0
- package/dist/src/graphql/auth/subgraph.d.ts.map +1 -0
- package/dist/src/graphql/auth/subgraph.js +340 -0
- package/dist/src/graphql/auth/subgraph.js.map +1 -0
- package/dist/src/graphql/base-subgraph.d.ts +3 -1
- package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/base-subgraph.js +2 -0
- package/dist/src/graphql/base-subgraph.js.map +1 -1
- package/dist/src/graphql/datadog-plugin.d.ts +14 -0
- package/dist/src/graphql/datadog-plugin.d.ts.map +1 -0
- package/dist/src/graphql/datadog-plugin.js +103 -0
- package/dist/src/graphql/datadog-plugin.js.map +1 -0
- package/dist/src/graphql/document-model-subgraph.d.ts +51 -0
- package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -0
- package/dist/src/graphql/document-model-subgraph.js +104 -0
- package/dist/src/graphql/document-model-subgraph.js.map +1 -0
- package/dist/src/graphql/drive-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/drive-subgraph.js +51 -10
- package/dist/src/graphql/drive-subgraph.js.map +1 -1
- package/dist/src/graphql/graphql-manager.d.ts +11 -3
- package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
- package/dist/src/graphql/graphql-manager.js +75 -16
- package/dist/src/graphql/graphql-manager.js.map +1 -1
- package/dist/src/graphql/index.d.ts +2 -0
- package/dist/src/graphql/index.d.ts.map +1 -1
- package/dist/src/graphql/index.js +2 -0
- package/dist/src/graphql/index.js.map +1 -1
- package/dist/src/graphql/reactor/adapters.js +1 -1
- package/dist/src/graphql/reactor/adapters.js.map +1 -1
- package/dist/src/graphql/reactor/factory.d.ts +4 -4
- package/dist/src/graphql/reactor/factory.d.ts.map +1 -1
- package/dist/src/graphql/reactor/gen/graphql.d.ts +295 -64
- package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -1
- package/dist/src/graphql/reactor/gen/graphql.js +121 -8
- package/dist/src/graphql/reactor/gen/graphql.js.map +1 -1
- package/dist/src/graphql/reactor/operations.graphql +253 -0
- package/dist/src/graphql/reactor/pubsub.d.ts +2 -2
- package/dist/src/graphql/reactor/pubsub.d.ts.map +1 -1
- package/dist/src/graphql/reactor/pubsub.js +2 -1
- package/dist/src/graphql/reactor/pubsub.js.map +1 -1
- package/dist/src/graphql/reactor/resolvers.d.ts +10 -17
- package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
- package/dist/src/graphql/reactor/resolvers.js +60 -39
- package/dist/src/graphql/reactor/resolvers.js.map +1 -1
- package/dist/src/graphql/reactor/schema.graphql +429 -0
- package/dist/src/graphql/reactor/subgraph.d.ts +34 -0
- package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
- package/dist/src/graphql/reactor/subgraph.js +290 -27
- package/dist/src/graphql/reactor/subgraph.js.map +1 -1
- package/dist/src/graphql/reactor/validation.d.ts +66 -66
- package/dist/src/graphql/system/system-subgraph.d.ts.map +1 -1
- package/dist/src/graphql/types.d.ts +4 -1
- package/dist/src/graphql/types.d.ts.map +1 -1
- package/dist/src/graphql/utils.d.ts.map +1 -1
- package/dist/src/graphql/utils.js +2 -2
- package/dist/src/graphql/utils.js.map +1 -1
- package/dist/src/migrations/001_create_document_permissions.d.ts +4 -0
- package/dist/src/migrations/001_create_document_permissions.d.ts.map +1 -0
- package/dist/src/migrations/001_create_document_permissions.js +91 -0
- package/dist/src/migrations/001_create_document_permissions.js.map +1 -0
- package/dist/src/migrations/index.d.ts +10 -0
- package/dist/src/migrations/index.d.ts.map +1 -0
- package/dist/src/migrations/index.js +56 -0
- package/dist/src/migrations/index.js.map +1 -0
- package/dist/src/packages/util.js +1 -1
- package/dist/src/packages/util.js.map +1 -1
- package/dist/src/server.d.ts +17 -7
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +58 -22
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/auth.service.d.ts +1 -0
- package/dist/src/services/auth.service.d.ts.map +1 -1
- package/dist/src/services/auth.service.js +30 -16
- package/dist/src/services/auth.service.js.map +1 -1
- package/dist/src/services/document-permission.service.d.ts +201 -0
- package/dist/src/services/document-permission.service.d.ts.map +1 -0
- package/dist/src/services/document-permission.service.js +636 -0
- package/dist/src/services/document-permission.service.js.map +1 -0
- package/dist/src/tracing.d.ts +110 -0
- package/dist/src/tracing.d.ts.map +1 -0
- package/dist/src/tracing.js +259 -0
- package/dist/src/tracing.js.map +1 -0
- package/dist/src/utils/create-schema.d.ts +5 -4
- package/dist/src/utils/create-schema.d.ts.map +1 -1
- package/dist/src/utils/create-schema.js +110 -4
- package/dist/src/utils/create-schema.js.map +1 -1
- package/dist/src/utils/db.d.ts +65 -1
- package/dist/src/utils/db.d.ts.map +1 -1
- package/dist/src/utils/db.js.map +1 -1
- package/dist/test/document-permission.service.test.d.ts +2 -0
- package/dist/test/document-permission.service.test.d.ts.map +1 -0
- package/dist/test/document-permission.service.test.js +480 -0
- package/dist/test/document-permission.service.test.js.map +1 -0
- package/dist/test/drive-subgraph-permissions.test.d.ts +2 -0
- package/dist/test/drive-subgraph-permissions.test.d.ts.map +1 -0
- package/dist/test/drive-subgraph-permissions.test.js +195 -0
- package/dist/test/drive-subgraph-permissions.test.js.map +1 -0
- package/dist/test/identity-integration.test.d.ts +2 -0
- package/dist/test/identity-integration.test.d.ts.map +1 -0
- package/dist/test/identity-integration.test.js +349 -0
- package/dist/test/identity-integration.test.js.map +1 -0
- package/dist/test/permissions-integration.test.d.ts +2 -0
- package/dist/test/permissions-integration.test.d.ts.map +1 -0
- package/dist/test/permissions-integration.test.js +421 -0
- package/dist/test/permissions-integration.test.js.map +1 -0
- package/dist/test/reactor-adapters.test.js +2 -2
- package/dist/test/reactor-adapters.test.js.map +1 -1
- package/dist/test/reactor-resolvers.test.js +24 -24
- package/dist/test/reactor-resolvers.test.js.map +1 -1
- package/dist/test/reactor-subgraph-permissions.test.d.ts +2 -0
- package/dist/test/reactor-subgraph-permissions.test.d.ts.map +1 -0
- package/dist/test/reactor-subgraph-permissions.test.js +400 -0
- package/dist/test/reactor-subgraph-permissions.test.js.map +1 -0
- package/dist/test/two-reactor-gql-sync.test.js +114 -63
- package/dist/test/two-reactor-gql-sync.test.js.map +1 -1
- package/dist/test/utils/gql-resolver-bridge.js +4 -4
- package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -8
package/dist/codegen.js
CHANGED
|
@@ -13,11 +13,11 @@ const config = {
|
|
|
13
13
|
config: {
|
|
14
14
|
contextType: "../../types.js#Context",
|
|
15
15
|
scalars: {
|
|
16
|
-
JSONObject: "
|
|
16
|
+
JSONObject: "NonNullable<unknown>",
|
|
17
17
|
DateTime: "string | Date",
|
|
18
18
|
},
|
|
19
19
|
scalarSchemas: {
|
|
20
|
-
JSONObject: "z.unknown()",
|
|
20
|
+
JSONObject: "z.custom<NonNullable<unknown>>((v) => v != null)",
|
|
21
21
|
DateTime: "z.union([z.string(), z.date()])",
|
|
22
22
|
},
|
|
23
23
|
useIndexSignature: true,
|
package/dist/codegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../codegen.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAkB;IAC5B,MAAM,EAAE,iCAAiC;IACzC,SAAS,EAAE,CAAC,0CAA0C,CAAC;IACvD,SAAS,EAAE;QACT,sCAAsC,EAAE;YACtC,OAAO,EAAE;gBACP,YAAY;gBACZ,uBAAuB;gBACvB,sBAAsB;gBACtB,8BAA8B;gBAC9B,wBAAwB;aACzB;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,wBAAwB;gBACrC,OAAO,EAAE;oBACP,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../codegen.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAkB;IAC5B,MAAM,EAAE,iCAAiC;IACzC,SAAS,EAAE,CAAC,0CAA0C,CAAC;IACvD,SAAS,EAAE;QACT,sCAAsC,EAAE;YACtC,OAAO,EAAE;gBACP,YAAY;gBACZ,uBAAuB;gBACvB,sBAAsB;gBACtB,8BAA8B;gBAC9B,wBAAwB;aACzB;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,wBAAwB;gBACrC,OAAO,EAAE;oBACP,UAAU,EAAE,sBAAsB;oBAClC,QAAQ,EAAE,eAAe;iBAC1B;gBACD,aAAa,EAAE;oBACb,UAAU,EAAE,kDAAkD;oBAC9D,QAAQ,EAAE,iCAAiC;iBAC5C;gBACD,iBAAiB,EAAE,IAAI;gBACvB,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;gBACnB,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,IAAI;gBACpB,UAAU,EAAE,sBAAsB;gBAClC,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,iBAAiB;aAC7B;SACF;KACF;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,8 +5,10 @@ export * from "./src/packages/package-manager.js";
|
|
|
5
5
|
export * from "./src/packages/vite-loader.js";
|
|
6
6
|
export * from "./src/server.js";
|
|
7
7
|
export * from "./src/services/auth.service.js";
|
|
8
|
+
export * from "./src/services/document-permission.service.js";
|
|
8
9
|
export * from "./src/sync/types.js";
|
|
9
10
|
export * from "./src/sync/utils.js";
|
|
11
|
+
export * from "./src/tracing.js";
|
|
10
12
|
export * from "./src/types.js";
|
|
11
13
|
export * from "./src/utils/index.js";
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,8 +5,10 @@ export * from "./src/packages/package-manager.js";
|
|
|
5
5
|
export * from "./src/packages/vite-loader.js";
|
|
6
6
|
export * from "./src/server.js";
|
|
7
7
|
export * from "./src/services/auth.service.js";
|
|
8
|
+
export * from "./src/services/document-permission.service.js";
|
|
8
9
|
export * from "./src/sync/types.js";
|
|
9
10
|
export * from "./src/sync/utils.js";
|
|
11
|
+
export * from "./src/tracing.js";
|
|
10
12
|
export * from "./src/types.js";
|
|
11
13
|
export * from "./src/utils/index.js";
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/graphql/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graphql/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import type { DocumentPermissionService, GetParentIdsFn } from "../../services/document-permission.service.js";
|
|
2
|
+
import type { DocumentPermissionLevel } from "../../utils/db.js";
|
|
3
|
+
import type { IReactorClient } from "@powerhousedao/reactor";
|
|
4
|
+
export type DocumentAccessInfo = {
|
|
5
|
+
documentId: string;
|
|
6
|
+
permissions: Array<{
|
|
7
|
+
documentId: string;
|
|
8
|
+
userAddress: string;
|
|
9
|
+
permission: DocumentPermissionLevel;
|
|
10
|
+
grantedBy: string;
|
|
11
|
+
createdAt: Date;
|
|
12
|
+
updatedAt: Date;
|
|
13
|
+
}>;
|
|
14
|
+
groupPermissions: Array<{
|
|
15
|
+
documentId: string;
|
|
16
|
+
groupId: number;
|
|
17
|
+
permission: DocumentPermissionLevel;
|
|
18
|
+
grantedBy: string;
|
|
19
|
+
createdAt: Date;
|
|
20
|
+
updatedAt: Date;
|
|
21
|
+
}>;
|
|
22
|
+
};
|
|
23
|
+
export declare function documentAccess(service: DocumentPermissionService, args: {
|
|
24
|
+
documentId: string;
|
|
25
|
+
}): Promise<DocumentAccessInfo>;
|
|
26
|
+
export declare function userDocumentPermissions(service: DocumentPermissionService, userAddress: string): Promise<Array<{
|
|
27
|
+
documentId: string;
|
|
28
|
+
userAddress: string;
|
|
29
|
+
permission: DocumentPermissionLevel;
|
|
30
|
+
grantedBy: string;
|
|
31
|
+
createdAt: Date;
|
|
32
|
+
updatedAt: Date;
|
|
33
|
+
}>>;
|
|
34
|
+
export declare function grantDocumentPermission(service: DocumentPermissionService, args: {
|
|
35
|
+
documentId: string;
|
|
36
|
+
userAddress: string;
|
|
37
|
+
permission: DocumentPermissionLevel;
|
|
38
|
+
}, grantedByAddress: string | undefined, isGlobalAdmin: boolean): Promise<{
|
|
39
|
+
documentId: string;
|
|
40
|
+
userAddress: string;
|
|
41
|
+
permission: DocumentPermissionLevel;
|
|
42
|
+
grantedBy: string;
|
|
43
|
+
createdAt: Date;
|
|
44
|
+
updatedAt: Date;
|
|
45
|
+
}>;
|
|
46
|
+
export declare function revokeDocumentPermission(service: DocumentPermissionService, args: {
|
|
47
|
+
documentId: string;
|
|
48
|
+
userAddress: string;
|
|
49
|
+
}, revokedByAddress: string | undefined, isGlobalAdmin: boolean): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* Create a getParentIds function using the reactor client
|
|
52
|
+
*/
|
|
53
|
+
export declare function createGetParentIdsFn(reactorClient: IReactorClient): GetParentIdsFn;
|
|
54
|
+
export type Group = {
|
|
55
|
+
id: number;
|
|
56
|
+
name: string;
|
|
57
|
+
description: string | null;
|
|
58
|
+
createdAt: Date;
|
|
59
|
+
updatedAt: Date;
|
|
60
|
+
};
|
|
61
|
+
export declare function groups(service: DocumentPermissionService): Promise<Group[]>;
|
|
62
|
+
export declare function group(service: DocumentPermissionService, args: {
|
|
63
|
+
id: number;
|
|
64
|
+
}): Promise<Group | null>;
|
|
65
|
+
export declare function userGroups(service: DocumentPermissionService, args: {
|
|
66
|
+
userAddress: string;
|
|
67
|
+
}): Promise<Group[]>;
|
|
68
|
+
export declare function createGroup(service: DocumentPermissionService, args: {
|
|
69
|
+
name: string;
|
|
70
|
+
description?: string | null;
|
|
71
|
+
}): Promise<Group>;
|
|
72
|
+
export declare function deleteGroup(service: DocumentPermissionService, args: {
|
|
73
|
+
id: number;
|
|
74
|
+
}): Promise<boolean>;
|
|
75
|
+
export declare function addUserToGroup(service: DocumentPermissionService, args: {
|
|
76
|
+
userAddress: string;
|
|
77
|
+
groupId: number;
|
|
78
|
+
}): Promise<boolean>;
|
|
79
|
+
export declare function removeUserFromGroup(service: DocumentPermissionService, args: {
|
|
80
|
+
userAddress: string;
|
|
81
|
+
groupId: number;
|
|
82
|
+
}): Promise<boolean>;
|
|
83
|
+
export declare function getGroupMembers(service: DocumentPermissionService, groupId: number): Promise<string[]>;
|
|
84
|
+
export type DocumentGroupPermission = {
|
|
85
|
+
documentId: string;
|
|
86
|
+
groupId: number;
|
|
87
|
+
permission: DocumentPermissionLevel;
|
|
88
|
+
grantedBy: string;
|
|
89
|
+
createdAt: Date;
|
|
90
|
+
updatedAt: Date;
|
|
91
|
+
};
|
|
92
|
+
export declare function grantGroupPermission(service: DocumentPermissionService, args: {
|
|
93
|
+
documentId: string;
|
|
94
|
+
groupId: number;
|
|
95
|
+
permission: DocumentPermissionLevel;
|
|
96
|
+
}, grantedByAddress: string | undefined, isGlobalAdmin: boolean): Promise<DocumentGroupPermission>;
|
|
97
|
+
export declare function revokeGroupPermission(service: DocumentPermissionService, args: {
|
|
98
|
+
documentId: string;
|
|
99
|
+
groupId: number;
|
|
100
|
+
}, revokedByAddress: string | undefined, isGlobalAdmin: boolean): Promise<boolean>;
|
|
101
|
+
export type OperationUserPermission = {
|
|
102
|
+
documentId: string;
|
|
103
|
+
operationType: string;
|
|
104
|
+
userAddress: string;
|
|
105
|
+
grantedBy: string;
|
|
106
|
+
createdAt: Date;
|
|
107
|
+
};
|
|
108
|
+
export type OperationGroupPermission = {
|
|
109
|
+
documentId: string;
|
|
110
|
+
operationType: string;
|
|
111
|
+
groupId: number;
|
|
112
|
+
grantedBy: string;
|
|
113
|
+
createdAt: Date;
|
|
114
|
+
};
|
|
115
|
+
export type OperationPermissionsInfo = {
|
|
116
|
+
documentId: string;
|
|
117
|
+
operationType: string;
|
|
118
|
+
userPermissions: OperationUserPermission[];
|
|
119
|
+
groupPermissions: OperationGroupPermission[];
|
|
120
|
+
};
|
|
121
|
+
export declare function operationPermissions(service: DocumentPermissionService, args: {
|
|
122
|
+
documentId: string;
|
|
123
|
+
operationType: string;
|
|
124
|
+
}): Promise<OperationPermissionsInfo>;
|
|
125
|
+
export declare function canExecuteOperation(service: DocumentPermissionService, args: {
|
|
126
|
+
documentId: string;
|
|
127
|
+
operationType: string;
|
|
128
|
+
}, userAddress: string | undefined): Promise<boolean>;
|
|
129
|
+
export declare function grantOperationPermission(service: DocumentPermissionService, args: {
|
|
130
|
+
documentId: string;
|
|
131
|
+
operationType: string;
|
|
132
|
+
userAddress: string;
|
|
133
|
+
}, grantedByAddress: string | undefined, isGlobalAdmin: boolean): Promise<OperationUserPermission>;
|
|
134
|
+
export declare function revokeOperationPermission(service: DocumentPermissionService, args: {
|
|
135
|
+
documentId: string;
|
|
136
|
+
operationType: string;
|
|
137
|
+
userAddress: string;
|
|
138
|
+
}, revokedByAddress: string | undefined, isGlobalAdmin: boolean): Promise<boolean>;
|
|
139
|
+
export declare function grantGroupOperationPermission(service: DocumentPermissionService, args: {
|
|
140
|
+
documentId: string;
|
|
141
|
+
operationType: string;
|
|
142
|
+
groupId: number;
|
|
143
|
+
}, grantedByAddress: string | undefined, isGlobalAdmin: boolean): Promise<OperationGroupPermission>;
|
|
144
|
+
export declare function revokeGroupOperationPermission(service: DocumentPermissionService, args: {
|
|
145
|
+
documentId: string;
|
|
146
|
+
operationType: string;
|
|
147
|
+
groupId: number;
|
|
148
|
+
}, revokedByAddress: string | undefined, isGlobalAdmin: boolean): Promise<boolean>;
|
|
149
|
+
//# sourceMappingURL=resolvers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../../src/graphql/auth/resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { GraphQLError } from "graphql";
|
|
2
|
+
export async function documentAccess(service, args) {
|
|
3
|
+
const permissions = await service.getDocumentPermissions(args.documentId);
|
|
4
|
+
const groupPermissions = await service.getDocumentGroupPermissions(args.documentId);
|
|
5
|
+
return {
|
|
6
|
+
documentId: args.documentId,
|
|
7
|
+
permissions,
|
|
8
|
+
groupPermissions,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export async function userDocumentPermissions(service, userAddress) {
|
|
12
|
+
return service.getUserDocuments(userAddress);
|
|
13
|
+
}
|
|
14
|
+
export async function grantDocumentPermission(service, args, grantedByAddress, isGlobalAdmin) {
|
|
15
|
+
// Check authorization: must be global admin or document admin
|
|
16
|
+
if (!grantedByAddress) {
|
|
17
|
+
throw new GraphQLError("Authentication required");
|
|
18
|
+
}
|
|
19
|
+
if (!isGlobalAdmin) {
|
|
20
|
+
const canManage = await service.canManageDocument(args.documentId, grantedByAddress);
|
|
21
|
+
if (!canManage) {
|
|
22
|
+
throw new GraphQLError("Forbidden: You must be an admin of this document to grant permissions");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return service.grantPermission(args.documentId, args.userAddress, args.permission, grantedByAddress);
|
|
26
|
+
}
|
|
27
|
+
export async function revokeDocumentPermission(service, args, revokedByAddress, isGlobalAdmin) {
|
|
28
|
+
// Check authorization: must be global admin or document admin
|
|
29
|
+
if (!revokedByAddress) {
|
|
30
|
+
throw new GraphQLError("Authentication required");
|
|
31
|
+
}
|
|
32
|
+
if (!isGlobalAdmin) {
|
|
33
|
+
const canManage = await service.canManageDocument(args.documentId, revokedByAddress);
|
|
34
|
+
if (!canManage) {
|
|
35
|
+
throw new GraphQLError("Forbidden: You must be an admin of this document to revoke permissions");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
await service.revokePermission(args.documentId, args.userAddress);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a getParentIds function using the reactor client
|
|
43
|
+
*/
|
|
44
|
+
export function createGetParentIdsFn(reactorClient) {
|
|
45
|
+
return async (documentId) => {
|
|
46
|
+
try {
|
|
47
|
+
const result = await reactorClient.getParents(documentId);
|
|
48
|
+
return result.results.map((doc) => doc.header.id);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// If document has no parents or error, return empty array
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export async function groups(service) {
|
|
57
|
+
return service.listGroups();
|
|
58
|
+
}
|
|
59
|
+
export async function group(service, args) {
|
|
60
|
+
return service.getGroup(args.id);
|
|
61
|
+
}
|
|
62
|
+
export async function userGroups(service, args) {
|
|
63
|
+
return service.getUserGroups(args.userAddress);
|
|
64
|
+
}
|
|
65
|
+
export async function createGroup(service, args) {
|
|
66
|
+
return service.createGroup(args.name, args.description ?? undefined);
|
|
67
|
+
}
|
|
68
|
+
export async function deleteGroup(service, args) {
|
|
69
|
+
await service.deleteGroup(args.id);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
export async function addUserToGroup(service, args) {
|
|
73
|
+
await service.addUserToGroup(args.userAddress, args.groupId);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
export async function removeUserFromGroup(service, args) {
|
|
77
|
+
await service.removeUserFromGroup(args.userAddress, args.groupId);
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
export async function getGroupMembers(service, groupId) {
|
|
81
|
+
return service.getGroupMembers(groupId);
|
|
82
|
+
}
|
|
83
|
+
export async function grantGroupPermission(service, args, grantedByAddress, isGlobalAdmin) {
|
|
84
|
+
// Check authorization: must be global admin or document admin
|
|
85
|
+
if (!grantedByAddress) {
|
|
86
|
+
throw new GraphQLError("Authentication required");
|
|
87
|
+
}
|
|
88
|
+
if (!isGlobalAdmin) {
|
|
89
|
+
const canManage = await service.canManageDocument(args.documentId, grantedByAddress);
|
|
90
|
+
if (!canManage) {
|
|
91
|
+
throw new GraphQLError("Forbidden: You must be an admin of this document to grant permissions");
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return service.grantGroupPermission(args.documentId, args.groupId, args.permission, grantedByAddress);
|
|
95
|
+
}
|
|
96
|
+
export async function revokeGroupPermission(service, args, revokedByAddress, isGlobalAdmin) {
|
|
97
|
+
// Check authorization: must be global admin or document admin
|
|
98
|
+
if (!revokedByAddress) {
|
|
99
|
+
throw new GraphQLError("Authentication required");
|
|
100
|
+
}
|
|
101
|
+
if (!isGlobalAdmin) {
|
|
102
|
+
const canManage = await service.canManageDocument(args.documentId, revokedByAddress);
|
|
103
|
+
if (!canManage) {
|
|
104
|
+
throw new GraphQLError("Forbidden: You must be an admin of this document to revoke permissions");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
await service.revokeGroupPermission(args.documentId, args.groupId);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
export async function operationPermissions(service, args) {
|
|
111
|
+
const userPermissions = await service.getOperationUserPermissions(args.documentId, args.operationType);
|
|
112
|
+
const groupPermissions = await service.getOperationGroupPermissions(args.documentId, args.operationType);
|
|
113
|
+
return {
|
|
114
|
+
documentId: args.documentId,
|
|
115
|
+
operationType: args.operationType,
|
|
116
|
+
userPermissions,
|
|
117
|
+
groupPermissions,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export async function canExecuteOperation(service, args, userAddress) {
|
|
121
|
+
return service.canExecuteOperation(args.documentId, args.operationType, userAddress);
|
|
122
|
+
}
|
|
123
|
+
export async function grantOperationPermission(service, args, grantedByAddress, isGlobalAdmin) {
|
|
124
|
+
if (!grantedByAddress) {
|
|
125
|
+
throw new GraphQLError("Authentication required");
|
|
126
|
+
}
|
|
127
|
+
if (!isGlobalAdmin) {
|
|
128
|
+
const canManage = await service.canManageDocument(args.documentId, grantedByAddress);
|
|
129
|
+
if (!canManage) {
|
|
130
|
+
throw new GraphQLError("Forbidden: You must be an admin of this document to grant operation permissions");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return service.grantOperationPermission(args.documentId, args.operationType, args.userAddress, grantedByAddress);
|
|
134
|
+
}
|
|
135
|
+
export async function revokeOperationPermission(service, args, revokedByAddress, isGlobalAdmin) {
|
|
136
|
+
if (!revokedByAddress) {
|
|
137
|
+
throw new GraphQLError("Authentication required");
|
|
138
|
+
}
|
|
139
|
+
if (!isGlobalAdmin) {
|
|
140
|
+
const canManage = await service.canManageDocument(args.documentId, revokedByAddress);
|
|
141
|
+
if (!canManage) {
|
|
142
|
+
throw new GraphQLError("Forbidden: You must be an admin of this document to revoke operation permissions");
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
await service.revokeOperationPermission(args.documentId, args.operationType, args.userAddress);
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
export async function grantGroupOperationPermission(service, args, grantedByAddress, isGlobalAdmin) {
|
|
149
|
+
if (!grantedByAddress) {
|
|
150
|
+
throw new GraphQLError("Authentication required");
|
|
151
|
+
}
|
|
152
|
+
if (!isGlobalAdmin) {
|
|
153
|
+
const canManage = await service.canManageDocument(args.documentId, grantedByAddress);
|
|
154
|
+
if (!canManage) {
|
|
155
|
+
throw new GraphQLError("Forbidden: You must be an admin of this document to grant operation permissions");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return service.grantGroupOperationPermission(args.documentId, args.operationType, args.groupId, grantedByAddress);
|
|
159
|
+
}
|
|
160
|
+
export async function revokeGroupOperationPermission(service, args, revokedByAddress, isGlobalAdmin) {
|
|
161
|
+
if (!revokedByAddress) {
|
|
162
|
+
throw new GraphQLError("Authentication required");
|
|
163
|
+
}
|
|
164
|
+
if (!isGlobalAdmin) {
|
|
165
|
+
const canManage = await service.canManageDocument(args.documentId, revokedByAddress);
|
|
166
|
+
if (!canManage) {
|
|
167
|
+
throw new GraphQLError("Forbidden: You must be an admin of this document to revoke operation permissions");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
await service.revokeGroupOperationPermission(args.documentId, args.operationType, args.groupId);
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=resolvers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../../src/graphql/auth/resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Auth Subgraph Schema
|
|
2
|
+
# Contains all document permission and authorization related types
|
|
3
|
+
|
|
4
|
+
scalar DateTime
|
|
5
|
+
|
|
6
|
+
# Permission levels for documents
|
|
7
|
+
enum DocumentPermissionLevel {
|
|
8
|
+
# Can fetch and read the document
|
|
9
|
+
READ
|
|
10
|
+
# Can push updates and modify the document
|
|
11
|
+
WRITE
|
|
12
|
+
# Can manage document permissions and settings
|
|
13
|
+
ADMIN
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
# Document permission entry
|
|
17
|
+
type DocumentPermissionEntry {
|
|
18
|
+
documentId: String!
|
|
19
|
+
userAddress: String!
|
|
20
|
+
permission: DocumentPermissionLevel!
|
|
21
|
+
grantedBy: String!
|
|
22
|
+
createdAt: DateTime!
|
|
23
|
+
updatedAt: DateTime!
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# Group type
|
|
27
|
+
type Group {
|
|
28
|
+
id: Int!
|
|
29
|
+
name: String!
|
|
30
|
+
description: String
|
|
31
|
+
createdAt: DateTime!
|
|
32
|
+
updatedAt: DateTime!
|
|
33
|
+
members: [String!]!
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Document group permission entry
|
|
37
|
+
type DocumentGroupPermission {
|
|
38
|
+
documentId: String!
|
|
39
|
+
groupId: Int!
|
|
40
|
+
group: Group!
|
|
41
|
+
permission: DocumentPermissionLevel!
|
|
42
|
+
grantedBy: String!
|
|
43
|
+
createdAt: DateTime!
|
|
44
|
+
updatedAt: DateTime!
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
# Operation user permission entry
|
|
48
|
+
type OperationUserPermission {
|
|
49
|
+
documentId: String!
|
|
50
|
+
operationType: String!
|
|
51
|
+
userAddress: String!
|
|
52
|
+
grantedBy: String!
|
|
53
|
+
createdAt: DateTime!
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# Operation group permission entry
|
|
57
|
+
type OperationGroupPermission {
|
|
58
|
+
documentId: String!
|
|
59
|
+
operationType: String!
|
|
60
|
+
groupId: Int!
|
|
61
|
+
group: Group!
|
|
62
|
+
grantedBy: String!
|
|
63
|
+
createdAt: DateTime!
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
# Combined document access info
|
|
67
|
+
type DocumentAccessInfo {
|
|
68
|
+
documentId: String!
|
|
69
|
+
permissions: [DocumentPermissionEntry!]!
|
|
70
|
+
groupPermissions: [DocumentGroupPermission!]!
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
# Operation permissions info
|
|
74
|
+
type OperationPermissionsInfo {
|
|
75
|
+
documentId: String!
|
|
76
|
+
operationType: String!
|
|
77
|
+
userPermissions: [OperationUserPermission!]!
|
|
78
|
+
groupPermissions: [OperationGroupPermission!]!
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
type Query {
|
|
82
|
+
# Get permissions for a document
|
|
83
|
+
documentAccess(documentId: String!): DocumentAccessInfo!
|
|
84
|
+
|
|
85
|
+
# Get all documents the current user has explicit access to
|
|
86
|
+
userDocumentPermissions: [DocumentPermissionEntry!]!
|
|
87
|
+
|
|
88
|
+
# Get all groups
|
|
89
|
+
groups: [Group!]!
|
|
90
|
+
|
|
91
|
+
# Get a specific group by ID
|
|
92
|
+
group(id: Int!): Group
|
|
93
|
+
|
|
94
|
+
# Get all groups a user belongs to
|
|
95
|
+
userGroups(userAddress: String!): [Group!]!
|
|
96
|
+
|
|
97
|
+
# Get operation permissions for a document and operation type
|
|
98
|
+
operationPermissions(documentId: String!, operationType: String!): OperationPermissionsInfo!
|
|
99
|
+
|
|
100
|
+
# Check if the current user can execute a specific operation on a document
|
|
101
|
+
canExecuteOperation(documentId: String!, operationType: String!): Boolean!
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
type Mutation {
|
|
105
|
+
# Grant a user permission on a document (requires ADMIN permission or global admin)
|
|
106
|
+
grantDocumentPermission(
|
|
107
|
+
documentId: String!
|
|
108
|
+
userAddress: String!
|
|
109
|
+
permission: DocumentPermissionLevel!
|
|
110
|
+
): DocumentPermissionEntry!
|
|
111
|
+
|
|
112
|
+
# Revoke a user's permission on a document (requires ADMIN permission or global admin)
|
|
113
|
+
revokeDocumentPermission(
|
|
114
|
+
documentId: String!
|
|
115
|
+
userAddress: String!
|
|
116
|
+
): Boolean!
|
|
117
|
+
|
|
118
|
+
# --- Group Management ---
|
|
119
|
+
|
|
120
|
+
# Create a new group
|
|
121
|
+
createGroup(name: String!, description: String): Group!
|
|
122
|
+
|
|
123
|
+
# Delete a group and all its associations
|
|
124
|
+
deleteGroup(id: Int!): Boolean!
|
|
125
|
+
|
|
126
|
+
# Add a user to a group
|
|
127
|
+
addUserToGroup(userAddress: String!, groupId: Int!): Boolean!
|
|
128
|
+
|
|
129
|
+
# Remove a user from a group
|
|
130
|
+
removeUserFromGroup(userAddress: String!, groupId: Int!): Boolean!
|
|
131
|
+
|
|
132
|
+
# --- Group Document Permissions ---
|
|
133
|
+
|
|
134
|
+
# Grant a group permission on a document
|
|
135
|
+
grantGroupPermission(
|
|
136
|
+
documentId: String!
|
|
137
|
+
groupId: Int!
|
|
138
|
+
permission: DocumentPermissionLevel!
|
|
139
|
+
): DocumentGroupPermission!
|
|
140
|
+
|
|
141
|
+
# Revoke a group's permission on a document
|
|
142
|
+
revokeGroupPermission(documentId: String!, groupId: Int!): Boolean!
|
|
143
|
+
|
|
144
|
+
# --- Operation Permissions ---
|
|
145
|
+
|
|
146
|
+
# Grant a user permission to execute an operation on a document
|
|
147
|
+
grantOperationPermission(
|
|
148
|
+
documentId: String!
|
|
149
|
+
operationType: String!
|
|
150
|
+
userAddress: String!
|
|
151
|
+
): OperationUserPermission!
|
|
152
|
+
|
|
153
|
+
# Revoke a user's permission to execute an operation
|
|
154
|
+
revokeOperationPermission(
|
|
155
|
+
documentId: String!
|
|
156
|
+
operationType: String!
|
|
157
|
+
userAddress: String!
|
|
158
|
+
): Boolean!
|
|
159
|
+
|
|
160
|
+
# Grant a group permission to execute an operation on a document
|
|
161
|
+
grantGroupOperationPermission(
|
|
162
|
+
documentId: String!
|
|
163
|
+
operationType: String!
|
|
164
|
+
groupId: Int!
|
|
165
|
+
): OperationGroupPermission!
|
|
166
|
+
|
|
167
|
+
# Revoke a group's permission to execute an operation
|
|
168
|
+
revokeGroupOperationPermission(
|
|
169
|
+
documentId: String!
|
|
170
|
+
operationType: String!
|
|
171
|
+
groupId: Int!
|
|
172
|
+
): Boolean!
|
|
173
|
+
}
|