package io.cattle.platform.iaas.api.auth.integration.azure;
import io.cattle.platform.core.model.Account;
import io.cattle.platform.iaas.api.auth.AbstractTokenUtil;
import io.cattle.platform.object.util.DataAccessor;
import io.github.ibuildthecloud.gdapi.context.ApiContext;
import io.github.ibuildthecloud.gdapi.request.ApiRequest;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
public class AzureTokenUtil extends AbstractTokenUtil {
@Override
protected String accessMode() {
return AzureConstants.ACCESS_MODE.get();
}
@Override
protected String accessToken() {
return AzureConstants.AZURE_ACCESS_TOKEN;
}
@Override
protected void postAuthModification(Account account) {
if(account != null) {
ApiRequest request = ApiContext.getContext().getApiRequest();
String accessToken = (String) request.getAttribute(AzureConstants.AZURE_ACCESS_TOKEN);
String refreshToken = (String) request.getAttribute(AzureConstants.AZURE_REFRESH_TOKEN);
DataAccessor.fields(account).withKey(AzureConstants.AZURE_ACCESS_TOKEN).set(accessToken);
DataAccessor.fields(account).withKey(AzureConstants.AZURE_REFRESH_TOKEN).set(refreshToken);
getObjectManager().persist(account);
}
}
protected void refreshAccessToken() {
if (findAndSetJWT()) {
Account account = getAccountFromJWT();
postAuthModification(account);
}
}
@Override
public String userType() {
return AzureConstants.USER_SCOPE;
}
@Override
public boolean createAccount() {
return true;
}
@Override
protected boolean isWhitelisted(List<String> idList) {
//TODO Real white listing needed.
return true;
}
public List<String> fromCommaSeparatedString(String string) {
if (StringUtils.isEmpty(string)) {
return new ArrayList<>();
}
List<String> strings = new ArrayList<>();
String[] splitted = string.split(",");
for (String aSplitted : splitted) {
String element = aSplitted.trim();
strings.add(element);
}
return strings;
}
@Override
public String tokenType() {
return AzureConstants.AZURE_JWT;
}
@Override
public String getName() {
return AzureConstants.CONFIG;
}
}