UNPKG

aws-iam-policy-tool

Version:
46 lines (45 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const operation_1 = require("./operation"); async function diffAttachedPolicies(roleName, newPolicies) { const currentPolicies = await operation_1.getAttachedPoliciesByRole(roleName); const unchangedPolicies = []; const detachingPolicies = []; currentPolicies.forEach(policy => { if (containPolicy(newPolicies, policy)) { unchangedPolicies.push({ RoleName: roleName, PolicyArn: policy.PolicyArn, }); } else { detachingPolicies.push({ RoleName: roleName, PolicyArn: policy.PolicyArn, }); } }); const attachingPolicies = []; newPolicies.forEach(policy => { if (!containPolicy(unchangedPolicies, policy)) { attachingPolicies.push({ RoleName: roleName, PolicyArn: policy.PolicyArn, }); } }); return { attaching: attachingPolicies, detaching: detachingPolicies, unchanged: unchangedPolicies, }; } exports.diffAttachedPolicies = diffAttachedPolicies; function containPolicy(target, expected) { for (let item of target) { if (item.PolicyArn === expected.PolicyArn) return true; } return false; } exports.containPolicy = containPolicy;