func()

in controllers/keycloakrealm/chain/realm_settings.go [18:68]


func (h RealmSettings) ServeRequest(ctx context.Context, realm *keycloakApi.KeycloakRealm, kClient keycloak.Client) error {
	rLog := log.WithValues("realm name", realm.Spec.RealmName)
	rLog.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 errors.Wrap(err, "unable to set realm event config")
		}
	}

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

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

	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")
	}

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

	return nextServeOrNil(ctx, h.next, realm, kClient)
}