func()

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
}