package io.cattle.platform.api.settings.manager; import io.cattle.platform.api.auth.Policy; import io.cattle.platform.api.settings.model.ActiveSetting; import io.cattle.platform.api.utils.ApiUtils; import io.cattle.platform.core.model.Setting; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.util.RequestUtils; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.collections.Predicate; public class SettingsFilter implements Predicate { Set<String> publicSettings; boolean all; boolean canListAll; public SettingsFilter(List<String> publicSettings, ApiRequest apiRequest) { String value = null; Map<String, Object> params = apiRequest == null ? null : apiRequest.getRequestParams(); if (params != null) { value = RequestUtils.getSingularStringValue("all", params); } this.publicSettings = new HashSet<>(publicSettings); this.all = value == null || !value.toString().equalsIgnoreCase("false"); this.canListAll = "true".equals(ApiUtils.getPolicy().getOption(Policy.LIST_ALL_SETTINGS)); } @Override public boolean evaluate(Object object) { String name = null; if (object instanceof ActiveSetting) { name = ((ActiveSetting) object).getName(); } else if (object instanceof Setting) { name = ((Setting) object).getName(); } if (name == null) { return false; } if (all && canListAll) { return true; } ActiveSetting setting = (ActiveSetting) object; return publicSettings.contains(setting.getName()); } }