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
}