in controllers/keycloakrealmidentityprovider/keycloakrealmidentityprovider_controller.go [213:242]
func syncIDPMappers(ctx context.Context, idpSpec *keycloakApi.KeycloakRealmIdentityProviderSpec,
kClient keycloak.Client, targetRealm string) error {
if len(idpSpec.Mappers) == 0 {
return nil
}
mappers, err := kClient.GetIDPMappers(ctx, targetRealm, idpSpec.Alias)
if err != nil {
return errors.Wrap(err, "unable to get idp mappers")
}
for _, m := range mappers {
if err := kClient.DeleteIDPMapper(ctx, targetRealm, idpSpec.Alias, m.ID); err != nil {
return errors.Wrap(err, "unable to delete idp mapper")
}
}
for _, m := range idpSpec.Mappers {
if m.IdentityProviderAlias == "" {
m.IdentityProviderAlias = idpSpec.Alias
}
if _, err := kClient.CreateIDPMapper(ctx, targetRealm, idpSpec.Alias,
createKeycloakIDPMapperFromSpec(&m)); err != nil {
return errors.Wrap(err, "unable to create idp mapper")
}
}
return nil
}