package io.cattle.platform.iaas.api.auth.identity; import io.cattle.platform.api.auth.Identity; import io.cattle.platform.core.constants.AccountConstants; import io.cattle.platform.core.constants.ProjectConstants; import io.cattle.platform.core.model.Account; import io.github.ibuildthecloud.gdapi.context.ApiContext; import io.github.ibuildthecloud.gdapi.id.IdFormatter; import io.github.ibuildthecloud.gdapi.model.Resource; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.response.ResourceOutputFilter; public class AccountOutputFilter implements ResourceOutputFilter { @Override public Resource filter(ApiRequest request, Object original, Resource converted) { IdFormatter idFormatter = ApiContext.getContext().getIdFormatter(); Identity identity = null; if (original instanceof Account) { Account account = (Account) original; if (AccountConstants.PROJECT_KIND.equalsIgnoreCase(account.getKind())) { return converted; } if (account.getExternalId() != null && account.getExternalIdType() != null) { identity = new Identity(account.getExternalIdType(), account.getExternalId()); } else { if (!AccountConstants.PROJECT_KIND.equalsIgnoreCase(account.getKind())) { identity = new Identity(ProjectConstants.RANCHER_ID, String.valueOf(account.getId())); } } } if (identity != null) { if (idFormatter != null) { converted.getFields().put("identity", idFormatter.formatId("identity", identity.getId())); } else { converted.getFields().put("identity", identity.getId()); } } return converted; } @Override public String[] getTypes() { return new String[0]; } @Override public Class<?>[] getTypeClasses() { return new Class<?>[] { Account.class }; } }