func()

in controllers/clusterkeycloakrealm/chain/put_realm_settings.go [24:77]


func (h PutRealmSettings) ServeRequest(ctx context.Context, realm *v1alpha1.ClusterKeycloakRealm, kClient keycloak.Client) error {
	log := ctrl.LoggerFrom(ctx)
	log.Info("Start updating of keycloak realm settings")

	if realm.Spec.RealmEventConfig != nil {
		if err := kClient.SetRealmEventConfig(realm.Spec.RealmName, &adapter.RealmEventConfig{
			AdminEventsDetailsEnabled: realm.Spec.RealmEventConfig.AdminEventsDetailsEnabled,
			AdminEventsEnabled:        realm.Spec.RealmEventConfig.AdminEventsEnabled,
			EnabledEventTypes:         realm.Spec.RealmEventConfig.EnabledEventTypes,
			EventsEnabled:             realm.Spec.RealmEventConfig.EventsEnabled,
			EventsExpiration:          realm.Spec.RealmEventConfig.EventsExpiration,
			EventsListeners:           realm.Spec.RealmEventConfig.EventsListeners,
		}); err != nil {
			return fmt.Errorf("failed to set realm event config: %w", err)
		}
	}

	settings := adapter.RealmSettings{
		FrontendURL:     realm.Spec.FrontendURL,
		DisplayHTMLName: realm.Spec.DisplayHTMLName,
		DisplayName:     realm.Spec.DisplayName,
	}

	if realm.Spec.Themes != nil {
		settings.Themes = &adapter.RealmThemes{
			EmailTheme:        realm.Spec.Themes.EmailTheme,
			AdminConsoleTheme: realm.Spec.Themes.AdminConsoleTheme,
			AccountTheme:      realm.Spec.Themes.AccountTheme,
			LoginTheme:        realm.Spec.Themes.LoginTheme,
		}
	}

	if realm.Spec.Localization != nil {
		settings.Themes.InternationalizationEnabled = realm.Spec.Localization.InternationalizationEnabled
	}

	if realm.Spec.BrowserSecurityHeaders != nil {
		settings.BrowserSecurityHeaders = realm.Spec.BrowserSecurityHeaders
	}

	if len(realm.Spec.PasswordPolicies) > 0 {
		settings.PasswordPolicies = h.makePasswordPolicies(realm.Spec.PasswordPolicies)
	}

	settings.TokenSettings = adapter.ToRealmTokenSettings(realm.Spec.TokenSettings)

	if err := kClient.UpdateRealmSettings(realm.Spec.RealmName, &settings); err != nil {
		return errors.Wrap(err, "unable to update realm settings")
	}

	log.Info("Realm settings is updating done.")

	return nil
}