func()

in controllers/keycloakclient/keycloakclient_controller.go [159:202]


func (r *ReconcileKeycloakClient) applyDefaults(ctx context.Context, keycloakClient *keycloakApi.KeycloakClient) (bool, error) {
	if keycloakClient.Spec.Attributes == nil {
		keycloakClient.Spec.Attributes = make(map[string]string)
	}

	updated := false

	if _, ok := keycloakClient.Spec.Attributes[clientAttributeLogoutRedirectUris]; !ok {
		// set default value for logout redirect uris to "+" is required for correct logout from keycloak
		keycloakClient.Spec.Attributes[clientAttributeLogoutRedirectUris] = clientAttributeLogoutRedirectUrisDefValue
		updated = true
	}

	if keycloakClient.Spec.RealmRef.Name == "" {
		realmName, err := r.getKeycloakCRName(ctx, keycloakClient.Spec.TargetRealm, keycloakClient.Namespace)
		if err != nil {
			return false, fmt.Errorf("unable to get keycloak cr name: %w", err)
		}

		keycloakClient.Spec.RealmRef = common.RealmRef{
			Kind: keycloakApi.KeycloakRealmKind,
			Name: realmName,
		}
		updated = true
	}

	if keycloakClient.Spec.WebOrigins == nil {
		keycloakClient.Spec.WebOrigins = []string{
			keycloakClient.Spec.WebUrl,
		}

		updated = true
	}

	if updated {
		if err := r.client.Update(ctx, keycloakClient); err != nil {
			return false, fmt.Errorf("failed to update keycloak client default values: %w", err)
		}

		return true, nil
	}

	return false, nil
}