package io.cattle.platform.iaas.api.object.postinit;
import io.cattle.platform.api.auth.Policy;
import io.cattle.platform.api.utils.ApiUtils;
import io.cattle.platform.core.constants.AccountConstants;
import io.cattle.platform.object.meta.ObjectMetaDataManager;
import io.cattle.platform.object.postinit.ObjectPostInstantiationHandler;
import io.cattle.platform.object.util.ObjectUtils;
import io.cattle.platform.util.type.Priority;
import io.github.ibuildthecloud.gdapi.context.ApiContext;
import java.util.Map;
public class AccountFieldPostInitHandler implements ObjectPostInstantiationHandler, Priority {
@Override
public <T> T postProcess(T obj, Class<T> clz, Map<String, Object> properties) {
ApiContext apiContext = ApiContext.getContext();
if (apiContext == null) {
/* Back-end can do whatever it wants */
return obj;
}
Policy policy = ApiUtils.getPolicy();
boolean overwrite = true;
if (policy.isOption(Policy.AUTHORIZED_FOR_ALL_ACCOUNTS) && properties.containsKey(AccountConstants.ACCOUNT_ID)) {
overwrite = false;
}
if (overwrite) {
ObjectUtils.setPropertyIgnoreErrors(obj, ObjectMetaDataManager.ACCOUNT_FIELD, policy.getAccountId());
}
return obj;
}
@Override
public int getPriority() {
return Priority.DEFAULT;
}
}