providers/azuread/app_role_assignment.go (66 lines of code) (raw):

// AppRoleAssignmentServiceGenerator package azuread import ( "context" "fmt" "log" "github.com/manicminer/hamilton/msgraph" "github.com/manicminer/hamilton/odata" ) type AppRoleAssignmentServiceGenerator struct { AzureADService } func (az *AppRoleAssignmentServiceGenerator) listResources() ([]msgraph.AppRoleAssignment, error) { client, fail := az.getAppRoleAssignmentsClient() servicePrincipalsClient, err := az.getServicePrincipalsClient() if err != nil { return nil, err } client.BaseClient.DisableRetries = true var resources []msgraph.AppRoleAssignment if fail != nil { return nil, fail } ctx := context.Background() servicePrincipals, _, spErr := servicePrincipalsClient.List(ctx, odata.Query{}) if spErr != nil { return nil, spErr } for _, sp := range *servicePrincipals { appRoleAssignments, _, araErr := client.List(ctx, *sp.ID, odata.Query{}) if araErr != nil { return nil, araErr } if appRoleAssignments == nil { continue } for _, assignment := range *appRoleAssignments { if *assignment.PrincipalType != "ServicePrincipal" { continue } if assignment.Id != nil { resources = append(resources, assignment) } } } return resources, nil } func (az *AppRoleAssignmentServiceGenerator) appendResource(resource *msgraph.AppRoleAssignment) { // {objectId}/{type}/{subId} id := fmt.Sprintf("%s/appRoleAssignment/%s", *resource.PrincipalId, *resource.Id) az.appendSimpleResource(id, *resource.PrincipalDisplayName+"-"+id, "azuread_app_role_assignment") } func (az *AppRoleAssignmentServiceGenerator) InitResources() error { resources, err := az.listResources() if err != nil { return err } for _, resource := range resources { log.Println(*resource.PrincipalDisplayName) az.appendResource(&resource) } return nil } func (az *AppRoleAssignmentServiceGenerator) GetResourceConnections() map[string][]string { return map[string][]string{ "app_role_assignment": {"id"}, } }