@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
75 lines (74 loc) • 3.02 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const services_1 = __importDefault(require("../../enums/services"));
const regions_1 = require("../../enums/regions");
/**
* Cognito Identity Pool
*/
exports.default = ({ service: identityPool, data, region, }) => {
const connections = [];
const { IdentityPoolId: id, identityPoolRoles, SamlProviderARNs = [], OpenIdConnectProviderARNs = [], } = identityPool;
/**
* Find related IAM Roles
*/
const roles = data.find(({ name }) => name === services_1.default.iamRole);
const iamRoleArns = Object.values(identityPoolRoles?.Roles || {});
if (roles?.data?.[regions_1.globalRegionName]) {
const dataAtRegion = roles.data[regions_1.globalRegionName].filter(role => iamRoleArns.includes(role.Arn));
if (!lodash_1.isEmpty(dataAtRegion)) {
for (const instance of dataAtRegion) {
const { Arn: arn } = instance;
connections.push({
id: arn,
resourceType: services_1.default.iamRole,
relation: 'child',
field: 'iamRoles',
});
}
}
}
/**
* Find iamSamlProvider
* related to this cognito identity pool
*/
const iamSamlProviders = data.find(({ name }) => name === services_1.default.iamSamlProvider);
if (iamSamlProviders?.data?.[region]) {
const dataInRegion = iamSamlProviders.data[region].filter(provider => SamlProviderARNs.includes(provider.arn));
if (!lodash_1.isEmpty(dataInRegion)) {
for (const provider of dataInRegion) {
connections.push({
id: provider.KeyId,
resourceType: services_1.default.iamSamlProvider,
relation: 'child',
field: 'iamSamlProviders',
});
}
}
}
/**
* Find iamOpenIdConnectProvider
* related to this cognito identity pool
*/
const iamOpenIdConnectProviders = data.find(({ name }) => name === services_1.default.iamOpenIdConnectProvider);
if (iamOpenIdConnectProviders?.data?.[region]) {
const dataInRegion = iamOpenIdConnectProviders.data[region].filter(provider => OpenIdConnectProviderARNs.includes(provider.arn));
if (!lodash_1.isEmpty(dataInRegion)) {
for (const provider of dataInRegion) {
connections.push({
id: provider.KeyId,
resourceType: services_1.default.iamOpenIdConnectProvider,
relation: 'child',
field: 'iamOpenIdConnectProviders',
});
}
}
}
const identityPoolResult = {
[id]: connections,
};
return identityPoolResult;
};