aws-iam-policy-tool
Version:
AWS IAM role/policy management cli tool
46 lines (45 loc) • 1.42 kB
JavaScript
;
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;