package io.cattle.platform.iaas.api.filter.externalevent; import io.cattle.platform.api.auth.Policy; import io.cattle.platform.api.utils.ApiUtils; import io.cattle.platform.core.model.Agent; import io.cattle.platform.iaas.api.filter.common.AbstractDefaultResourceManagerFilter; import io.cattle.platform.object.ObjectManager; import io.github.ibuildthecloud.gdapi.exception.ClientVisibleException; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.request.resource.ResourceManager; import io.github.ibuildthecloud.gdapi.util.ResponseCodes; import javax.inject.Inject; public class ExternalEventFilter extends AbstractDefaultResourceManagerFilter { public static final String VERIFY_AGENT = "CantVerifyAgent"; @Inject ObjectManager objectManager; @Override public String[] getTypes() { return new String[] { "externalEvent", "externalStoragePoolEvent", "externalVolumeEvent", "externalServiceEvent" }; } @Override public Object create(String type, ApiRequest request, ResourceManager next) { Policy policy = ApiUtils.getPolicy(); Agent agent = objectManager.loadResource(Agent.class, policy.getOption(Policy.AGENT_ID)); if (agent == null) { throw new ClientVisibleException(ResponseCodes.FORBIDDEN, VERIFY_AGENT); } return super.create(type, request, next); } }