import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Format } from '../abstract-action.handler'; import { Action } from '../action.enum'; import { AwsSharedEntitiesModule } from '../aws-shared-entities/aws-shared-entities.module'; import { DefaultActionHandlerProvider } from '../default-action-handler/default-action-handler.provider'; import { ExistingActionHandlersProvider } from '../default-action-handler/existing-action-handlers.provider'; import { AttachRolePolicyHandler } from './attach-role-policy.handler'; import { CreatePolicyVersionHandler } from './create-policy-version.handler'; import { CreatePolicyHandler } from './create-policy.handler'; import { CreateRoleHandler } from './create-role.handler'; import { GetPolicyVersionHandler } from './get-policy-version.handler'; import { GetPolicyHandler } from './get-policy.handler'; import { GetRoleHandler } from './get-role.handler'; import { IamPolicy } from './iam-policy.entity'; import { IamRolePolicyAttachment } from './iam-role-policy-attachment.entity'; import { IamRole } from './iam-role.entity'; import { IAMHandlers } from './iam.constants'; import { ListAttachedRolePoliciesHandler } from './list-attached-role-policies'; import { ListRolePoliciesHandler } from './list-role-policies.handler'; const handlers = [ AttachRolePolicyHandler, CreatePolicyHandler, CreatePolicyVersionHandler, CreateRoleHandler, GetPolicyHandler, GetRoleHandler, GetPolicyVersionHandler, ListAttachedRolePoliciesHandler, ListRolePoliciesHandler, ] const actions = [ Action.IamAddClientIDToOpenIDConnectProvider, Action.IamAddRoleToInstanceProfile, Action.IamAddUserToGroup, Action.IamAttachGroupPolicy, Action.IamAttachRolePolicy, Action.IamAttachUserPolicy, Action.IamChangePassword, Action.IamCreateAccessKey, Action.IamCreateAccountAlias, Action.IamCreateGroup, Action.IamCreateInstanceProfile, Action.IamCreateLoginProfile, Action.IamCreateOpenIDConnectProvider, Action.IamCreatePolicy, Action.IamCreatePolicyVersion, Action.IamCreateRole, Action.IamCreateSAMLProvider, Action.IamCreateServiceLinkedRole, Action.IamCreateServiceSpecificCredential, Action.IamCreateUser, Action.IamCreateVirtualMFADevice, Action.IamDeactivateMFADevice, Action.IamDeleteAccessKey, Action.IamDeleteAccountAlias, Action.IamDeleteAccountPasswordPolicy, Action.IamDeleteGroup, Action.IamDeleteGroupPolicy, Action.IamDeleteInstanceProfile, Action.IamDeleteLoginProfile, Action.IamDeleteOpenIDConnectProvider, Action.IamDeletePolicy, Action.IamDeletePolicyVersion, Action.IamDeleteRole, Action.IamDeleteRolePermissionsBoundary, Action.IamDeleteRolePolicy, Action.IamDeleteSAMLProvider, Action.IamDeleteServerCertificate, Action.IamDeleteServiceLinkedRole, Action.IamDeleteServiceSpecificCredential, Action.IamDeleteSigningCertificate, Action.IamDeleteSSHPublicKey, Action.IamDeleteUser, Action.IamDeleteUserPermissionsBoundary, Action.IamDeleteUserPolicy, Action.IamDeleteVirtualMFADevice, Action.IamDetachGroupPolicy, Action.IamDetachRolePolicy, Action.IamDetachUserPolicy, Action.IamEnableMFADevice, Action.IamGenerateCredentialReport, Action.IamGenerateOrganizationsAccessReport, Action.IamGenerateServiceLastAccessedDetails, Action.IamGetAccessKeyLastUsed, Action.IamGetAccountAuthorizationDetails, Action.IamGetAccountPasswordPolicy, Action.IamGetAccountSummary, Action.IamGetContextKeysForCustomPolicy, Action.IamGetContextKeysForPrincipalPolicy, Action.IamGetCredentialReport, Action.IamGetGroup, Action.IamGetGroupPolicy, Action.IamGetInstanceProfile, Action.IamGetLoginProfile, Action.IamGetOpenIDConnectProvider, Action.IamGetOrganizationsAccessReport, Action.IamGetPolicy, Action.IamGetPolicyVersion, Action.IamGetRole, Action.IamGetRolePolicy, Action.IamGetSAMLProvider, Action.IamGetServerCertificate, Action.IamGetServiceLastAccessedDetails, Action.IamGetServiceLastAccessedDetailsWithEntities, Action.IamGetServiceLinkedRoleDeletionStatus, Action.IamGetSSHPublicKey, Action.IamGetUser, Action.IamGetUserPolicy, Action.IamListAccessKeys, Action.IamListAccountAliases, Action.IamListAttachedGroupPolicies, Action.IamListAttachedRolePolicies, Action.IamListAttachedUserPolicies, Action.IamListEntitiesForPolicy, Action.IamListGroupPolicies, Action.IamListGroups, Action.IamListGroupsForUser, Action.IamListInstanceProfiles, Action.IamListInstanceProfilesForRole, Action.IamListInstanceProfileTags, Action.IamListMFADevices, Action.IamListMFADeviceTags, Action.IamListOpenIDConnectProviders, Action.IamListOpenIDConnectProviderTags, Action.IamListPolicies, Action.IamListPoliciesGrantingServiceAccess, Action.IamListPolicyTags, Action.IamListPolicyVersions, Action.IamListRolePolicies, Action.IamListRoles, Action.IamListRoleTags, Action.IamListSAMLProviders, Action.IamListSAMLProviderTags, Action.IamListServerCertificates, Action.IamListServerCertificateTags, Action.IamListServiceSpecificCredentials, Action.IamListSigningCertificates, Action.IamListSSHPublicKeys, Action.IamListUserPolicies, Action.IamListUsers, Action.IamListUserTags, Action.IamListVirtualMFADevices, Action.IamPutGroupPolicy, Action.IamPutRolePermissionsBoundary, Action.IamPutRolePolicy, Action.IamPutUserPermissionsBoundary, Action.IamPutUserPolicy, Action.IamRemoveClientIDFromOpenIDConnectProvider, Action.IamRemoveRoleFromInstanceProfile, Action.IamRemoveUserFromGroup, Action.IamResetServiceSpecificCredential, Action.IamResyncMFADevice, Action.IamSetDefaultPolicyVersion, Action.IamSetSecurityTokenServicePreferences, Action.IamSimulateCustomPolicy, Action.IamSimulatePrincipalPolicy, Action.IamTagInstanceProfile, Action.IamTagMFADevice, Action.IamTagOpenIDConnectProvider, Action.IamTagPolicy, Action.IamTagRole, Action.IamTagSAMLProvider, Action.IamTagServerCertificate, Action.IamTagUser, Action.IamUntagInstanceProfile, Action.IamUntagMFADevice, Action.IamUntagOpenIDConnectProvider, Action.IamUntagPolicy, Action.IamUntagRole, Action.IamUntagSAMLProvider, Action.IamUntagServerCertificate, Action.IamUntagUser, Action.IamUpdateAccessKey, Action.IamUpdateAccountPasswordPolicy, Action.IamUpdateAssumeRolePolicy, Action.IamUpdateGroup, Action.IamUpdateLoginProfile, Action.IamUpdateOpenIDConnectProviderThumbprint, Action.IamUpdateRole, Action.IamUpdateRoleDescription, Action.IamUpdateSAMLProvider, Action.IamUpdateServerCertificate, Action.IamUpdateServiceSpecificCredential, Action.IamUpdateSigningCertificate, Action.IamUpdateSSHPublicKey, Action.IamUpdateUser, Action.IamUploadServerCertificate, Action.IamUploadSigningCertificate, Action.IamUploadSSHPublicKey, ] @Module({ imports: [ TypeOrmModule.forFeature([IamPolicy, IamRole, IamRolePolicyAttachment]), AwsSharedEntitiesModule, ], providers: [ ...handlers, ExistingActionHandlersProvider(handlers), DefaultActionHandlerProvider(IAMHandlers, Format.Xml, actions), ], exports: [IAMHandlers], }) export class IamModule {}