Skip to content
This repository has been archived by the owner on Oct 15, 2024. It is now read-only.

Commit

Permalink
Allow to nuke Cognito's Identity Providers
Browse files Browse the repository at this point in the history
  • Loading branch information
multani committed Jan 13, 2021
1 parent 1710d34 commit 1a0c0c3
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions resources/cognito-identity-providers.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package resources

import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/cognitoidentityprovider"
"github.com/rebuy-de/aws-nuke/pkg/types"
"github.com/sirupsen/logrus"
)

type CognitoIdentityProvider struct {
svc *cognitoidentityprovider.CognitoIdentityProvider
name *string
providerType *string
userPoolName *string
userPoolId *string
}

func init() {
register("CognitoIdentityProvider", ListCognitoIdentityProviders)
}

func ListCognitoIdentityProviders(sess *session.Session) ([]Resource, error) {
svc := cognitoidentityprovider.New(sess)

userPools, poolErr := ListCognitoUserPools(sess)
if poolErr != nil {
return nil, poolErr
}

resources := []Resource{}

for _, userPoolResource := range userPools {
userPool, ok := userPoolResource.(*CognitoUserPool)
if !ok {
logrus.Errorf("Unable to case CognitoUserPool")
continue
}

listParams := &cognitoidentityprovider.ListIdentityProvidersInput{
UserPoolId: userPool.id,
MaxResults: aws.Int64(50),
}

for {
output, err := svc.ListIdentityProviders(listParams)
if err != nil {
return nil, err
}

for _, provider := range output.Providers {
resources = append(resources, &CognitoIdentityProvider{
svc: svc,
name: provider.ProviderName,
providerType: provider.ProviderType,
userPoolName: userPool.name,
userPoolId: userPool.id,
})
}

if output.NextToken == nil {
break
}

listParams.NextToken = output.NextToken
}
}

return resources, nil
}

func (p *CognitoIdentityProvider) Remove() error {

_, err := p.svc.DeleteIdentityProvider(&cognitoidentityprovider.DeleteIdentityProviderInput{
UserPoolId: p.userPoolId,
ProviderName: p.name,
})

return err
}

func (p *CognitoIdentityProvider) Properties() types.Properties {
properties := types.NewProperties()
properties.Set("Type", p.providerType)
return properties
}

func (p *CognitoIdentityProvider) String() string {
return *p.userPoolName + " -> " + *p.name
}

0 comments on commit 1a0c0c3

Please sign in to comment.