haven-secrets-core
Version:
Core for Haven, the easy to use centralized secrets manager.
27 lines (22 loc) • 1.06 kB
JavaScript
import listGroupsForUser from "../aws/iam/users/listGroupsForUser.js";
import revokeUserFromGroups from "./revokeUserFromGroups.js";
import getUserAccessKey from "../aws/iam/users/getUserAccessKey.js";
import deleteUserAccessKey from "../aws/iam/users/deleteUserAccessKey.js";
import deleteUser from "../aws/iam/users/deleteUser.js";
import deleteInlinePolicy from "../aws/iam/policies/deleteInlinePolicy.js";
import { listGroupsForUserPolicyName } from "../utils/config.js";
const revokeUser = async (username) => {
try {
const list = await listGroupsForUser(username);
const groupNames = list.Groups.map(({ GroupName }) => GroupName);
revokeUserFromGroups(username, ...groupNames);
const accessKeyId = await getUserAccessKey(username);
if (accessKeyId) await deleteUserAccessKey(accessKeyId, username);
await deleteInlinePolicy(listGroupsForUserPolicyName, username);
return await deleteUser(username);
} catch (error) {
console.log(`${error.code}: ${error.message}`);
return error;
}
};
export default revokeUser;