@brightchain/brightchain-api-lib 0.2.0 → 0.5.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.
- package/package.json +2 -2
- package/src/index.d.ts +11 -79
- package/src/index.d.ts.map +1 -1
- package/src/index.js +12 -82
- package/src/index.js.map +1 -1
- package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts +1 -2
- package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts.map +1 -1
- package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js +1 -1
- package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js.map +1 -1
- package/src/lib/application-base.d.ts +7 -6
- package/src/lib/application-base.d.ts.map +1 -1
- package/src/lib/application-base.js.map +1 -1
- package/src/lib/application.d.ts +7 -2
- package/src/lib/application.d.ts.map +1 -1
- package/src/lib/application.js +30 -0
- package/src/lib/application.js.map +1 -1
- package/src/lib/availability/discoveryProtocol.d.ts +0 -1
- package/src/lib/availability/discoveryProtocol.d.ts.map +1 -1
- package/src/lib/availability/discoveryProtocol.js +2 -4
- package/src/lib/availability/discoveryProtocol.js.map +1 -1
- package/src/lib/availability/gossipService.d.ts +0 -1
- package/src/lib/availability/gossipService.d.ts.map +1 -1
- package/src/lib/availability/gossipService.js +2 -4
- package/src/lib/availability/gossipService.js.map +1 -1
- package/src/lib/availability/heartbeatMonitor.d.ts +0 -1
- package/src/lib/availability/heartbeatMonitor.d.ts.map +1 -1
- package/src/lib/availability/heartbeatMonitor.js +2 -4
- package/src/lib/availability/heartbeatMonitor.js.map +1 -1
- package/src/lib/controllers/api/blocks.d.ts +246 -0
- package/src/lib/controllers/api/blocks.d.ts.map +1 -0
- package/src/lib/controllers/api/blocks.js +414 -0
- package/src/lib/controllers/api/blocks.js.map +1 -0
- package/src/lib/controllers/api/cbl.d.ts +88 -0
- package/src/lib/controllers/api/cbl.d.ts.map +1 -0
- package/src/lib/controllers/api/cbl.js +222 -0
- package/src/lib/controllers/api/cbl.js.map +1 -0
- package/src/lib/controllers/api/energy.d.ts +18 -0
- package/src/lib/controllers/api/energy.d.ts.map +1 -0
- package/src/lib/controllers/api/energy.js +96 -0
- package/src/lib/controllers/api/energy.js.map +1 -0
- package/src/lib/controllers/api/i18n.d.ts +19 -0
- package/src/lib/controllers/api/i18n.d.ts.map +1 -0
- package/src/lib/controllers/api/i18n.js +27 -0
- package/src/lib/controllers/api/i18n.js.map +1 -0
- package/src/lib/controllers/api/index.d.ts +9 -0
- package/src/lib/controllers/api/index.d.ts.map +1 -0
- package/src/lib/controllers/api/index.js +12 -0
- package/src/lib/controllers/api/index.js.map +1 -0
- package/src/lib/controllers/api/members.d.ts +19 -0
- package/src/lib/controllers/api/members.d.ts.map +1 -0
- package/src/lib/controllers/api/members.js +27 -0
- package/src/lib/controllers/api/members.js.map +1 -0
- package/src/lib/controllers/api/quorum.d.ts +369 -0
- package/src/lib/controllers/api/quorum.d.ts.map +1 -0
- package/src/lib/controllers/api/quorum.js +592 -0
- package/src/lib/controllers/api/quorum.js.map +1 -0
- package/src/lib/controllers/api/sessions.d.ts +21 -0
- package/src/lib/controllers/api/sessions.d.ts.map +1 -0
- package/src/lib/controllers/api/sessions.js +32 -0
- package/src/lib/controllers/api/sessions.js.map +1 -0
- package/src/lib/controllers/api/user.d.ts +20 -0
- package/src/lib/controllers/api/user.d.ts.map +1 -0
- package/src/lib/controllers/api/user.js +109 -0
- package/src/lib/controllers/api/user.js.map +1 -0
- package/src/lib/controllers/base.d.ts +6 -48
- package/src/lib/controllers/base.d.ts.map +1 -1
- package/src/lib/controllers/base.js +2 -225
- package/src/lib/controllers/base.js.map +1 -1
- package/src/lib/controllers/index.d.ts +3 -0
- package/src/lib/controllers/index.d.ts.map +1 -0
- package/src/lib/controllers/index.js +6 -0
- package/src/lib/controllers/index.js.map +1 -0
- package/src/lib/datastore/block-document-store.d.ts.map +1 -1
- package/src/lib/datastore/block-document-store.js +22 -18
- package/src/lib/datastore/block-document-store.js.map +1 -1
- package/src/lib/datastore/document-store.d.ts +1 -2
- package/src/lib/datastore/document-store.d.ts.map +1 -1
- package/src/lib/datastore/index.d.ts +6 -0
- package/src/lib/datastore/index.d.ts.map +1 -0
- package/src/lib/datastore/index.js +8 -0
- package/src/lib/datastore/index.js.map +1 -0
- package/src/lib/datastore/memory-document-store.d.ts.map +1 -1
- package/src/lib/datastore/memory-document-store.js.map +1 -1
- package/src/lib/documents/base.d.ts +3 -2
- package/src/lib/documents/base.d.ts.map +1 -1
- package/src/lib/enumerations/index.d.ts +5 -0
- package/src/lib/enumerations/index.d.ts.map +1 -0
- package/src/lib/enumerations/index.js +8 -0
- package/src/lib/enumerations/index.js.map +1 -0
- package/src/lib/enumerations/websocketMessageType.d.ts +44 -0
- package/src/lib/enumerations/websocketMessageType.d.ts.map +1 -0
- package/src/lib/enumerations/websocketMessageType.js +47 -0
- package/src/lib/enumerations/websocketMessageType.js.map +1 -0
- package/src/lib/environment.d.ts +4 -2
- package/src/lib/environment.d.ts.map +1 -1
- package/src/lib/environment.js.map +1 -1
- package/src/lib/errors/index.d.ts +20 -0
- package/src/lib/errors/index.d.ts.map +1 -0
- package/src/lib/errors/index.js +23 -0
- package/src/lib/errors/index.js.map +1 -0
- package/src/lib/interfaces/application.d.ts +19 -7
- package/src/lib/interfaces/application.d.ts.map +1 -1
- package/src/lib/interfaces/auth-credentials.d.ts +6 -0
- package/src/lib/interfaces/auth-credentials.d.ts.map +1 -0
- package/src/lib/interfaces/{server-init-result.js → auth-credentials.js} +1 -1
- package/src/lib/interfaces/auth-credentials.js.map +1 -0
- package/src/lib/interfaces/auth-token.d.ts +6 -0
- package/src/lib/interfaces/auth-token.d.ts.map +1 -0
- package/src/lib/interfaces/{ecies-consts.js → auth-token.js} +1 -1
- package/src/lib/interfaces/auth-token.js.map +1 -0
- package/src/lib/interfaces/backend-objects/index.d.ts +5 -0
- package/src/lib/interfaces/backend-objects/index.d.ts.map +1 -0
- package/src/lib/interfaces/backend-objects/index.js +8 -0
- package/src/lib/interfaces/backend-objects/index.js.map +1 -0
- package/src/lib/interfaces/bases/index.d.ts +5 -0
- package/src/lib/interfaces/bases/index.d.ts.map +1 -0
- package/src/lib/interfaces/bases/index.js +8 -0
- package/src/lib/interfaces/bases/index.js.map +1 -0
- package/src/lib/interfaces/blockRequest.d.ts +40 -0
- package/src/lib/interfaces/blockRequest.d.ts.map +1 -0
- package/src/lib/interfaces/{mongo-errors.js → blockRequest.js} +1 -1
- package/src/lib/interfaces/blockRequest.js.map +1 -0
- package/src/lib/interfaces/blockResponses.d.ts +32 -0
- package/src/lib/interfaces/blockResponses.d.ts.map +1 -0
- package/src/lib/interfaces/blockResponses.js +3 -0
- package/src/lib/interfaces/blockResponses.js.map +1 -0
- package/src/lib/interfaces/blockService.d.ts +16 -0
- package/src/lib/interfaces/blockService.d.ts.map +1 -0
- package/src/lib/interfaces/{pbkdf2-result.js → blockService.js} +1 -1
- package/src/lib/interfaces/blockService.js.map +1 -0
- package/src/lib/interfaces/blockStore.d.ts +7 -0
- package/src/lib/interfaces/blockStore.d.ts.map +1 -0
- package/src/lib/interfaces/blockStore.js +3 -0
- package/src/lib/interfaces/blockStore.js.map +1 -0
- package/src/lib/interfaces/blocksHandlers.d.ts +7 -0
- package/src/lib/interfaces/blocksHandlers.d.ts.map +1 -0
- package/src/lib/interfaces/blocksHandlers.js +3 -0
- package/src/lib/interfaces/blocksHandlers.js.map +1 -0
- package/src/lib/interfaces/cblHandlers.d.ts +7 -0
- package/src/lib/interfaces/cblHandlers.d.ts.map +1 -0
- package/src/lib/interfaces/cblHandlers.js +3 -0
- package/src/lib/interfaces/cblHandlers.js.map +1 -0
- package/src/lib/interfaces/environment.d.ts +4 -2
- package/src/lib/interfaces/environment.d.ts.map +1 -1
- package/src/lib/interfaces/index.d.ts +33 -0
- package/src/lib/interfaces/index.d.ts.map +1 -0
- package/src/lib/interfaces/index.js +36 -0
- package/src/lib/interfaces/index.js.map +1 -0
- package/src/lib/interfaces/member/index.d.ts +3 -0
- package/src/lib/interfaces/member/index.d.ts.map +1 -0
- package/src/lib/interfaces/member/index.js +6 -0
- package/src/lib/interfaces/member/index.js.map +1 -0
- package/src/lib/interfaces/member/operational.d.ts +1 -2
- package/src/lib/interfaces/member/operational.d.ts.map +1 -1
- package/src/lib/interfaces/membersResponse.d.ts +12 -0
- package/src/lib/interfaces/membersResponse.d.ts.map +1 -0
- package/src/lib/interfaces/membersResponse.js +3 -0
- package/src/lib/interfaces/membersResponse.js.map +1 -0
- package/src/lib/interfaces/responses/index.d.ts +0 -1
- package/src/lib/interfaces/responses/index.d.ts.map +1 -1
- package/src/lib/interfaces/status-code-response.d.ts +1 -1
- package/src/lib/interfaces/status-code-response.d.ts.map +1 -1
- package/src/lib/interfaces/token-payload.d.ts +9 -0
- package/src/lib/interfaces/token-payload.d.ts.map +1 -0
- package/src/lib/interfaces/token-payload.js +3 -0
- package/src/lib/interfaces/token-payload.js.map +1 -0
- package/src/lib/interfaces/websocketMessages.d.ts +222 -0
- package/src/lib/interfaces/websocketMessages.d.ts.map +1 -0
- package/src/lib/interfaces/websocketMessages.js +6 -0
- package/src/lib/interfaces/websocketMessages.js.map +1 -0
- package/src/lib/routers/api.d.ts +9 -4
- package/src/lib/routers/api.d.ts.map +1 -1
- package/src/lib/routers/api.js +18 -6
- package/src/lib/routers/api.js.map +1 -1
- package/src/lib/routers/app.d.ts +3 -2
- package/src/lib/routers/app.d.ts.map +1 -1
- package/src/lib/routers/app.js +5 -4
- package/src/lib/routers/app.js.map +1 -1
- package/src/lib/routers/base.d.ts +6 -4
- package/src/lib/routers/base.d.ts.map +1 -1
- package/src/lib/routers/base.js.map +1 -1
- package/src/lib/routers/index.d.ts +5 -0
- package/src/lib/routers/index.d.ts.map +1 -0
- package/src/lib/routers/index.js +8 -0
- package/src/lib/routers/index.js.map +1 -0
- package/src/lib/routers/messageRouter.js +2 -2
- package/src/lib/routers/messageRouter.js.map +1 -1
- package/src/lib/services/auth.d.ts +23 -0
- package/src/lib/services/auth.d.ts.map +1 -0
- package/src/lib/services/auth.js +93 -0
- package/src/lib/services/auth.js.map +1 -0
- package/src/lib/services/base.d.ts +12 -0
- package/src/lib/services/base.d.ts.map +1 -0
- package/src/lib/services/base.js +15 -0
- package/src/lib/services/base.js.map +1 -0
- package/src/lib/services/blockServiceFactory.d.ts +29 -0
- package/src/lib/services/blockServiceFactory.d.ts.map +1 -0
- package/src/lib/services/blockServiceFactory.js +42 -0
- package/src/lib/services/blockServiceFactory.js.map +1 -0
- package/src/lib/services/blockStore.d.ts +52 -0
- package/src/lib/services/blockStore.d.ts.map +1 -0
- package/src/lib/services/blockStore.js +105 -0
- package/src/lib/services/blockStore.js.map +1 -0
- package/src/lib/services/blocks.d.ts +26 -0
- package/src/lib/services/blocks.d.ts.map +1 -0
- package/src/lib/services/blocks.js +35 -0
- package/src/lib/services/blocks.js.map +1 -0
- package/src/lib/services/diskQuorumService.d.ts.map +1 -1
- package/src/lib/services/diskQuorumService.js.map +1 -1
- package/src/lib/services/email.d.ts +4 -3
- package/src/lib/services/email.d.ts.map +1 -1
- package/src/lib/services/email.js +4 -3
- package/src/lib/services/email.js.map +1 -1
- package/src/lib/services/index.d.ts +21 -0
- package/src/lib/services/index.d.ts.map +1 -0
- package/src/lib/services/index.js +26 -0
- package/src/lib/services/index.js.map +1 -0
- package/src/lib/services/messagePassingService.d.ts.map +1 -1
- package/src/lib/services/messagePassingService.js +1 -1
- package/src/lib/services/messagePassingService.js.map +1 -1
- package/src/lib/services/quorum.d.ts +44 -0
- package/src/lib/services/quorum.d.ts.map +1 -0
- package/src/lib/services/quorum.js +83 -0
- package/src/lib/services/quorum.js.map +1 -0
- package/src/lib/services/requestUser.d.ts +18 -0
- package/src/lib/services/requestUser.d.ts.map +1 -0
- package/src/lib/services/requestUser.js +22 -0
- package/src/lib/services/requestUser.js.map +1 -0
- package/src/lib/services/role.d.ts +19 -0
- package/src/lib/services/role.d.ts.map +1 -0
- package/src/lib/services/role.js +18 -0
- package/src/lib/services/role.js.map +1 -0
- package/src/lib/services/secureKeyStorage.d.ts +15 -0
- package/src/lib/services/secureKeyStorage.d.ts.map +1 -0
- package/src/lib/services/secureKeyStorage.js +46 -0
- package/src/lib/services/secureKeyStorage.js.map +1 -0
- package/src/lib/services/webSocketMessageServer.js +1 -1
- package/src/lib/services/webSocketMessageServer.js.map +1 -1
- package/src/lib/services/websocketHandler.d.ts +95 -0
- package/src/lib/services/websocketHandler.d.ts.map +1 -0
- package/src/lib/services/websocketHandler.js +269 -0
- package/src/lib/services/websocketHandler.js.map +1 -0
- package/src/lib/shared-types.d.ts +8 -34
- package/src/lib/shared-types.d.ts.map +1 -1
- package/src/lib/shared-types.js +0 -3
- package/src/lib/shared-types.js.map +1 -1
- package/src/lib/stores/availabilityAwareBlockStore.d.ts +45 -1
- package/src/lib/stores/availabilityAwareBlockStore.d.ts.map +1 -1
- package/src/lib/stores/availabilityAwareBlockStore.js +109 -0
- package/src/lib/stores/availabilityAwareBlockStore.js.map +1 -1
- package/src/lib/stores/diskBlockAsyncStore.d.ts +72 -1
- package/src/lib/stores/diskBlockAsyncStore.d.ts.map +1 -1
- package/src/lib/stores/diskBlockAsyncStore.js +300 -0
- package/src/lib/stores/diskBlockAsyncStore.js.map +1 -1
- package/src/lib/stores/diskBlockMetadataStore.d.ts.map +1 -1
- package/src/lib/stores/diskBlockMetadataStore.js +1 -2
- package/src/lib/stores/diskBlockMetadataStore.js.map +1 -1
- package/src/lib/transforms/index.d.ts +4 -0
- package/src/lib/transforms/index.d.ts.map +1 -0
- package/src/lib/transforms/index.js +7 -0
- package/src/lib/transforms/index.js.map +1 -0
- package/src/lib/utils/errorResponse.d.ts +180 -0
- package/src/lib/utils/errorResponse.d.ts.map +1 -0
- package/src/lib/utils/errorResponse.js +313 -0
- package/src/lib/utils/errorResponse.js.map +1 -0
- package/src/lib/controllers/user.d.ts +0 -9
- package/src/lib/controllers/user.d.ts.map +0 -1
- package/src/lib/controllers/user.js +0 -21
- package/src/lib/controllers/user.js.map +0 -1
- package/src/lib/interfaces/api-express-validation-error-response.d.ts +0 -7
- package/src/lib/interfaces/api-express-validation-error-response.d.ts.map +0 -1
- package/src/lib/interfaces/api-express-validation-error-response.js +0 -3
- package/src/lib/interfaces/api-express-validation-error-response.js.map +0 -1
- package/src/lib/interfaces/api-mongo-validation-error-response.d.ts +0 -6
- package/src/lib/interfaces/api-mongo-validation-error-response.d.ts.map +0 -1
- package/src/lib/interfaces/api-mongo-validation-error-response.js +0 -3
- package/src/lib/interfaces/api-mongo-validation-error-response.js.map +0 -1
- package/src/lib/interfaces/authenticated-cipher.d.ts +0 -10
- package/src/lib/interfaces/authenticated-cipher.d.ts.map +0 -1
- package/src/lib/interfaces/authenticated-cipher.js +0 -3
- package/src/lib/interfaces/authenticated-cipher.js.map +0 -1
- package/src/lib/interfaces/authenticated-decipher.d.ts +0 -9
- package/src/lib/interfaces/authenticated-decipher.d.ts.map +0 -1
- package/src/lib/interfaces/authenticated-decipher.js +0 -3
- package/src/lib/interfaces/authenticated-decipher.js.map +0 -1
- package/src/lib/interfaces/ecies-consts.d.ts +0 -88
- package/src/lib/interfaces/ecies-consts.d.ts.map +0 -1
- package/src/lib/interfaces/ecies-consts.js.map +0 -1
- package/src/lib/interfaces/mongo-errors.d.ts +0 -9
- package/src/lib/interfaces/mongo-errors.d.ts.map +0 -1
- package/src/lib/interfaces/mongo-errors.js.map +0 -1
- package/src/lib/interfaces/pbkdf2-result.d.ts +0 -6
- package/src/lib/interfaces/pbkdf2-result.d.ts.map +0 -1
- package/src/lib/interfaces/pbkdf2-result.js.map +0 -1
- package/src/lib/interfaces/server-init-result.d.ts +0 -34
- package/src/lib/interfaces/server-init-result.d.ts.map +0 -1
- package/src/lib/interfaces/server-init-result.js.map +0 -1
- package/src/lib/services/keyWrapping.d.ts +0 -61
- package/src/lib/services/keyWrapping.d.ts.map +0 -1
- package/src/lib/services/keyWrapping.js +0 -297
- package/src/lib/services/keyWrapping.js.map +0 -1
- package/src/lib/services/pbkdf2.d.ts +0 -6
- package/src/lib/services/pbkdf2.d.ts.map +0 -1
- package/src/lib/services/pbkdf2.js +0 -31
- package/src/lib/services/pbkdf2.js.map +0 -1
- package/src/lib/services/user.d.ts +0 -10
- package/src/lib/services/user.d.ts.map +0 -1
- package/src/lib/services/user.js +0 -11
- package/src/lib/services/user.js.map +0 -1
- /package/{README.md → brightchain-api-lib/README.md} +0 -0
|
@@ -0,0 +1,592 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QuorumController = exports.QuorumErrorCode = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
const brightchain_lib_1 = require("@brightchain/brightchain-lib");
|
|
6
|
+
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
7
|
+
const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
|
|
8
|
+
const quorum_1 = require("../../services/quorum");
|
|
9
|
+
const errorResponse_1 = require("../../utils/errorResponse");
|
|
10
|
+
const base_1 = require("../base");
|
|
11
|
+
/**
|
|
12
|
+
* Error codes for quorum API operations
|
|
13
|
+
* @deprecated Use ErrorCode from '../../utils/errorResponse' instead
|
|
14
|
+
*/
|
|
15
|
+
var QuorumErrorCode;
|
|
16
|
+
(function (QuorumErrorCode) {
|
|
17
|
+
QuorumErrorCode["MEMBER_NOT_FOUND"] = "MEMBER_NOT_FOUND";
|
|
18
|
+
QuorumErrorCode["DOCUMENT_NOT_FOUND"] = "DOCUMENT_NOT_FOUND";
|
|
19
|
+
QuorumErrorCode["INSUFFICIENT_SHARES"] = "INSUFFICIENT_SHARES";
|
|
20
|
+
QuorumErrorCode["SHARE_DECRYPTION_FAILED"] = "SHARE_DECRYPTION_FAILED";
|
|
21
|
+
QuorumErrorCode["INVALID_MEMBER_COUNT"] = "INVALID_MEMBER_COUNT";
|
|
22
|
+
QuorumErrorCode["INVALID_THRESHOLD"] = "INVALID_THRESHOLD";
|
|
23
|
+
QuorumErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
24
|
+
QuorumErrorCode["UNAUTHORIZED"] = "UNAUTHORIZED";
|
|
25
|
+
QuorumErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
26
|
+
})(QuorumErrorCode || (exports.QuorumErrorCode = QuorumErrorCode = {}));
|
|
27
|
+
/**
|
|
28
|
+
* Serialize a quorum member for API response
|
|
29
|
+
*/
|
|
30
|
+
function serializeMember(member) {
|
|
31
|
+
return {
|
|
32
|
+
id: member.id,
|
|
33
|
+
publicKey: Buffer.from(member.publicKey).toString('hex'),
|
|
34
|
+
metadata: member.metadata,
|
|
35
|
+
isActive: member.isActive,
|
|
36
|
+
createdAt: member.createdAt.toISOString(),
|
|
37
|
+
updatedAt: member.updatedAt.toISOString(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Controller for quorum operations including member management
|
|
42
|
+
* and document sealing/unsealing.
|
|
43
|
+
*
|
|
44
|
+
* Provides REST API endpoints for managing quorum members and performing
|
|
45
|
+
* secure multi-party document operations using Shamir's Secret Sharing.
|
|
46
|
+
*
|
|
47
|
+
* ## Endpoints
|
|
48
|
+
*
|
|
49
|
+
* ### Member Management
|
|
50
|
+
*
|
|
51
|
+
* #### POST /api/quorum/members
|
|
52
|
+
* Add a new member to the quorum with generated cryptographic keys.
|
|
53
|
+
*
|
|
54
|
+
* **Request Body:**
|
|
55
|
+
* - `name` (string, required): Member's display name
|
|
56
|
+
* - `email` (string, optional): Member's email address
|
|
57
|
+
* - `role` (string, optional): Member's role in the quorum
|
|
58
|
+
*
|
|
59
|
+
* **Response:** Member details and mnemonic for key recovery
|
|
60
|
+
*
|
|
61
|
+
* #### GET /api/quorum/members
|
|
62
|
+
* List all active quorum members.
|
|
63
|
+
*
|
|
64
|
+
* **Response:** Array of member objects with public keys and metadata
|
|
65
|
+
*
|
|
66
|
+
* #### DELETE /api/quorum/members/:memberId
|
|
67
|
+
* Remove a member from the quorum (deactivate).
|
|
68
|
+
*
|
|
69
|
+
* **Parameters:**
|
|
70
|
+
* - `memberId` (string, required): Member's unique identifier
|
|
71
|
+
*
|
|
72
|
+
* **Response:** Success confirmation
|
|
73
|
+
*
|
|
74
|
+
* ### Document Operations
|
|
75
|
+
*
|
|
76
|
+
* #### POST /api/quorum/documents/seal
|
|
77
|
+
* Seal a document using Shamir's Secret Sharing.
|
|
78
|
+
*
|
|
79
|
+
* **Request Body:**
|
|
80
|
+
* - `document` (any, required): Document to seal (JSON-serializable)
|
|
81
|
+
* - `memberIds` (string[], required): Array of member IDs (minimum 2)
|
|
82
|
+
* - `sharesRequired` (number, optional): Threshold for unsealing (default: all members)
|
|
83
|
+
*
|
|
84
|
+
* **Response:** Document ID and sealing metadata
|
|
85
|
+
*
|
|
86
|
+
* #### POST /api/quorum/documents/:documentId/unseal
|
|
87
|
+
* Unseal a document using member shares.
|
|
88
|
+
*
|
|
89
|
+
* **Parameters:**
|
|
90
|
+
* - `documentId` (string, required): Document's unique identifier
|
|
91
|
+
*
|
|
92
|
+
* **Request Body:**
|
|
93
|
+
* - `memberIds` (string[], required): Array of member IDs providing shares
|
|
94
|
+
*
|
|
95
|
+
* **Response:** Original document content
|
|
96
|
+
*
|
|
97
|
+
* #### GET /api/quorum/documents/:documentId
|
|
98
|
+
* Get metadata for a sealed document.
|
|
99
|
+
*
|
|
100
|
+
* **Parameters:**
|
|
101
|
+
* - `documentId` (string, required): Document's unique identifier
|
|
102
|
+
*
|
|
103
|
+
* **Response:** Document metadata (member IDs, threshold, creation date)
|
|
104
|
+
*
|
|
105
|
+
* #### GET /api/quorum/documents/:documentId/can-unlock
|
|
106
|
+
* Check if a set of members can unlock a document.
|
|
107
|
+
*
|
|
108
|
+
* **Parameters:**
|
|
109
|
+
* - `documentId` (string, required): Document's unique identifier
|
|
110
|
+
*
|
|
111
|
+
* **Query Parameters:**
|
|
112
|
+
* - `memberIds` (string, required): Comma-separated list of member IDs
|
|
113
|
+
*
|
|
114
|
+
* **Response:** Unlock status and share count information
|
|
115
|
+
*
|
|
116
|
+
* @requirements 7.1, 7.2, 7.3, 7.4, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 10.1, 10.2, 10.3, 10.4, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7
|
|
117
|
+
*/
|
|
118
|
+
class QuorumController extends base_1.BaseController {
|
|
119
|
+
constructor(application) {
|
|
120
|
+
super(application);
|
|
121
|
+
// === Member Management Handlers ===
|
|
122
|
+
/**
|
|
123
|
+
* POST /api/quorum/members
|
|
124
|
+
* Add a new member to the quorum with generated cryptographic keys.
|
|
125
|
+
*
|
|
126
|
+
* Creates a new member with ECIES key pair and adds them to the quorum.
|
|
127
|
+
* The mnemonic phrase is returned for key recovery - it should be stored
|
|
128
|
+
* securely by the user as it cannot be retrieved later.
|
|
129
|
+
*
|
|
130
|
+
* @param req - Request containing member name and optional metadata
|
|
131
|
+
* @returns Member details and mnemonic on success
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```json
|
|
135
|
+
* // Request
|
|
136
|
+
* POST /api/quorum/members
|
|
137
|
+
* {
|
|
138
|
+
* "name": "Alice",
|
|
139
|
+
* "email": "alice@example.com",
|
|
140
|
+
* "role": "admin"
|
|
141
|
+
* }
|
|
142
|
+
*
|
|
143
|
+
* // Response
|
|
144
|
+
* {
|
|
145
|
+
* "message": "Member added successfully",
|
|
146
|
+
* "member": {
|
|
147
|
+
* "id": "abc123...",
|
|
148
|
+
* "publicKey": "04...",
|
|
149
|
+
* "metadata": { "name": "Alice", "email": "alice@example.com", "role": "admin" },
|
|
150
|
+
* "isActive": true,
|
|
151
|
+
* "createdAt": "2025-01-16T10:00:00Z",
|
|
152
|
+
* "updatedAt": "2025-01-16T10:00:00Z"
|
|
153
|
+
* },
|
|
154
|
+
* "mnemonic": "word1 word2 word3..."
|
|
155
|
+
* }
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
this.handleAddMember = async (req) => {
|
|
159
|
+
try {
|
|
160
|
+
const { name, email, role } = req.body;
|
|
161
|
+
// Validate required fields
|
|
162
|
+
if (!name) {
|
|
163
|
+
return (0, errorResponse_1.validationError)('Missing required field: name');
|
|
164
|
+
}
|
|
165
|
+
// Create a new member with generated keys
|
|
166
|
+
const eciesService = brightchain_lib_1.ServiceProvider.getInstance().eciesService;
|
|
167
|
+
const emailString = email
|
|
168
|
+
? new ecies_lib_1.EmailString(email)
|
|
169
|
+
: new ecies_lib_1.EmailString(`${name.toLowerCase().replace(/\s+/g, '.')}@placeholder.local`);
|
|
170
|
+
const memberWithMnemonic = ecies_lib_1.Member.newMember(eciesService, ecies_lib_1.MemberType.User, name, emailString);
|
|
171
|
+
const metadata = {
|
|
172
|
+
name,
|
|
173
|
+
email,
|
|
174
|
+
role,
|
|
175
|
+
};
|
|
176
|
+
const quorumService = this.quorumServiceWrapper.getService();
|
|
177
|
+
const quorumMember = await quorumService.addMember(memberWithMnemonic.member, metadata);
|
|
178
|
+
return {
|
|
179
|
+
statusCode: 201,
|
|
180
|
+
response: {
|
|
181
|
+
message: 'Member added successfully',
|
|
182
|
+
member: serializeMember(quorumMember),
|
|
183
|
+
mnemonic: memberWithMnemonic.mnemonic.value ?? '',
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
catch (_error) {
|
|
188
|
+
if (_error instanceof brightchain_lib_1.QuorumError) {
|
|
189
|
+
return (0, errorResponse_1.mapQuorumError)(_error);
|
|
190
|
+
}
|
|
191
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* GET /api/quorum/members
|
|
196
|
+
* List all active quorum members.
|
|
197
|
+
*
|
|
198
|
+
* Returns all members that are currently active in the quorum.
|
|
199
|
+
* Inactive (removed) members are not included in the response.
|
|
200
|
+
*
|
|
201
|
+
* @param _req - Request (no parameters required)
|
|
202
|
+
* @returns Array of member objects on success
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```json
|
|
206
|
+
* // Request
|
|
207
|
+
* GET /api/quorum/members
|
|
208
|
+
*
|
|
209
|
+
* // Response
|
|
210
|
+
* {
|
|
211
|
+
* "message": "Members retrieved successfully",
|
|
212
|
+
* "members": [
|
|
213
|
+
* {
|
|
214
|
+
* "id": "abc123...",
|
|
215
|
+
* "publicKey": "04...",
|
|
216
|
+
* "metadata": { "name": "Alice", "role": "admin" },
|
|
217
|
+
* "isActive": true,
|
|
218
|
+
* "createdAt": "2025-01-16T10:00:00Z",
|
|
219
|
+
* "updatedAt": "2025-01-16T10:00:00Z"
|
|
220
|
+
* }
|
|
221
|
+
* ]
|
|
222
|
+
* }
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
225
|
+
this.handleListMembers = async (_req) => {
|
|
226
|
+
try {
|
|
227
|
+
const quorumService = this.quorumServiceWrapper.getService();
|
|
228
|
+
const members = await quorumService.listMembers();
|
|
229
|
+
return {
|
|
230
|
+
statusCode: 200,
|
|
231
|
+
response: {
|
|
232
|
+
message: 'Members retrieved successfully',
|
|
233
|
+
members: members.map(serializeMember),
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
catch (_error) {
|
|
238
|
+
if (_error instanceof brightchain_lib_1.QuorumError) {
|
|
239
|
+
return (0, errorResponse_1.mapQuorumError)(_error);
|
|
240
|
+
}
|
|
241
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* DELETE /api/quorum/members/:memberId
|
|
246
|
+
* Remove a member from the quorum (deactivate).
|
|
247
|
+
*
|
|
248
|
+
* Marks the member as inactive. The member's access to existing documents
|
|
249
|
+
* they are part of is preserved, but they cannot be added to new documents.
|
|
250
|
+
*
|
|
251
|
+
* @param req - Request containing the member ID parameter
|
|
252
|
+
* @returns Success confirmation on success, or 404 if not found
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```json
|
|
256
|
+
* // Request
|
|
257
|
+
* DELETE /api/quorum/members/abc123...
|
|
258
|
+
*
|
|
259
|
+
* // Response
|
|
260
|
+
* {
|
|
261
|
+
* "message": "Member removed successfully",
|
|
262
|
+
* "success": true,
|
|
263
|
+
* "memberId": "abc123..."
|
|
264
|
+
* }
|
|
265
|
+
* ```
|
|
266
|
+
*/
|
|
267
|
+
this.handleRemoveMember = async (req) => {
|
|
268
|
+
try {
|
|
269
|
+
const { memberId } = req.params;
|
|
270
|
+
if (!memberId) {
|
|
271
|
+
return (0, errorResponse_1.validationError)('Missing required parameter: memberId');
|
|
272
|
+
}
|
|
273
|
+
const quorumService = this.quorumServiceWrapper.getService();
|
|
274
|
+
await quorumService.removeMember(memberId);
|
|
275
|
+
return {
|
|
276
|
+
statusCode: 200,
|
|
277
|
+
response: {
|
|
278
|
+
message: 'Member removed successfully',
|
|
279
|
+
success: true,
|
|
280
|
+
memberId,
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
catch (_error) {
|
|
285
|
+
if (_error instanceof brightchain_lib_1.QuorumError) {
|
|
286
|
+
return (0, errorResponse_1.mapQuorumError)(_error);
|
|
287
|
+
}
|
|
288
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
// === Document Sealing/Unsealing Handlers ===
|
|
292
|
+
/**
|
|
293
|
+
* POST /api/quorum/documents/seal
|
|
294
|
+
* Seal a document using Shamir's Secret Sharing.
|
|
295
|
+
*
|
|
296
|
+
* Encrypts the document with a randomly generated symmetric key, then splits
|
|
297
|
+
* the key into shares using Shamir's Secret Sharing. Each share is encrypted
|
|
298
|
+
* with the corresponding member's public key.
|
|
299
|
+
*
|
|
300
|
+
* @param req - Request containing document, member IDs, and optional threshold
|
|
301
|
+
* @returns Document ID and sealing metadata on success
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```json
|
|
305
|
+
* // Request
|
|
306
|
+
* POST /api/quorum/documents/seal
|
|
307
|
+
* {
|
|
308
|
+
* "document": { "secret": "data", "value": 42 },
|
|
309
|
+
* "memberIds": ["member1...", "member2...", "member3..."],
|
|
310
|
+
* "sharesRequired": 2
|
|
311
|
+
* }
|
|
312
|
+
*
|
|
313
|
+
* // Response
|
|
314
|
+
* {
|
|
315
|
+
* "message": "Document sealed successfully",
|
|
316
|
+
* "documentId": "doc123...",
|
|
317
|
+
* "memberIds": ["member1...", "member2...", "member3..."],
|
|
318
|
+
* "sharesRequired": 2,
|
|
319
|
+
* "createdAt": "2025-01-16T10:00:00Z"
|
|
320
|
+
* }
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
this.handleSealDocument = async (req) => {
|
|
324
|
+
try {
|
|
325
|
+
const { document, memberIds, sharesRequired } = req.body;
|
|
326
|
+
// Validate required fields
|
|
327
|
+
if (document === undefined) {
|
|
328
|
+
return (0, errorResponse_1.validationError)('Missing required field: document');
|
|
329
|
+
}
|
|
330
|
+
if (!memberIds || !Array.isArray(memberIds) || memberIds.length < 2) {
|
|
331
|
+
return (0, errorResponse_1.createApiErrorResult)(400, errorResponse_1.ErrorCode.INVALID_MEMBER_COUNT, 'At least 2 member IDs are required for sealing');
|
|
332
|
+
}
|
|
333
|
+
// Validate threshold if provided
|
|
334
|
+
if (sharesRequired !== undefined) {
|
|
335
|
+
if (sharesRequired < 2) {
|
|
336
|
+
return (0, errorResponse_1.createApiErrorResult)(400, errorResponse_1.ErrorCode.INVALID_THRESHOLD, 'sharesRequired must be at least 2');
|
|
337
|
+
}
|
|
338
|
+
if (sharesRequired > memberIds.length) {
|
|
339
|
+
return (0, errorResponse_1.createApiErrorResult)(400, errorResponse_1.ErrorCode.INVALID_THRESHOLD, 'sharesRequired cannot exceed the number of members');
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// Get the agent (authenticated member) from session
|
|
343
|
+
const sessionsController = this.application.getController('sessions');
|
|
344
|
+
let agent;
|
|
345
|
+
try {
|
|
346
|
+
const sessionMember = sessionsController.getMemberFromSession(req.headers.authorization);
|
|
347
|
+
// Cast to GuidV4 member type - the session controller returns a generic Member
|
|
348
|
+
agent = sessionMember;
|
|
349
|
+
}
|
|
350
|
+
catch {
|
|
351
|
+
return (0, errorResponse_1.unauthorizedError)();
|
|
352
|
+
}
|
|
353
|
+
if (!agent) {
|
|
354
|
+
return (0, errorResponse_1.unauthorizedError)();
|
|
355
|
+
}
|
|
356
|
+
const quorumService = this.quorumServiceWrapper.getService();
|
|
357
|
+
const result = await quorumService.sealDocument(agent, document, memberIds, sharesRequired);
|
|
358
|
+
return {
|
|
359
|
+
statusCode: 201,
|
|
360
|
+
response: {
|
|
361
|
+
message: 'Document sealed successfully',
|
|
362
|
+
documentId: result.documentId,
|
|
363
|
+
memberIds: result.memberIds,
|
|
364
|
+
sharesRequired: result.sharesRequired,
|
|
365
|
+
createdAt: result.createdAt.toISOString(),
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
catch (_error) {
|
|
370
|
+
if (_error instanceof brightchain_lib_1.QuorumError) {
|
|
371
|
+
return (0, errorResponse_1.mapQuorumError)(_error);
|
|
372
|
+
}
|
|
373
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
/**
|
|
377
|
+
* POST /api/quorum/documents/:documentId/unseal
|
|
378
|
+
* Unseal a document using member shares.
|
|
379
|
+
*
|
|
380
|
+
* Combines the provided member shares to reconstruct the symmetric key,
|
|
381
|
+
* then decrypts and returns the original document.
|
|
382
|
+
*
|
|
383
|
+
* Note: This endpoint requires members to have their private keys loaded,
|
|
384
|
+
* which is not yet fully implemented. Currently returns 501 Not Implemented.
|
|
385
|
+
*
|
|
386
|
+
* @param req - Request containing document ID and member IDs
|
|
387
|
+
* @returns Original document on success
|
|
388
|
+
*
|
|
389
|
+
* @example
|
|
390
|
+
* ```json
|
|
391
|
+
* // Request
|
|
392
|
+
* POST /api/quorum/documents/doc123.../unseal
|
|
393
|
+
* {
|
|
394
|
+
* "memberIds": ["member1...", "member2..."]
|
|
395
|
+
* }
|
|
396
|
+
*
|
|
397
|
+
* // Response (when implemented)
|
|
398
|
+
* {
|
|
399
|
+
* "message": "Document unsealed successfully",
|
|
400
|
+
* "document": { "secret": "data", "value": 42 }
|
|
401
|
+
* }
|
|
402
|
+
* ```
|
|
403
|
+
*/
|
|
404
|
+
this.handleUnsealDocument = async (req) => {
|
|
405
|
+
try {
|
|
406
|
+
const { documentId } = req.params;
|
|
407
|
+
const { memberIds } = req.body;
|
|
408
|
+
if (!documentId) {
|
|
409
|
+
return (0, errorResponse_1.validationError)('Missing required parameter: documentId');
|
|
410
|
+
}
|
|
411
|
+
if (!memberIds || !Array.isArray(memberIds) || memberIds.length === 0) {
|
|
412
|
+
return (0, errorResponse_1.validationError)('Missing required field: memberIds (array of member IDs)');
|
|
413
|
+
}
|
|
414
|
+
// Note: In a real implementation, the members would need to provide their
|
|
415
|
+
// private keys or pre-decrypted shares. For now, we return a 501 status
|
|
416
|
+
// indicating this needs proper implementation with member authentication.
|
|
417
|
+
void this.quorumServiceWrapper.getService();
|
|
418
|
+
return (0, errorResponse_1.createApiErrorResult)(501, errorResponse_1.ErrorCode.NOT_IMPLEMENTED, 'Unseal operation requires members with loaded private keys. ' +
|
|
419
|
+
'This endpoint needs proper member authentication implementation.');
|
|
420
|
+
}
|
|
421
|
+
catch (_error) {
|
|
422
|
+
if (_error instanceof brightchain_lib_1.QuorumError) {
|
|
423
|
+
return (0, errorResponse_1.mapQuorumError)(_error);
|
|
424
|
+
}
|
|
425
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
426
|
+
}
|
|
427
|
+
};
|
|
428
|
+
/**
|
|
429
|
+
* GET /api/quorum/documents/:documentId
|
|
430
|
+
* Get metadata for a sealed document.
|
|
431
|
+
*
|
|
432
|
+
* Returns information about the document including which members have access
|
|
433
|
+
* and how many shares are required to unseal it.
|
|
434
|
+
*
|
|
435
|
+
* @param req - Request containing the document ID parameter
|
|
436
|
+
* @returns Document metadata on success, or 404 if not found
|
|
437
|
+
*
|
|
438
|
+
* @example
|
|
439
|
+
* ```json
|
|
440
|
+
* // Request
|
|
441
|
+
* GET /api/quorum/documents/doc123...
|
|
442
|
+
*
|
|
443
|
+
* // Response
|
|
444
|
+
* {
|
|
445
|
+
* "message": "Document retrieved successfully",
|
|
446
|
+
* "document": {
|
|
447
|
+
* "id": "doc123...",
|
|
448
|
+
* "memberIds": ["member1...", "member2...", "member3..."],
|
|
449
|
+
* "sharesRequired": 2,
|
|
450
|
+
* "createdAt": "2025-01-16T10:00:00Z",
|
|
451
|
+
* "creatorId": "creator..."
|
|
452
|
+
* }
|
|
453
|
+
* }
|
|
454
|
+
* ```
|
|
455
|
+
*/
|
|
456
|
+
this.handleGetDocument = async (req) => {
|
|
457
|
+
try {
|
|
458
|
+
const { documentId } = req.params;
|
|
459
|
+
if (!documentId) {
|
|
460
|
+
return (0, errorResponse_1.validationError)('Missing required parameter: documentId');
|
|
461
|
+
}
|
|
462
|
+
const quorumService = this.quorumServiceWrapper.getService();
|
|
463
|
+
const document = await quorumService.getDocument(documentId);
|
|
464
|
+
if (!document) {
|
|
465
|
+
return (0, errorResponse_1.notFoundError)('Document', documentId);
|
|
466
|
+
}
|
|
467
|
+
return {
|
|
468
|
+
statusCode: 200,
|
|
469
|
+
response: {
|
|
470
|
+
message: 'Document retrieved successfully',
|
|
471
|
+
document,
|
|
472
|
+
},
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
catch (_error) {
|
|
476
|
+
if (_error instanceof brightchain_lib_1.QuorumError) {
|
|
477
|
+
return (0, errorResponse_1.mapQuorumError)(_error);
|
|
478
|
+
}
|
|
479
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
480
|
+
}
|
|
481
|
+
};
|
|
482
|
+
/**
|
|
483
|
+
* GET /api/quorum/documents/:documentId/can-unlock
|
|
484
|
+
* Check if a set of members can unlock a document.
|
|
485
|
+
*
|
|
486
|
+
* Determines whether the provided members have enough shares to meet
|
|
487
|
+
* the threshold required to unseal the document.
|
|
488
|
+
*
|
|
489
|
+
* @param req - Request containing document ID and member IDs query parameter
|
|
490
|
+
* @returns Unlock status and share count information
|
|
491
|
+
*
|
|
492
|
+
* @example
|
|
493
|
+
* ```json
|
|
494
|
+
* // Request
|
|
495
|
+
* GET /api/quorum/documents/doc123.../can-unlock?memberIds=member1,member2
|
|
496
|
+
*
|
|
497
|
+
* // Response
|
|
498
|
+
* {
|
|
499
|
+
* "message": "Can-unlock check completed",
|
|
500
|
+
* "canUnlock": true,
|
|
501
|
+
* "sharesProvided": 2,
|
|
502
|
+
* "sharesRequired": 2,
|
|
503
|
+
* "missingMembers": ["member3..."]
|
|
504
|
+
* }
|
|
505
|
+
* ```
|
|
506
|
+
*/
|
|
507
|
+
this.handleCanUnlock = async (req) => {
|
|
508
|
+
try {
|
|
509
|
+
const { documentId } = req.params;
|
|
510
|
+
const { memberIds: memberIdsStr } = req
|
|
511
|
+
.query;
|
|
512
|
+
if (!documentId) {
|
|
513
|
+
return (0, errorResponse_1.validationError)('Missing required parameter: documentId');
|
|
514
|
+
}
|
|
515
|
+
if (!memberIdsStr) {
|
|
516
|
+
return (0, errorResponse_1.validationError)('Missing required query parameter: memberIds (comma-separated)');
|
|
517
|
+
}
|
|
518
|
+
const memberIds = memberIdsStr
|
|
519
|
+
.split(',')
|
|
520
|
+
.map((id) => id.trim());
|
|
521
|
+
const quorumService = this.quorumServiceWrapper.getService();
|
|
522
|
+
const result = await quorumService.canUnlock(documentId, memberIds);
|
|
523
|
+
return {
|
|
524
|
+
statusCode: 200,
|
|
525
|
+
response: {
|
|
526
|
+
message: 'Can-unlock check completed',
|
|
527
|
+
...result,
|
|
528
|
+
},
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
catch (_error) {
|
|
532
|
+
if (_error instanceof brightchain_lib_1.QuorumError) {
|
|
533
|
+
return (0, errorResponse_1.mapQuorumError)(_error);
|
|
534
|
+
}
|
|
535
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
this.quorumServiceWrapper = new quorum_1.QuorumServiceWrapper(application);
|
|
539
|
+
}
|
|
540
|
+
initRouteDefinitions() {
|
|
541
|
+
this.routeDefinitions = [
|
|
542
|
+
// Member management endpoints
|
|
543
|
+
(0, node_express_suite_1.routeConfig)('post', '/members', {
|
|
544
|
+
useAuthentication: true,
|
|
545
|
+
useCryptoAuthentication: false,
|
|
546
|
+
handlerKey: 'addMember',
|
|
547
|
+
}),
|
|
548
|
+
(0, node_express_suite_1.routeConfig)('get', '/members', {
|
|
549
|
+
useAuthentication: true,
|
|
550
|
+
useCryptoAuthentication: false,
|
|
551
|
+
handlerKey: 'listMembers',
|
|
552
|
+
}),
|
|
553
|
+
(0, node_express_suite_1.routeConfig)('delete', '/members/:memberId', {
|
|
554
|
+
useAuthentication: true,
|
|
555
|
+
useCryptoAuthentication: false,
|
|
556
|
+
handlerKey: 'removeMember',
|
|
557
|
+
}),
|
|
558
|
+
// Document sealing/unsealing endpoints
|
|
559
|
+
(0, node_express_suite_1.routeConfig)('post', '/documents/seal', {
|
|
560
|
+
useAuthentication: true,
|
|
561
|
+
useCryptoAuthentication: false,
|
|
562
|
+
handlerKey: 'sealDocument',
|
|
563
|
+
}),
|
|
564
|
+
(0, node_express_suite_1.routeConfig)('post', '/documents/:documentId/unseal', {
|
|
565
|
+
useAuthentication: true,
|
|
566
|
+
useCryptoAuthentication: false,
|
|
567
|
+
handlerKey: 'unsealDocument',
|
|
568
|
+
}),
|
|
569
|
+
(0, node_express_suite_1.routeConfig)('get', '/documents/:documentId', {
|
|
570
|
+
useAuthentication: true,
|
|
571
|
+
useCryptoAuthentication: false,
|
|
572
|
+
handlerKey: 'getDocument',
|
|
573
|
+
}),
|
|
574
|
+
(0, node_express_suite_1.routeConfig)('get', '/documents/:documentId/can-unlock', {
|
|
575
|
+
useAuthentication: true,
|
|
576
|
+
useCryptoAuthentication: false,
|
|
577
|
+
handlerKey: 'canUnlock',
|
|
578
|
+
}),
|
|
579
|
+
];
|
|
580
|
+
this.handlers = {
|
|
581
|
+
addMember: this.handleAddMember.bind(this),
|
|
582
|
+
listMembers: this.handleListMembers.bind(this),
|
|
583
|
+
removeMember: this.handleRemoveMember.bind(this),
|
|
584
|
+
sealDocument: this.handleSealDocument.bind(this),
|
|
585
|
+
unsealDocument: this.handleUnsealDocument.bind(this),
|
|
586
|
+
getDocument: this.handleGetDocument.bind(this),
|
|
587
|
+
canUnlock: this.handleCanUnlock.bind(this),
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
exports.QuorumController = QuorumController;
|
|
592
|
+
//# sourceMappingURL=quorum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quorum.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/quorum.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Member } from '@digitaldefiance/ecies-lib';
|
|
2
|
+
import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
|
|
3
|
+
import { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
4
|
+
import { ApiErrorResponse, ApiRequestHandler, IApiMessageResponse, TypedHandlers } from '@digitaldefiance/node-express-suite';
|
|
5
|
+
import { IBrightChainApplication } from '../../interfaces/application';
|
|
6
|
+
import { DefaultBackendIdType } from '../../shared-types';
|
|
7
|
+
import { BaseController } from '../base';
|
|
8
|
+
interface ISessionsHandlers extends TypedHandlers {
|
|
9
|
+
getSessions: ApiRequestHandler<IApiMessageResponse | ApiErrorResponse>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Controller for session operations
|
|
13
|
+
*/
|
|
14
|
+
export declare class SessionsController<TID extends PlatformID = DefaultBackendIdType> extends BaseController<TID, IApiMessageResponse | ApiErrorResponse, ISessionsHandlers, CoreLanguageCode> {
|
|
15
|
+
constructor(application: IBrightChainApplication<TID>);
|
|
16
|
+
protected initRouteDefinitions(): void;
|
|
17
|
+
getMemberFromSession(authorization: string): Member;
|
|
18
|
+
private handleGetSessions;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/sessions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EAEnB,aAAa,EACd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,UAAU,iBAAkB,SAAQ,aAAa;IAC/C,WAAW,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,qBAAa,kBAAkB,CAC7B,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,mBAAmB,GAAG,gBAAgB,EACtC,iBAAiB,EACjB,gBAAgB,CACjB;gBACa,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAIrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAM/B,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAM1D,OAAO,CAAC,iBAAiB,CAWvB;CACH"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionsController = void 0;
|
|
4
|
+
const base_1 = require("../base");
|
|
5
|
+
/**
|
|
6
|
+
* Controller for session operations
|
|
7
|
+
*/
|
|
8
|
+
class SessionsController extends base_1.BaseController {
|
|
9
|
+
constructor(application) {
|
|
10
|
+
super(application);
|
|
11
|
+
this.handleGetSessions = async (req) => {
|
|
12
|
+
return {
|
|
13
|
+
statusCode: 200,
|
|
14
|
+
response: {
|
|
15
|
+
message: 'Sessions not implemented yet',
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
initRouteDefinitions() {
|
|
21
|
+
this.handlers = {
|
|
22
|
+
getSessions: this.handleGetSessions.bind(this),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
getMemberFromSession(authorization) {
|
|
26
|
+
// Temporary implementation
|
|
27
|
+
// Temporary implementation - return null for now
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.SessionsController = SessionsController;
|
|
32
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/sessions.ts"],"names":[],"mappings":";;;AAaA,kCAAyC;AAMzC;;GAEG;AACH,MAAa,kBAEX,SAAQ,qBAKT;IACC,YAAY,WAAyC;QACnD,KAAK,CAAC,WAAW,CAAC,CAAC;QAeb,sBAAiB,GAErB,KAAK,EACP,GAAG,EACmE,EAAE;YACxE,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE;oBACR,OAAO,EAAE,8BAA8B;iBACxC;aACF,CAAC;QACJ,CAAC,CAAC;IAzBF,CAAC;IAES,oBAAoB;QAC5B,IAAI,CAAC,QAAQ,GAAG;YACd,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/C,CAAC;IACJ,CAAC;IAEM,oBAAoB,CAAC,aAAqB;QAC/C,2BAA2B;QAC3B,iDAAiD;QACjD,OAAO,IAAW,CAAC;IACrB,CAAC;CAcF;AApCD,gDAoCC"}
|