@powerhousedao/reactor-api 5.1.0-staging.0 → 5.2.0-staging.1

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.
Files changed (106) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/graphql/auth/index.d.ts +2 -0
  6. package/dist/src/graphql/auth/index.d.ts.map +1 -0
  7. package/dist/src/graphql/auth/index.js +2 -0
  8. package/dist/src/graphql/auth/index.js.map +1 -0
  9. package/dist/src/graphql/auth/resolvers.d.ts +149 -0
  10. package/dist/src/graphql/auth/resolvers.d.ts.map +1 -0
  11. package/dist/src/graphql/auth/resolvers.js +173 -0
  12. package/dist/src/graphql/auth/resolvers.js.map +1 -0
  13. package/dist/src/graphql/auth/schema.graphql +173 -0
  14. package/dist/src/graphql/auth/subgraph.d.ts +177 -0
  15. package/dist/src/graphql/auth/subgraph.d.ts.map +1 -0
  16. package/dist/src/graphql/auth/subgraph.js +340 -0
  17. package/dist/src/graphql/auth/subgraph.js.map +1 -0
  18. package/dist/src/graphql/base-subgraph.d.ts +3 -1
  19. package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
  20. package/dist/src/graphql/base-subgraph.js +2 -0
  21. package/dist/src/graphql/base-subgraph.js.map +1 -1
  22. package/dist/src/graphql/document-model-subgraph.d.ts +51 -0
  23. package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -0
  24. package/dist/src/graphql/document-model-subgraph.js +104 -0
  25. package/dist/src/graphql/document-model-subgraph.js.map +1 -0
  26. package/dist/src/graphql/drive-subgraph.d.ts.map +1 -1
  27. package/dist/src/graphql/drive-subgraph.js +51 -10
  28. package/dist/src/graphql/drive-subgraph.js.map +1 -1
  29. package/dist/src/graphql/graphql-manager.d.ts +11 -3
  30. package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
  31. package/dist/src/graphql/graphql-manager.js +72 -16
  32. package/dist/src/graphql/graphql-manager.js.map +1 -1
  33. package/dist/src/graphql/index.d.ts +1 -0
  34. package/dist/src/graphql/index.d.ts.map +1 -1
  35. package/dist/src/graphql/index.js +1 -0
  36. package/dist/src/graphql/index.js.map +1 -1
  37. package/dist/src/graphql/reactor/resolvers.d.ts +6 -1
  38. package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
  39. package/dist/src/graphql/reactor/resolvers.js +18 -2
  40. package/dist/src/graphql/reactor/resolvers.js.map +1 -1
  41. package/dist/src/graphql/reactor/schema.graphql +4 -4
  42. package/dist/src/graphql/reactor/subgraph.d.ts +34 -0
  43. package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
  44. package/dist/src/graphql/reactor/subgraph.js +258 -21
  45. package/dist/src/graphql/reactor/subgraph.js.map +1 -1
  46. package/dist/src/graphql/reactor/validation.d.ts +62 -62
  47. package/dist/src/graphql/system/system-subgraph.d.ts.map +1 -1
  48. package/dist/src/graphql/types.d.ts +4 -1
  49. package/dist/src/graphql/types.d.ts.map +1 -1
  50. package/dist/src/graphql/utils.js +1 -1
  51. package/dist/src/graphql/utils.js.map +1 -1
  52. package/dist/src/migrations/001_create_document_permissions.d.ts +4 -0
  53. package/dist/src/migrations/001_create_document_permissions.d.ts.map +1 -0
  54. package/dist/src/migrations/001_create_document_permissions.js +91 -0
  55. package/dist/src/migrations/001_create_document_permissions.js.map +1 -0
  56. package/dist/src/migrations/index.d.ts +10 -0
  57. package/dist/src/migrations/index.d.ts.map +1 -0
  58. package/dist/src/migrations/index.js +59 -0
  59. package/dist/src/migrations/index.js.map +1 -0
  60. package/dist/src/packages/util.js +1 -1
  61. package/dist/src/packages/util.js.map +1 -1
  62. package/dist/src/server.d.ts +17 -4
  63. package/dist/src/server.d.ts.map +1 -1
  64. package/dist/src/server.js +45 -16
  65. package/dist/src/server.js.map +1 -1
  66. package/dist/src/services/auth.service.d.ts +1 -0
  67. package/dist/src/services/auth.service.d.ts.map +1 -1
  68. package/dist/src/services/auth.service.js +30 -16
  69. package/dist/src/services/auth.service.js.map +1 -1
  70. package/dist/src/services/document-permission.service.d.ts +201 -0
  71. package/dist/src/services/document-permission.service.d.ts.map +1 -0
  72. package/dist/src/services/document-permission.service.js +636 -0
  73. package/dist/src/services/document-permission.service.js.map +1 -0
  74. package/dist/src/utils/create-schema.d.ts +4 -3
  75. package/dist/src/utils/create-schema.d.ts.map +1 -1
  76. package/dist/src/utils/create-schema.js +100 -3
  77. package/dist/src/utils/create-schema.js.map +1 -1
  78. package/dist/src/utils/db.d.ts +65 -1
  79. package/dist/src/utils/db.d.ts.map +1 -1
  80. package/dist/src/utils/db.js.map +1 -1
  81. package/dist/test/document-permission.service.test.d.ts +2 -0
  82. package/dist/test/document-permission.service.test.d.ts.map +1 -0
  83. package/dist/test/document-permission.service.test.js +480 -0
  84. package/dist/test/document-permission.service.test.js.map +1 -0
  85. package/dist/test/drive-subgraph-permissions.test.d.ts +2 -0
  86. package/dist/test/drive-subgraph-permissions.test.d.ts.map +1 -0
  87. package/dist/test/drive-subgraph-permissions.test.js +195 -0
  88. package/dist/test/drive-subgraph-permissions.test.js.map +1 -0
  89. package/dist/test/identity-integration.test.d.ts +2 -0
  90. package/dist/test/identity-integration.test.d.ts.map +1 -0
  91. package/dist/test/identity-integration.test.js +349 -0
  92. package/dist/test/identity-integration.test.js.map +1 -0
  93. package/dist/test/permissions-integration.test.d.ts +2 -0
  94. package/dist/test/permissions-integration.test.d.ts.map +1 -0
  95. package/dist/test/permissions-integration.test.js +421 -0
  96. package/dist/test/permissions-integration.test.js.map +1 -0
  97. package/dist/test/reactor-subgraph-permissions.test.d.ts +2 -0
  98. package/dist/test/reactor-subgraph-permissions.test.d.ts.map +1 -0
  99. package/dist/test/reactor-subgraph-permissions.test.js +400 -0
  100. package/dist/test/reactor-subgraph-permissions.test.js.map +1 -0
  101. package/dist/test/two-reactor-gql-sync.test.js +11 -9
  102. package/dist/test/two-reactor-gql-sync.test.js.map +1 -1
  103. package/dist/test/utils/gql-resolver-bridge.js +4 -4
  104. package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
  105. package/dist/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +9 -8
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ 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";
10
11
  export * from "./src/types.js";
@@ -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,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ 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";
10
11
  export * from "./src/types.js";
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,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AuthSubgraph } from "./subgraph.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { AuthSubgraph } from "./subgraph.js";
2
+ //# sourceMappingURL=index.js.map
@@ -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
+ }