@fjall/components-infrastructure 0.1.22 → 0.1.24

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.
@@ -2,7 +2,6 @@ import { Construct } from "constructs";
2
2
  import { ManagedAccount, ManagedAccountProps } from "./managedAccount";
3
3
  interface ManagedPlatformProps extends ManagedAccountProps {
4
4
  orgAccounts: string[];
5
- region: string;
6
5
  }
7
6
  /**
8
7
  * A stack for creating multi environment organisations with a production, staging and development account.
@@ -19,4 +19,4 @@ class ManagedPlatform extends managedAccount_1.ManagedAccount {
19
19
  }
20
20
  }
21
21
  exports.ManagedPlatform = ManagedPlatform;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZFBsYXRmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9tYW5hZ2VkUGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQTZDO0FBQzdDLHNFQUFtRTtBQUVuRSxxREFBdUU7QUFPdkU7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsK0JBQWM7SUFDakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEMsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFaRCwwQ0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElwYW0gfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9pcGFtXCI7XG5pbXBvcnQgeyBJcGFtUG9vbCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVBvb2xcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkQWNjb3VudCwgTWFuYWdlZEFjY291bnRQcm9wcyB9IGZyb20gXCIuL21hbmFnZWRBY2NvdW50XCI7XG5cbmludGVyZmFjZSBNYW5hZ2VkUGxhdGZvcm1Qcm9wcyBleHRlbmRzIE1hbmFnZWRBY2NvdW50UHJvcHMge1xuICBvcmdBY2NvdW50czogc3RyaW5nW107XG4gIHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgZm9yIGNyZWF0aW5nIG11bHRpIGVudmlyb25tZW50IG9yZ2FuaXNhdGlvbnMgd2l0aCBhIHByb2R1Y3Rpb24sIHN0YWdpbmcgYW5kIGRldmVsb3BtZW50IGFjY291bnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5hZ2VkUGxhdGZvcm0gZXh0ZW5kcyBNYW5hZ2VkQWNjb3VudCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNYW5hZ2VkUGxhdGZvcm1Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgY29uc3QgaXBhbSA9IG5ldyBJcGFtKHRoaXMsIFwiSXBhbVwiKTtcblxuICAgIG5ldyBJcGFtUG9vbCh0aGlzLCBcIklwYW1Qb29sXCIsIHtcbiAgICAgIG9yZ0FjY291bnRzOiBwcm9wcy5vcmdBY2NvdW50cyxcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgaXBhbVNjb3BlOiBpcGFtLnByaXZhdGVEZWZhdWx0U2NvcGVJZFxuICAgIH0pO1xuICB9XG59XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZFBsYXRmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9tYW5hZ2VkUGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQTZDO0FBQzdDLHNFQUFtRTtBQUVuRSxxREFBdUU7QUFNdkU7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsK0JBQWM7SUFDakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBRyxJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEMsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFaRCwwQ0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElwYW0gfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9pcGFtXCI7XG5pbXBvcnQgeyBJcGFtUG9vbCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbVBvb2xcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkQWNjb3VudCwgTWFuYWdlZEFjY291bnRQcm9wcyB9IGZyb20gXCIuL21hbmFnZWRBY2NvdW50XCI7XG5cbmludGVyZmFjZSBNYW5hZ2VkUGxhdGZvcm1Qcm9wcyBleHRlbmRzIE1hbmFnZWRBY2NvdW50UHJvcHMge1xuICBvcmdBY2NvdW50czogc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBzdGFjayBmb3IgY3JlYXRpbmcgbXVsdGkgZW52aXJvbm1lbnQgb3JnYW5pc2F0aW9ucyB3aXRoIGEgcHJvZHVjdGlvbiwgc3RhZ2luZyBhbmQgZGV2ZWxvcG1lbnQgYWNjb3VudC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmFnZWRQbGF0Zm9ybSBleHRlbmRzIE1hbmFnZWRBY2NvdW50IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRQbGF0Zm9ybVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBjb25zdCBpcGFtID0gbmV3IElwYW0odGhpcywgXCJJcGFtXCIpO1xuXG4gICAgbmV3IElwYW1Qb29sKHRoaXMsIFwiSXBhbVBvb2xcIiwge1xuICAgICAgb3JnQWNjb3VudHM6IHByb3BzLm9yZ0FjY291bnRzLFxuICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgICBpcGFtU2NvcGU6IGlwYW0ucHJpdmF0ZURlZmF1bHRTY29wZUlkXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/components-infrastructure",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "bin": {
5
5
  "infrastructure": "bin/infrastructure.js"
6
6
  },
@@ -55,7 +55,7 @@
55
55
  "dependencies": {
56
56
  "@aws-sdk/client-cost-explorer": "^3.717.0",
57
57
  "@aws-sdk/client-organizations": "^3.716.0",
58
- "@fjall/util": "^0.1.18",
58
+ "@fjall/util": "^0.1.20",
59
59
  "@pepperize/cdk-organizations": "^0.7.135",
60
60
  "aws-cdk": "^2.146.0",
61
61
  "aws-cdk-lib": "^2.146.0",
@@ -1,16 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { Group } from "../../resources/aws/iam/identityCenter/group";
3
- export interface User {
4
- email: string;
5
- firstName: string;
6
- lastName: string;
7
- groups: string[];
8
- }
9
- interface IdentityCenterUserProps {
10
- identityStoreId: string;
11
- identityCenterGroups: Group[];
12
- }
13
- export declare class IdentityCenterUser extends Construct {
14
- constructor(scope: Construct, id: string, props: IdentityCenterUserProps);
15
- }
16
- export {};
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdentityCenterUser = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const customResources = require("aws-cdk-lib/custom-resources");
6
- const constructs_1 = require("constructs");
7
- const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
8
- const usersConfig_1 = require("../../utils/usersConfig");
9
- const capitalizeString_1 = require("../../utils/capitalizeString");
10
- class IdentityCenterUser extends constructs_1.Construct {
11
- constructor(scope, id, props) {
12
- super(scope, id);
13
- const users = new usersConfig_1.default().getUsers();
14
- const identityStoreId = props.identityStoreId;
15
- const userCount = users.length;
16
- for (let i = 0; i < userCount; i++) {
17
- const user = users[i];
18
- const givenName = (0, capitalizeString_1.capitalizeString)(user.firstName);
19
- const familyName = (0, capitalizeString_1.capitalizeString)(user.lastName);
20
- const userParams = {
21
- IdentityStoreId: identityStoreId,
22
- UserName: user.email,
23
- DisplayName: `${givenName} ${familyName}`,
24
- Name: {
25
- FamilyName: user.lastName,
26
- GivenName: user.firstName
27
- },
28
- Emails: [
29
- {
30
- Primary: true,
31
- Value: user.email
32
- }
33
- ]
34
- };
35
- const createUser = new awsCustomResource_1.AwsCustomResource(this, `createUser${givenName}${familyName}`, {
36
- functionName: "createUsers",
37
- onCreate: {
38
- service: "IdentityStore",
39
- action: "createUser",
40
- parameters: userParams,
41
- physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
42
- },
43
- onUpdate: {
44
- service: "IdentityStore",
45
- action: "updateUser",
46
- parameters: userParams,
47
- physicalResourceId: customResources.PhysicalResourceId.of("updateUsers")
48
- },
49
- resourceType: "Custom::IdentityCenterUsers"
50
- });
51
- new awsCustomResource_1.AwsCustomResource(this, `deleteUser${givenName}${familyName}`, {
52
- functionName: "deleteUsers",
53
- onDelete: {
54
- service: "IdentityStore",
55
- action: "deleteUser",
56
- parameters: {
57
- IdentityStoreId: identityStoreId,
58
- UserId: createUser.getResponseField("UserId")
59
- }
60
- },
61
- resourceType: "Custom::IdentityCenterUsers"
62
- });
63
- new aws_cdk_lib_1.CfnOutput(this, `UserId${givenName}${familyName}`, {
64
- key: `UserId${givenName}${familyName}`,
65
- value: createUser.getResponseField("UserId"),
66
- exportName: `UserId${givenName}${familyName}`
67
- });
68
- // props.identityCenterGroups.forEach((identityCenterGroup))
69
- user.groups.forEach((group) => {
70
- const identityCenterGroup = props.identityCenterGroups.find((identityCenterGroup) => identityCenterGroup.displayName === group);
71
- if (!identityCenterGroup) {
72
- throw new Error(`Group ${group} does not exist in Identity Center Groups`);
73
- }
74
- const groupId = identityCenterGroup.attrGroupId;
75
- const groupName = identityCenterGroup.displayName;
76
- const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `createGroupMembership${givenName}${familyName}To${groupName}`, {
77
- functionName: "createGroupMembership",
78
- onCreate: {
79
- service: "IdentityStore",
80
- action: "createGroupMembership",
81
- parameters: {
82
- GroupId: groupId,
83
- IdentityStoreId: identityStoreId,
84
- MemberId: {
85
- UserId: createUser.getResponseField("UserId")
86
- }
87
- },
88
- physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${groupName}`)
89
- },
90
- onUpdate: {
91
- service: "IdentityStore",
92
- action: "createGroupMembership",
93
- parameters: {
94
- GroupId: groupId,
95
- IdentityStoreId: identityStoreId,
96
- MemberId: {
97
- UserId: createUser.getResponseField("UserId")
98
- }
99
- },
100
- physicalResourceId: customResources.PhysicalResourceId.of(`updateGroupMembership${groupName}`)
101
- }
102
- });
103
- new awsCustomResource_1.AwsCustomResource(this, `deleteGroupMembership${givenName}${familyName}From${groupName}`, {
104
- functionName: "deleteGroupMembership",
105
- onDelete: {
106
- service: "IdentityStore",
107
- action: "deleteGroupMembership",
108
- parameters: {
109
- IdentityStoreId: identityStoreId,
110
- MembershipId: groupMembershipId.getResponseField("MembershipId")
111
- }
112
- },
113
- resourceType: "Custom::IdentityCenterUsers"
114
- });
115
- new aws_cdk_lib_1.CfnOutput(this, `GroupMembershipId${givenName}${familyName}${groupName}`, {
116
- key: `GroupMembershipId${givenName}${familyName}${groupName}`,
117
- value: groupMembershipId.getResponseField("MembershipId"),
118
- exportName: `GroupMembershipId${givenName}${familyName}${groupName}`
119
- });
120
- });
121
- }
122
- }
123
- }
124
- exports.IdentityCenterUser = IdentityCenterUser;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJVc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJVc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QyxnRUFBZ0U7QUFDaEUsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRix5REFBa0Q7QUFFbEQsbUVBQWdFO0FBNEJoRSxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBQy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEtBQUssR0FBVyxJQUFJLHFCQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBRTlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQXlCO2dCQUN2QyxlQUFlLEVBQUUsZUFBZTtnQkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNwQixXQUFXLEVBQUUsR0FBRyxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUN6QyxJQUFJLEVBQUU7b0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN6QixTQUFTLEVBQUUs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Q0FDRjtBQXZKRCxnREF1SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgVXNlcnNDb25maWcgZnJvbSBcIi4uLy4uL3V0aWxzL3VzZXJzQ29uZmlnXCI7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9ncm91cFwiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZVN0cmluZyB9IGZyb20gXCIuLi8uLi91dGlscy9jYXBpdGFsaXplU3RyaW5nXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGZpcnN0TmFtZTogc3RyaW5nO1xuICBsYXN0TmFtZTogc3RyaW5nO1xuICBncm91cHM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgY3JlYXRlVXNlclBhcmFtZXRlcnMge1xuICBJZGVudGl0eVN0b3JlSWQ6IHN0cmluZztcbiAgVXNlck5hbWU6IHN0cmluZztcbiAgRGlzcGxheU5hbWU6IHN0cmluZztcbiAgTmFtZToge1xuICAgIEZhbWlseU5hbWU6IHN0cmluZztcbiAgICBHaXZlbk5hbWU6IHN0cmluZztcbiAgfTtcbiAgRW1haWxzOiB7XG4gICAgUHJpbWFyeTogYm9vbGVhbjtcbiAgICBWYWx1ZTogc3RyaW5nO1xuICB9W107XG59XG5cbmludGVyZmFjZSBJZGVudGl0eUNlbnRlclVzZXJQcm9wcyB7XG4gIGlkZW50aXR5U3RvcmVJZDogc3RyaW5nO1xuICBpZGVudGl0eUNlbnRlckdyb3VwczogR3JvdXBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5Q2VudGVyVXNlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJZGVudGl0eUNlbnRlclVzZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB1c2VyczogVXNlcltdID0gbmV3IFVzZXJzQ29uZmlnKCkuZ2V0VXNlcnMoKTtcbiAgICBjb25zdCBpZGVudGl0eVN0b3JlSWQgPSBwcm9wcy5pZGVudGl0eVN0b3JlSWQ7XG5cbiAgICBjb25zdCB1c2VyQ291bnQgPSB1c2Vycy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1c2VyQ291bnQ7IGkrKykge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJzW2ldO1xuICAgICAgY29uc3QgZ2l2ZW5OYW1lID0gY2FwaXRhbGl6ZVN0cmluZyh1c2VyLmZpcnN0TmFtZSk7XG4gICAgICBjb25zdCBmYW1pbHlOYW1lID0gY2FwaXRhbGl6ZVN0cmluZyh1c2VyLmxhc3ROYW1lKTtcbiAgICAgIGNvbnN0IHVzZXJQYXJhbXM6IGNyZWF0ZVVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgVXNlck5hbWU6IHVzZXIuZW1haWwsXG4gICAgICAgIERpc3BsYXlOYW1lOiBgJHtnaXZlbk5hbWV9ICR7ZmFtaWx5TmFtZX1gLFxuICAgICAgICBOYW1lOiB7XG4gICAgICAgICAgRmFtaWx5TmFtZTogdXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBHaXZlbk5hbWU6IHVzZXIuZmlyc3ROYW1lXG4gICAgICAgIH0sXG4gICAgICAgIEVtYWlsczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBWYWx1ZTogdXNlci5lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcblxuICAgICAgY29uc3QgY3JlYXRlVXNlciA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYGNyZWF0ZVVzZXIke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJjcmVhdGVVc2Vyc1wiLFxuICAgICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVVc2VyXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2NyZWF0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHVzZXJQYXJhbXMsXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJjcmVhdGVVc2Vyc1wiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcInVwZGF0ZVVzZXJcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHVzZXJQYXJhbXMsXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJ1cGRhdGVVc2Vyc1wiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBgZGVsZXRlVXNlciR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1gLCB7XG4gICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVVc2Vyc1wiLFxuICAgICAgICBvbkRlbGV0ZToge1xuICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVVc2VyXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2RlbGV0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgIFVzZXJJZDogY3JlYXRlVXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcklkXCIpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCwge1xuICAgICAgICBrZXk6IGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCxcbiAgICAgICAgdmFsdWU6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKSxcbiAgICAgICAgZXhwb3J0TmFtZTogYFVzZXJJZCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1gXG4gICAgICB9KTtcblxuICAgICAgLy8gcHJvcHMuaWRlbnRpdHlDZW50ZXJHcm91cHMuZm9yRWFjaCgoaWRlbnRpdHlDZW50ZXJHcm91cCkpXG5cbiAgICAgIHVzZXIuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkZW50aXR5Q2VudGVyR3JvdXAgPSBwcm9wcy5pZGVudGl0eUNlbnRlckdyb3Vwcy5maW5kKFxuICAgICAgICAgIChpZGVudGl0eUNlbnRlckdyb3VwKSA9PiBpZGVudGl0eUNlbnRlckdyb3VwLmRpc3BsYXlOYW1lID09PSBncm91cFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghaWRlbnRpdHlDZW50ZXJHcm91cCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBHcm91cCAke2dyb3VwfSBkb2VzIG5vdCBleGlzdCBpbiBJZGVudGl0eSBDZW50ZXIgR3JvdXBzYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cElkID0gaWRlbnRpdHlDZW50ZXJHcm91cC5hdHRyR3JvdXBJZDtcbiAgICAgICAgY29uc3QgZ3JvdXBOYW1lID0gaWRlbnRpdHlDZW50ZXJHcm91cC5kaXNwbGF5TmFtZTtcblxuICAgICAgICBjb25zdCBncm91cE1lbWJlcnNoaXBJZCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9VG8ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICBHcm91cElkOiBncm91cElkLFxuICAgICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICAgIE1lbWJlcklkOiB7XG4gICAgICAgICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke2dyb3VwTmFtZX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgR3JvdXBJZDogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgICAgVXNlcklkOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgICBgdXBkYXRlR3JvdXBNZW1iZXJzaGlwJHtncm91cE5hbWV9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBkZWxldGVHcm91cE1lbWJlcnNoaXAke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9RnJvbSR7Z3JvdXBOYW1lfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBcImRlbGV0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICAgIE1lbWJlcnNoaXBJZDogZ3JvdXBNZW1iZXJzaGlwSWQuZ2V0UmVzcG9uc2VGaWVsZChcIk1lbWJlcnNoaXBJZFwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIG5ldyBDZm5PdXRwdXQoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGBHcm91cE1lbWJlcnNoaXBJZCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX0ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgICAgdmFsdWU6IGdyb3VwTWVtYmVyc2hpcElkLmdldFJlc3BvbnNlRmllbGQoXCJNZW1iZXJzaGlwSWRcIiksXG4gICAgICAgICAgICBleHBvcnROYW1lOiBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,7 +0,0 @@
1
- import { User } from "../config/aws/identityCenterUser";
2
- export default class UsersConfig {
3
- private configFile;
4
- users: User[];
5
- constructor();
6
- getUsers(): User[];
7
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs = require("fs");
4
- class UsersConfig {
5
- constructor() {
6
- this.configFile = "fjall/users-config.json";
7
- if (!fs.existsSync(this.configFile)) {
8
- throw new Error(`Config file ${this.configFile} does not exist`);
9
- }
10
- const fileContent = fs.readFileSync(this.configFile, "utf-8");
11
- this.users = JSON.parse(fileContent);
12
- }
13
- getUsers() {
14
- return this.users;
15
- }
16
- }
17
- exports.default = UsersConfig;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnNDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvdXNlcnNDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBeUI7QUFHekIsTUFBcUIsV0FBVztJQUk5QjtRQUhRLGVBQVUsR0FBRyx5QkFBeUIsQ0FBQztRQUk3QyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxVQUFVLGlCQUFpQixDQUFDLENBQUM7U0FDbEU7UUFFRCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQWhCRCw4QkFnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiLi4vY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlclVzZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlcnNDb25maWcge1xuICBwcml2YXRlIGNvbmZpZ0ZpbGUgPSBcImZqYWxsL3VzZXJzLWNvbmZpZy5qc29uXCI7XG4gIHB1YmxpYyB1c2VyczogVXNlcltdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmNvbmZpZ0ZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZyBmaWxlICR7dGhpcy5jb25maWdGaWxlfSBkb2VzIG5vdCBleGlzdGApO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHRoaXMuY29uZmlnRmlsZSwgXCJ1dGYtOFwiKTtcbiAgICB0aGlzLnVzZXJzID0gSlNPTi5wYXJzZShmaWxlQ29udGVudCk7XG4gIH1cblxuICBnZXRVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy51c2VycztcbiAgfVxufVxuIl19