@openhi/constructs 0.0.104 → 0.0.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/lib/chunk-2PM2NGXI.mjs +31 -0
- package/lib/chunk-2PM2NGXI.mjs.map +1 -0
- package/lib/chunk-36YCDLLA.mjs +1258 -0
- package/lib/chunk-36YCDLLA.mjs.map +1 -0
- package/lib/chunk-BXEG7IOZ.mjs +108 -0
- package/lib/chunk-BXEG7IOZ.mjs.map +1 -0
- package/lib/chunk-WNUH2WDZ.mjs +45 -0
- package/lib/chunk-WNUH2WDZ.mjs.map +1 -0
- package/lib/events-CVA3_eEB.d.mts +23 -0
- package/lib/events-CVA3_eEB.d.ts +23 -0
- package/lib/index.d.mts +92 -21
- package/lib/index.d.ts +112 -22
- package/lib/index.js +214 -72
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +190 -74
- package/lib/index.mjs.map +1 -1
- package/lib/post-confirmation.handler.js +50 -904
- package/lib/post-confirmation.handler.js.map +1 -1
- package/lib/post-confirmation.handler.mjs +36 -111
- package/lib/post-confirmation.handler.mjs.map +1 -1
- package/lib/pre-token-generation.handler.js +62 -27
- package/lib/pre-token-generation.handler.js.map +1 -1
- package/lib/pre-token-generation.handler.mjs +22 -31
- package/lib/pre-token-generation.handler.mjs.map +1 -1
- package/lib/provision-default-workspace.handler.d.mts +13 -0
- package/lib/provision-default-workspace.handler.d.ts +13 -0
- package/lib/{chunk-MLTYFMSE.mjs → provision-default-workspace.handler.js} +346 -26
- package/lib/provision-default-workspace.handler.js.map +1 -0
- package/lib/provision-default-workspace.handler.mjs +173 -0
- package/lib/provision-default-workspace.handler.mjs.map +1 -0
- package/lib/rest-api-lambda.handler.mjs +40 -546
- package/lib/rest-api-lambda.handler.mjs.map +1 -1
- package/package.json +3 -3
- package/lib/chunk-MLTYFMSE.mjs.map +0 -1
package/lib/index.js
CHANGED
|
@@ -99,6 +99,7 @@ __export(src_exports, {
|
|
|
99
99
|
CognitoUserPoolClient: () => CognitoUserPoolClient,
|
|
100
100
|
CognitoUserPoolDomain: () => CognitoUserPoolDomain,
|
|
101
101
|
CognitoUserPoolKmsKey: () => CognitoUserPoolKmsKey,
|
|
102
|
+
ControlEventBus: () => ControlEventBus,
|
|
102
103
|
DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES: () => DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES,
|
|
103
104
|
DATA_STORE_CHANGE_DETAIL_TYPE: () => DATA_STORE_CHANGE_DETAIL_TYPE,
|
|
104
105
|
DATA_STORE_CHANGE_EVENT_SOURCE: () => DATA_STORE_CHANGE_EVENT_SOURCE,
|
|
@@ -120,9 +121,11 @@ __export(src_exports, {
|
|
|
120
121
|
POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME: () => POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME,
|
|
121
122
|
POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME: () => POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME,
|
|
122
123
|
POSTGRES_REPLICA_SECRET_ARN_SSM_NAME: () => POSTGRES_REPLICA_SECRET_ARN_SSM_NAME,
|
|
124
|
+
PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE: () => PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE,
|
|
123
125
|
PostAuthenticationLambda: () => PostAuthenticationLambda,
|
|
124
126
|
PostConfirmationLambda: () => PostConfirmationLambda,
|
|
125
127
|
PreTokenGenerationLambda: () => PreTokenGenerationLambda,
|
|
128
|
+
ProvisionDefaultWorkspaceLambda: () => ProvisionDefaultWorkspaceLambda,
|
|
126
129
|
REST_API_BASE_URL_SSM_NAME: () => REST_API_BASE_URL_SSM_NAME,
|
|
127
130
|
RootGraphqlApi: () => RootGraphqlApi,
|
|
128
131
|
RootHostedZone: () => RootHostedZone,
|
|
@@ -130,7 +133,10 @@ __export(src_exports, {
|
|
|
130
133
|
RootWildcardCertificate: () => RootWildcardCertificate,
|
|
131
134
|
STATIC_HOSTING_SERVICE_TYPE: () => STATIC_HOSTING_SERVICE_TYPE,
|
|
132
135
|
StaticHosting: () => StaticHosting,
|
|
136
|
+
USER_ONBOARDING_EVENT_SOURCE: () => USER_ONBOARDING_EVENT_SOURCE,
|
|
137
|
+
UserOnboardingWorkflow: () => UserOnboardingWorkflow,
|
|
133
138
|
buildFhirCurrentResourceChangeDetail: () => buildFhirCurrentResourceChangeDetail,
|
|
139
|
+
buildProvisionDefaultWorkspaceRequestedDetail: () => buildProvisionDefaultWorkspaceRequestedDetail,
|
|
134
140
|
getDynamoDbDataStoreTableName: () => getDynamoDbDataStoreTableName,
|
|
135
141
|
getPostgresReplicaSchemaName: () => getPostgresReplicaSchemaName
|
|
136
142
|
});
|
|
@@ -761,14 +767,13 @@ var import_aws_lambda2 = require("aws-cdk-lib/aws-lambda");
|
|
|
761
767
|
var import_aws_lambda_nodejs2 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
762
768
|
var import_constructs2 = require("constructs");
|
|
763
769
|
var HANDLER_NAME2 = "post-confirmation.handler.js";
|
|
764
|
-
|
|
770
|
+
var resolveHandlerEntry2 = (dirname) => {
|
|
765
771
|
const sameDir = import_node_path2.default.join(dirname, HANDLER_NAME2);
|
|
766
772
|
if (import_node_fs2.default.existsSync(sameDir)) {
|
|
767
773
|
return sameDir;
|
|
768
774
|
}
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
}
|
|
775
|
+
return import_node_path2.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME2);
|
|
776
|
+
};
|
|
772
777
|
var PostConfirmationLambda = class extends import_constructs2.Construct {
|
|
773
778
|
constructor(scope, props) {
|
|
774
779
|
super(scope, "post-confirmation-lambda");
|
|
@@ -777,7 +782,7 @@ var PostConfirmationLambda = class extends import_constructs2.Construct {
|
|
|
777
782
|
runtime: import_aws_lambda2.Runtime.NODEJS_LATEST,
|
|
778
783
|
memorySize: 1024,
|
|
779
784
|
environment: {
|
|
780
|
-
|
|
785
|
+
CONTROL_EVENT_BUS_NAME: props.controlEventBusName
|
|
781
786
|
}
|
|
782
787
|
});
|
|
783
788
|
}
|
|
@@ -1149,6 +1154,28 @@ var OpsEventBus = class _OpsEventBus extends import_aws_events2.EventBus {
|
|
|
1149
1154
|
}
|
|
1150
1155
|
};
|
|
1151
1156
|
|
|
1157
|
+
// src/components/event-bridge/control-event-bus.ts
|
|
1158
|
+
var import_aws_events3 = require("aws-cdk-lib/aws-events");
|
|
1159
|
+
var ControlEventBus = class _ControlEventBus extends import_aws_events3.EventBus {
|
|
1160
|
+
/*****************************************************************************
|
|
1161
|
+
*
|
|
1162
|
+
* Return a name for this EventBus based on the stack environment hash. This
|
|
1163
|
+
* name is common across all stacks since it's using the environment hash in
|
|
1164
|
+
* its name.
|
|
1165
|
+
*
|
|
1166
|
+
****************************************************************************/
|
|
1167
|
+
static getEventBusName(scope) {
|
|
1168
|
+
const stack = OpenHiService.of(scope);
|
|
1169
|
+
return `controlv1${stack.branchHash}`;
|
|
1170
|
+
}
|
|
1171
|
+
constructor(scope, props) {
|
|
1172
|
+
super(scope, "control-event-bus-v1", {
|
|
1173
|
+
...props,
|
|
1174
|
+
eventBusName: _ControlEventBus.getEventBusName(scope)
|
|
1175
|
+
});
|
|
1176
|
+
}
|
|
1177
|
+
};
|
|
1178
|
+
|
|
1152
1179
|
// src/components/postgres/data-store-postgres-replica.ts
|
|
1153
1180
|
var import_node_fs5 = __toESM(require("fs"));
|
|
1154
1181
|
var import_node_path5 = __toESM(require("path"));
|
|
@@ -1398,7 +1425,7 @@ var StaticHosting = _StaticHosting;
|
|
|
1398
1425
|
// src/services/open-hi-auth-service.ts
|
|
1399
1426
|
var import_config4 = __toESM(require_lib());
|
|
1400
1427
|
var import_aws_cognito5 = require("aws-cdk-lib/aws-cognito");
|
|
1401
|
-
var
|
|
1428
|
+
var import_aws_iam2 = require("aws-cdk-lib/aws-iam");
|
|
1402
1429
|
var import_aws_kms2 = require("aws-cdk-lib/aws-kms");
|
|
1403
1430
|
var import_core2 = require("aws-cdk-lib/core");
|
|
1404
1431
|
|
|
@@ -1408,7 +1435,7 @@ var kinesis = __toESM(require("aws-cdk-lib/aws-kinesis"));
|
|
|
1408
1435
|
|
|
1409
1436
|
// src/services/open-hi-global-service.ts
|
|
1410
1437
|
var import_aws_certificatemanager2 = require("aws-cdk-lib/aws-certificatemanager");
|
|
1411
|
-
var
|
|
1438
|
+
var import_aws_events4 = require("aws-cdk-lib/aws-events");
|
|
1412
1439
|
var import_aws_route532 = require("aws-cdk-lib/aws-route53");
|
|
1413
1440
|
var import_aws_ssm3 = require("aws-cdk-lib/aws-ssm");
|
|
1414
1441
|
var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
|
|
@@ -1449,7 +1476,7 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
|
|
|
1449
1476
|
* Returns the data event bus by name (deterministic per branch). Use from other stacks to obtain an IEventBus reference.
|
|
1450
1477
|
*/
|
|
1451
1478
|
static dataEventBusFromConstruct(scope) {
|
|
1452
|
-
return
|
|
1479
|
+
return import_aws_events4.EventBus.fromEventBusName(
|
|
1453
1480
|
scope,
|
|
1454
1481
|
"data-event-bus",
|
|
1455
1482
|
DataEventBus.getEventBusName(scope)
|
|
@@ -1459,12 +1486,22 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
|
|
|
1459
1486
|
* Returns the ops event bus by name (deterministic per branch). Use from other stacks to obtain an IEventBus reference.
|
|
1460
1487
|
*/
|
|
1461
1488
|
static opsEventBusFromConstruct(scope) {
|
|
1462
|
-
return
|
|
1489
|
+
return import_aws_events4.EventBus.fromEventBusName(
|
|
1463
1490
|
scope,
|
|
1464
1491
|
"ops-event-bus",
|
|
1465
1492
|
OpsEventBus.getEventBusName(scope)
|
|
1466
1493
|
);
|
|
1467
1494
|
}
|
|
1495
|
+
/**
|
|
1496
|
+
* Returns the control-plane event bus by name (deterministic per branch). Use from other stacks to obtain an IEventBus reference.
|
|
1497
|
+
*/
|
|
1498
|
+
static controlEventBusFromConstruct(scope) {
|
|
1499
|
+
return import_aws_events4.EventBus.fromEventBusName(
|
|
1500
|
+
scope,
|
|
1501
|
+
"control-event-bus",
|
|
1502
|
+
ControlEventBus.getEventBusName(scope)
|
|
1503
|
+
);
|
|
1504
|
+
}
|
|
1468
1505
|
get serviceType() {
|
|
1469
1506
|
return _OpenHiGlobalService.SERVICE_TYPE;
|
|
1470
1507
|
}
|
|
@@ -1477,6 +1514,7 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
|
|
|
1477
1514
|
this.rootWildcardCertificate = this.createRootWildcardCertificate();
|
|
1478
1515
|
this.dataEventBus = this.createDataEventBus();
|
|
1479
1516
|
this.opsEventBus = this.createOpsEventBus();
|
|
1517
|
+
this.controlEventBus = this.createControlEventBus();
|
|
1480
1518
|
}
|
|
1481
1519
|
/**
|
|
1482
1520
|
* Validates that config required for the Global stack is present.
|
|
@@ -1541,6 +1579,13 @@ var _OpenHiGlobalService = class _OpenHiGlobalService extends OpenHiService {
|
|
|
1541
1579
|
createOpsEventBus() {
|
|
1542
1580
|
return new OpsEventBus(this);
|
|
1543
1581
|
}
|
|
1582
|
+
/**
|
|
1583
|
+
* Creates the control-plane event bus.
|
|
1584
|
+
* Override to customize.
|
|
1585
|
+
*/
|
|
1586
|
+
createControlEventBus() {
|
|
1587
|
+
return new ControlEventBus(this);
|
|
1588
|
+
}
|
|
1544
1589
|
};
|
|
1545
1590
|
_OpenHiGlobalService.SERVICE_TYPE = "global";
|
|
1546
1591
|
var OpenHiGlobalService = _OpenHiGlobalService;
|
|
@@ -1607,6 +1652,100 @@ var _OpenHiDataService = class _OpenHiDataService extends OpenHiService {
|
|
|
1607
1652
|
_OpenHiDataService.SERVICE_TYPE = "data";
|
|
1608
1653
|
var OpenHiDataService = _OpenHiDataService;
|
|
1609
1654
|
|
|
1655
|
+
// src/workflows/control-plane/user-onboarding/events.ts
|
|
1656
|
+
var USER_ONBOARDING_EVENT_SOURCE = "openhi.control.user-onboarding";
|
|
1657
|
+
var PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE = "ProvisionDefaultWorkspaceRequested";
|
|
1658
|
+
var buildProvisionDefaultWorkspaceRequestedDetail = (event) => {
|
|
1659
|
+
const attrs = event.request?.userAttributes ?? {};
|
|
1660
|
+
const cognitoSub = attrs.sub?.trim();
|
|
1661
|
+
if (!cognitoSub) {
|
|
1662
|
+
return void 0;
|
|
1663
|
+
}
|
|
1664
|
+
const email = attrs.email?.trim();
|
|
1665
|
+
const displayName = email || event.userName || cognitoSub;
|
|
1666
|
+
return {
|
|
1667
|
+
cognitoSub,
|
|
1668
|
+
...email ? { email } : {},
|
|
1669
|
+
displayName,
|
|
1670
|
+
trigger: {
|
|
1671
|
+
source: "cognito.post-confirmation",
|
|
1672
|
+
triggerSource: event.triggerSource,
|
|
1673
|
+
userPoolId: event.userPoolId,
|
|
1674
|
+
userName: event.userName,
|
|
1675
|
+
clientId: event.callerContext?.clientId
|
|
1676
|
+
}
|
|
1677
|
+
};
|
|
1678
|
+
};
|
|
1679
|
+
|
|
1680
|
+
// src/workflows/control-plane/user-onboarding/provision-default-workspace-lambda.ts
|
|
1681
|
+
var import_node_fs6 = __toESM(require("fs"));
|
|
1682
|
+
var import_node_path6 = __toESM(require("path"));
|
|
1683
|
+
var import_aws_cdk_lib10 = require("aws-cdk-lib");
|
|
1684
|
+
var import_aws_events5 = require("aws-cdk-lib/aws-events");
|
|
1685
|
+
var import_aws_events_targets = require("aws-cdk-lib/aws-events-targets");
|
|
1686
|
+
var import_aws_iam = require("aws-cdk-lib/aws-iam");
|
|
1687
|
+
var import_aws_lambda6 = require("aws-cdk-lib/aws-lambda");
|
|
1688
|
+
var import_aws_lambda_nodejs6 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
1689
|
+
var import_constructs8 = require("constructs");
|
|
1690
|
+
var HANDLER_NAME6 = "provision-default-workspace.handler.js";
|
|
1691
|
+
function resolveHandlerEntry6(dirname) {
|
|
1692
|
+
const sameDir = import_node_path6.default.join(dirname, HANDLER_NAME6);
|
|
1693
|
+
if (import_node_fs6.default.existsSync(sameDir)) {
|
|
1694
|
+
return sameDir;
|
|
1695
|
+
}
|
|
1696
|
+
return import_node_path6.default.join(dirname, "..", "..", "..", "..", "lib", HANDLER_NAME6);
|
|
1697
|
+
}
|
|
1698
|
+
var ProvisionDefaultWorkspaceLambda = class extends import_constructs8.Construct {
|
|
1699
|
+
constructor(scope, props) {
|
|
1700
|
+
super(scope, "provision-default-workspace-lambda");
|
|
1701
|
+
this.lambda = new import_aws_lambda_nodejs6.NodejsFunction(this, "handler", {
|
|
1702
|
+
entry: resolveHandlerEntry6(__dirname),
|
|
1703
|
+
runtime: import_aws_lambda6.Runtime.NODEJS_LATEST,
|
|
1704
|
+
memorySize: 1024,
|
|
1705
|
+
environment: {
|
|
1706
|
+
DYNAMO_TABLE_NAME: props.dataStoreTable.tableName
|
|
1707
|
+
}
|
|
1708
|
+
});
|
|
1709
|
+
props.dataStoreTable.grant(
|
|
1710
|
+
this.lambda,
|
|
1711
|
+
"dynamodb:PutItem",
|
|
1712
|
+
"dynamodb:UpdateItem"
|
|
1713
|
+
);
|
|
1714
|
+
this.lambda.addToRolePolicy(
|
|
1715
|
+
new import_aws_iam.PolicyStatement({
|
|
1716
|
+
effect: import_aws_iam.Effect.ALLOW,
|
|
1717
|
+
actions: ["dynamodb:Query"],
|
|
1718
|
+
resources: [`${props.dataStoreTable.tableArn}/index/*`]
|
|
1719
|
+
})
|
|
1720
|
+
);
|
|
1721
|
+
this.rule = new import_aws_events5.Rule(this, "rule", {
|
|
1722
|
+
eventBus: props.controlEventBus,
|
|
1723
|
+
eventPattern: {
|
|
1724
|
+
source: [USER_ONBOARDING_EVENT_SOURCE],
|
|
1725
|
+
detailType: [PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE]
|
|
1726
|
+
},
|
|
1727
|
+
targets: [
|
|
1728
|
+
new import_aws_events_targets.LambdaFunction(this.lambda, {
|
|
1729
|
+
retryAttempts: 2,
|
|
1730
|
+
maxEventAge: import_aws_cdk_lib10.Duration.hours(2)
|
|
1731
|
+
})
|
|
1732
|
+
]
|
|
1733
|
+
});
|
|
1734
|
+
}
|
|
1735
|
+
};
|
|
1736
|
+
|
|
1737
|
+
// src/workflows/control-plane/user-onboarding/user-onboarding-workflow.ts
|
|
1738
|
+
var import_constructs9 = require("constructs");
|
|
1739
|
+
var UserOnboardingWorkflow = class extends import_constructs9.Construct {
|
|
1740
|
+
constructor(scope, props) {
|
|
1741
|
+
super(scope, "user-onboarding-workflow");
|
|
1742
|
+
this.provisionDefaultWorkspace = new ProvisionDefaultWorkspaceLambda(this, {
|
|
1743
|
+
dataStoreTable: props.dataStoreTable,
|
|
1744
|
+
controlEventBus: props.controlEventBus
|
|
1745
|
+
});
|
|
1746
|
+
}
|
|
1747
|
+
};
|
|
1748
|
+
|
|
1610
1749
|
// src/services/open-hi-auth-service.ts
|
|
1611
1750
|
var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
|
|
1612
1751
|
constructor(ohEnv, props = {}) {
|
|
@@ -1618,11 +1757,13 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
|
|
|
1618
1757
|
* would collide.
|
|
1619
1758
|
*/
|
|
1620
1759
|
this._dataStoreTable = null;
|
|
1760
|
+
this._controlEventBus = null;
|
|
1621
1761
|
this.props = props;
|
|
1622
1762
|
this.userPoolKmsKey = this.createUserPoolKmsKey();
|
|
1623
1763
|
this.preTokenGenerationLambda = this.createPreTokenGenerationLambda();
|
|
1624
1764
|
this.postAuthenticationLambda = this.createPostAuthenticationLambda();
|
|
1625
1765
|
this.postConfirmationLambda = this.createPostConfirmationLambda();
|
|
1766
|
+
this.userOnboardingWorkflow = this.createUserOnboardingWorkflow();
|
|
1626
1767
|
this.userPool = this.createUserPool();
|
|
1627
1768
|
this.grantPreTokenGenerationPermissions();
|
|
1628
1769
|
this.grantPostAuthenticationPermissions();
|
|
@@ -1739,23 +1880,33 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
|
|
|
1739
1880
|
}
|
|
1740
1881
|
/**
|
|
1741
1882
|
* Creates the Post Confirmation Lambda (Cognito trigger). On sign-up
|
|
1742
|
-
* confirmation,
|
|
1743
|
-
*
|
|
1744
|
-
* carrying the Cognito `sub` and current tenant/workspace pointers
|
|
1745
|
-
* (ADR 2026-03-17-01 invariants).
|
|
1883
|
+
* confirmation, publishes a control-plane workflow event; provisioning lives
|
|
1884
|
+
* behind EventBridge.
|
|
1746
1885
|
*/
|
|
1747
1886
|
createPostConfirmationLambda() {
|
|
1748
1887
|
const construct = new PostConfirmationLambda(this, {
|
|
1749
|
-
|
|
1888
|
+
controlEventBusName: this.controlEventBus().eventBusName
|
|
1750
1889
|
});
|
|
1751
1890
|
return construct.lambda;
|
|
1752
1891
|
}
|
|
1892
|
+
createUserOnboardingWorkflow() {
|
|
1893
|
+
return new UserOnboardingWorkflow(this, {
|
|
1894
|
+
controlEventBus: this.controlEventBus(),
|
|
1895
|
+
dataStoreTable: this.dataStoreTable()
|
|
1896
|
+
});
|
|
1897
|
+
}
|
|
1753
1898
|
dataStoreTable() {
|
|
1754
1899
|
if (this._dataStoreTable === null) {
|
|
1755
1900
|
this._dataStoreTable = OpenHiDataService.dynamoDbDataStoreFromConstruct(this);
|
|
1756
1901
|
}
|
|
1757
1902
|
return this._dataStoreTable;
|
|
1758
1903
|
}
|
|
1904
|
+
controlEventBus() {
|
|
1905
|
+
if (this._controlEventBus === null) {
|
|
1906
|
+
this._controlEventBus = OpenHiGlobalService.controlEventBusFromConstruct(this);
|
|
1907
|
+
}
|
|
1908
|
+
return this._controlEventBus;
|
|
1909
|
+
}
|
|
1759
1910
|
/**
|
|
1760
1911
|
* Creates the Cognito User Pool and exports its ID to SSM.
|
|
1761
1912
|
* Look up via {@link OpenHiAuthService.userPoolFromConstruct}.
|
|
@@ -1800,8 +1951,8 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
|
|
|
1800
1951
|
const dynamoActions = ["dynamodb:GetItem", "dynamodb:Query"];
|
|
1801
1952
|
dataStoreTable.grant(this.preTokenGenerationLambda, ...dynamoActions);
|
|
1802
1953
|
this.preTokenGenerationLambda.addToRolePolicy(
|
|
1803
|
-
new
|
|
1804
|
-
effect:
|
|
1954
|
+
new import_aws_iam2.PolicyStatement({
|
|
1955
|
+
effect: import_aws_iam2.Effect.ALLOW,
|
|
1805
1956
|
actions: [...dynamoActions],
|
|
1806
1957
|
resources: [`${dataStoreTable.tableArn}/index/*`]
|
|
1807
1958
|
})
|
|
@@ -1822,7 +1973,7 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
|
|
|
1822
1973
|
*/
|
|
1823
1974
|
grantPostAuthenticationPermissions() {
|
|
1824
1975
|
this.postAuthenticationLambda.addToRolePolicy(
|
|
1825
|
-
new
|
|
1976
|
+
new import_aws_iam2.PolicyStatement({
|
|
1826
1977
|
actions: ["cognito-idp:AdminUserGlobalSignOut"],
|
|
1827
1978
|
resources: [
|
|
1828
1979
|
import_core2.Stack.of(this).formatArn({
|
|
@@ -1835,26 +1986,11 @@ var _OpenHiAuthService = class _OpenHiAuthService extends OpenHiService {
|
|
|
1835
1986
|
);
|
|
1836
1987
|
}
|
|
1837
1988
|
/**
|
|
1838
|
-
* Grants the Post Confirmation Lambda
|
|
1839
|
-
*
|
|
1840
|
-
* Memberships, RoleAssignment, and User records on sign-up confirmation.
|
|
1989
|
+
* Grants the Post Confirmation Lambda publish-only access to the
|
|
1990
|
+
* control-plane event bus. Workflow Lambdas own DynamoDB writes.
|
|
1841
1991
|
*/
|
|
1842
1992
|
grantPostConfirmationPermissions() {
|
|
1843
|
-
|
|
1844
|
-
const dynamoActions = [
|
|
1845
|
-
"dynamodb:PutItem",
|
|
1846
|
-
"dynamodb:UpdateItem",
|
|
1847
|
-
"dynamodb:BatchWriteItem",
|
|
1848
|
-
"dynamodb:DescribeTable"
|
|
1849
|
-
];
|
|
1850
|
-
dataStoreTable.grant(this.postConfirmationLambda, ...dynamoActions);
|
|
1851
|
-
this.postConfirmationLambda.addToRolePolicy(
|
|
1852
|
-
new import_aws_iam.PolicyStatement({
|
|
1853
|
-
effect: import_aws_iam.Effect.ALLOW,
|
|
1854
|
-
actions: [...dynamoActions],
|
|
1855
|
-
resources: [`${dataStoreTable.tableArn}/index/*`]
|
|
1856
|
-
})
|
|
1857
|
-
);
|
|
1993
|
+
this.controlEventBus().grantPutEventsTo(this.postConfirmationLambda);
|
|
1858
1994
|
}
|
|
1859
1995
|
/**
|
|
1860
1996
|
* Creates the User Pool Client and exports its ID to SSM (AUTH service type).
|
|
@@ -1925,58 +2061,58 @@ var import_config5 = __toESM(require_lib());
|
|
|
1925
2061
|
var import_aws_apigatewayv22 = require("aws-cdk-lib/aws-apigatewayv2");
|
|
1926
2062
|
var import_aws_apigatewayv2_authorizers = require("aws-cdk-lib/aws-apigatewayv2-authorizers");
|
|
1927
2063
|
var import_aws_apigatewayv2_integrations = require("aws-cdk-lib/aws-apigatewayv2-integrations");
|
|
1928
|
-
var
|
|
2064
|
+
var import_aws_iam3 = require("aws-cdk-lib/aws-iam");
|
|
1929
2065
|
var import_aws_route533 = require("aws-cdk-lib/aws-route53");
|
|
1930
2066
|
var import_aws_route53_targets = require("aws-cdk-lib/aws-route53-targets");
|
|
1931
2067
|
var import_core3 = require("aws-cdk-lib/core");
|
|
1932
2068
|
|
|
1933
2069
|
// src/data/lambda/cors-options-lambda.ts
|
|
1934
|
-
var
|
|
1935
|
-
var
|
|
1936
|
-
var
|
|
1937
|
-
var
|
|
1938
|
-
var
|
|
1939
|
-
var
|
|
1940
|
-
function
|
|
1941
|
-
const sameDir =
|
|
1942
|
-
if (
|
|
2070
|
+
var import_node_fs7 = __toESM(require("fs"));
|
|
2071
|
+
var import_node_path7 = __toESM(require("path"));
|
|
2072
|
+
var import_aws_lambda7 = require("aws-cdk-lib/aws-lambda");
|
|
2073
|
+
var import_aws_lambda_nodejs7 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
2074
|
+
var import_constructs10 = require("constructs");
|
|
2075
|
+
var HANDLER_NAME7 = "cors-options-lambda.handler.js";
|
|
2076
|
+
function resolveHandlerEntry7(dirname) {
|
|
2077
|
+
const sameDir = import_node_path7.default.join(dirname, HANDLER_NAME7);
|
|
2078
|
+
if (import_node_fs7.default.existsSync(sameDir)) {
|
|
1943
2079
|
return sameDir;
|
|
1944
2080
|
}
|
|
1945
|
-
const fromLib =
|
|
2081
|
+
const fromLib = import_node_path7.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME7);
|
|
1946
2082
|
return fromLib;
|
|
1947
2083
|
}
|
|
1948
|
-
var CorsOptionsLambda = class extends
|
|
2084
|
+
var CorsOptionsLambda = class extends import_constructs10.Construct {
|
|
1949
2085
|
constructor(scope, id = "cors-options-lambda") {
|
|
1950
2086
|
super(scope, id);
|
|
1951
|
-
this.lambda = new
|
|
1952
|
-
entry:
|
|
1953
|
-
runtime:
|
|
2087
|
+
this.lambda = new import_aws_lambda_nodejs7.NodejsFunction(this, "handler", {
|
|
2088
|
+
entry: resolveHandlerEntry7(__dirname),
|
|
2089
|
+
runtime: import_aws_lambda7.Runtime.NODEJS_LATEST,
|
|
1954
2090
|
memorySize: 128
|
|
1955
2091
|
});
|
|
1956
2092
|
}
|
|
1957
2093
|
};
|
|
1958
2094
|
|
|
1959
2095
|
// src/data/lambda/rest-api-lambda.ts
|
|
1960
|
-
var
|
|
1961
|
-
var
|
|
1962
|
-
var
|
|
1963
|
-
var
|
|
1964
|
-
var
|
|
1965
|
-
var
|
|
1966
|
-
function
|
|
1967
|
-
const sameDir =
|
|
1968
|
-
if (
|
|
2096
|
+
var import_node_fs8 = __toESM(require("fs"));
|
|
2097
|
+
var import_node_path8 = __toESM(require("path"));
|
|
2098
|
+
var import_aws_lambda8 = require("aws-cdk-lib/aws-lambda");
|
|
2099
|
+
var import_aws_lambda_nodejs8 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
2100
|
+
var import_constructs11 = require("constructs");
|
|
2101
|
+
var HANDLER_NAME8 = "rest-api-lambda.handler.js";
|
|
2102
|
+
function resolveHandlerEntry8(dirname) {
|
|
2103
|
+
const sameDir = import_node_path8.default.join(dirname, HANDLER_NAME8);
|
|
2104
|
+
if (import_node_fs8.default.existsSync(sameDir)) {
|
|
1969
2105
|
return sameDir;
|
|
1970
2106
|
}
|
|
1971
|
-
const fromLib =
|
|
2107
|
+
const fromLib = import_node_path8.default.join(dirname, "..", "..", "..", "lib", HANDLER_NAME8);
|
|
1972
2108
|
return fromLib;
|
|
1973
2109
|
}
|
|
1974
|
-
var RestApiLambda = class extends
|
|
2110
|
+
var RestApiLambda = class extends import_constructs11.Construct {
|
|
1975
2111
|
constructor(scope, props) {
|
|
1976
2112
|
super(scope, "rest-api-lambda");
|
|
1977
|
-
this.lambda = new
|
|
1978
|
-
entry:
|
|
1979
|
-
runtime:
|
|
2113
|
+
this.lambda = new import_aws_lambda_nodejs8.NodejsFunction(this, "handler", {
|
|
2114
|
+
entry: resolveHandlerEntry8(__dirname),
|
|
2115
|
+
runtime: import_aws_lambda8.Runtime.NODEJS_LATEST,
|
|
1980
2116
|
memorySize: 1024,
|
|
1981
2117
|
environment: {
|
|
1982
2118
|
DYNAMO_TABLE_NAME: props.dynamoTableName,
|
|
@@ -2118,8 +2254,8 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
|
|
|
2118
2254
|
postgresSchema
|
|
2119
2255
|
});
|
|
2120
2256
|
lambda.addToRolePolicy(
|
|
2121
|
-
new
|
|
2122
|
-
effect:
|
|
2257
|
+
new import_aws_iam3.PolicyStatement({
|
|
2258
|
+
effect: import_aws_iam3.Effect.ALLOW,
|
|
2123
2259
|
actions: [
|
|
2124
2260
|
"rds-data:ExecuteStatement",
|
|
2125
2261
|
"rds-data:BatchExecuteStatement"
|
|
@@ -2128,8 +2264,8 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
|
|
|
2128
2264
|
})
|
|
2129
2265
|
);
|
|
2130
2266
|
lambda.addToRolePolicy(
|
|
2131
|
-
new
|
|
2132
|
-
effect:
|
|
2267
|
+
new import_aws_iam3.PolicyStatement({
|
|
2268
|
+
effect: import_aws_iam3.Effect.ALLOW,
|
|
2133
2269
|
actions: ["secretsmanager:GetSecretValue"],
|
|
2134
2270
|
resources: [postgresSecretArn]
|
|
2135
2271
|
})
|
|
@@ -2147,15 +2283,15 @@ var _OpenHiRestApiService = class _OpenHiRestApiService extends OpenHiService {
|
|
|
2147
2283
|
];
|
|
2148
2284
|
dataStoreTable.grant(lambda, ...dynamoActions);
|
|
2149
2285
|
lambda.addToRolePolicy(
|
|
2150
|
-
new
|
|
2151
|
-
effect:
|
|
2286
|
+
new import_aws_iam3.PolicyStatement({
|
|
2287
|
+
effect: import_aws_iam3.Effect.ALLOW,
|
|
2152
2288
|
actions: [...dynamoActions],
|
|
2153
2289
|
resources: [`${dataStoreTable.tableArn}/index/*`]
|
|
2154
2290
|
})
|
|
2155
2291
|
);
|
|
2156
2292
|
lambda.addToRolePolicy(
|
|
2157
|
-
new
|
|
2158
|
-
effect:
|
|
2293
|
+
new import_aws_iam3.PolicyStatement({
|
|
2294
|
+
effect: import_aws_iam3.Effect.ALLOW,
|
|
2159
2295
|
actions: [
|
|
2160
2296
|
"ssm:GetParameter",
|
|
2161
2297
|
"ssm:GetParameters",
|
|
@@ -2310,6 +2446,7 @@ var OpenHiGraphqlService = _OpenHiGraphqlService;
|
|
|
2310
2446
|
CognitoUserPoolClient,
|
|
2311
2447
|
CognitoUserPoolDomain,
|
|
2312
2448
|
CognitoUserPoolKmsKey,
|
|
2449
|
+
ControlEventBus,
|
|
2313
2450
|
DATA_STORE_CHANGE_DETAIL_MAX_UTF8_BYTES,
|
|
2314
2451
|
DATA_STORE_CHANGE_DETAIL_TYPE,
|
|
2315
2452
|
DATA_STORE_CHANGE_EVENT_SOURCE,
|
|
@@ -2331,9 +2468,11 @@ var OpenHiGraphqlService = _OpenHiGraphqlService;
|
|
|
2331
2468
|
POSTGRES_REPLICA_CLUSTER_ARN_SSM_NAME,
|
|
2332
2469
|
POSTGRES_REPLICA_DATABASE_NAME_SSM_NAME,
|
|
2333
2470
|
POSTGRES_REPLICA_SECRET_ARN_SSM_NAME,
|
|
2471
|
+
PROVISION_DEFAULT_WORKSPACE_DETAIL_TYPE,
|
|
2334
2472
|
PostAuthenticationLambda,
|
|
2335
2473
|
PostConfirmationLambda,
|
|
2336
2474
|
PreTokenGenerationLambda,
|
|
2475
|
+
ProvisionDefaultWorkspaceLambda,
|
|
2337
2476
|
REST_API_BASE_URL_SSM_NAME,
|
|
2338
2477
|
RootGraphqlApi,
|
|
2339
2478
|
RootHostedZone,
|
|
@@ -2341,7 +2480,10 @@ var OpenHiGraphqlService = _OpenHiGraphqlService;
|
|
|
2341
2480
|
RootWildcardCertificate,
|
|
2342
2481
|
STATIC_HOSTING_SERVICE_TYPE,
|
|
2343
2482
|
StaticHosting,
|
|
2483
|
+
USER_ONBOARDING_EVENT_SOURCE,
|
|
2484
|
+
UserOnboardingWorkflow,
|
|
2344
2485
|
buildFhirCurrentResourceChangeDetail,
|
|
2486
|
+
buildProvisionDefaultWorkspaceRequestedDetail,
|
|
2345
2487
|
getDynamoDbDataStoreTableName,
|
|
2346
2488
|
getPostgresReplicaSchemaName
|
|
2347
2489
|
});
|