func()

in controllers/keycloakrealm/chain/realm.go [60:87]


func (h PutRealm) putRealmRoles(realm *keycloakApi.KeycloakRealm, kClient keycloak.Client) error {
	allRoles := make(map[string]string)
	// check if all user roles exists
	for _, u := range realm.Spec.Users {
		for _, rr := range u.RealmRoles {
			if _, ok := allRoles[rr]; !ok {
				allRoles[rr] = rr
			}
		}
	}

	dtoRealm := dto.ConvertSpecToRealm(&realm.Spec)

	for _, r := range allRoles {
		exists, err := kClient.ExistRealmRole(dtoRealm.Name, r)
		if err != nil {
			return errors.Wrap(err, "unable to check realm role existence")
		}

		if !exists {
			if err := kClient.CreateIncludedRealmRole(dtoRealm.Name, &dto.IncludedRealmRole{Name: r}); err != nil {
				return errors.Wrap(err, "unable to create new realm role")
			}
		}
	}

	return nil
}