func()

in app/registry/admins.go [137:174]


func (a *Admins) adminRemoveFromGroupsAndRoles(ctx context.Context, registryName string, u *keycloak.KeycloakRealmUser) error {
	groupRemoved, roleRemoved := false, false
	var newGroups, newRoles []string

	for _, g := range u.Spec.Groups {
		if g == userGroupRoleNameFromRegistry(registryName) {
			groupRemoved = true
			continue
		}

		newGroups = append(newGroups, g)
	}

	if groupRemoved {
		u.Spec.Groups = newGroups
	}

	for _, r := range u.Spec.Roles {
		if r == userGroupRoleNameFromRegistry(registryName) {
			roleRemoved = true
			continue
		}

		newRoles = append(newRoles, r)
	}

	if roleRemoved {
		u.Spec.Roles = newRoles
	}

	if groupRemoved || roleRemoved {
		if err := a.keycloakService.UpdateUser(ctx, u); err != nil {
			return errors.Wrap(err, "unable to update user")
		}
	}

	return nil
}