in pkg/client/keycloak/adapter/gocloak_adapter_client_scope.go [227:267]
func (a GoCloakAdapter) syncClientScopeProtocolMappers(ctx context.Context, realm, scopeID string,
instanceProtocolMappers []ProtocolMapper) error {
scope, err := a.client.GetClientScope(ctx, a.token.AccessToken, realm, scopeID)
if err != nil {
return errors.Wrap(err, "unable to get client scope")
}
if scope.ProtocolMappers != nil {
for _, pm := range *scope.ProtocolMappers {
rsp, err := a.startRestyRequest().
SetContext(ctx).
SetPathParams(map[string]string{
keycloakApiParamRealm: realm,
keycloakApiParamClientScopeId: scopeID,
"protocolMapperID": *pm.ID,
}).
Delete(a.buildPath(deleteClientScopeProtocolMapper))
if err = a.checkError(err, rsp); err != nil {
return errors.Wrap(err, "error during client scope protocol mapper deletion")
}
}
}
for _, pm := range instanceProtocolMappers {
rsp, err := a.startRestyRequest().
SetContext(ctx).
SetPathParams(map[string]string{
keycloakApiParamRealm: realm,
keycloakApiParamClientScopeId: scopeID,
}).
SetBody(&pm).
Post(a.buildPath(createClientScopeProtocolMapper))
if err = a.checkError(err, rsp); err != nil {
return errors.Wrap(err, "error during client scope protocol mapper creation")
}
}
return nil
}