package io.cattle.platform.register.api;
import io.cattle.platform.core.model.Account;
import io.cattle.platform.iaas.api.auth.integration.interfaces.AccountLookup;
import io.cattle.platform.iaas.api.auth.integration.internal.rancher.BasicAuthImpl;
import io.cattle.platform.iaas.api.auth.impl.DefaultAuthorizationProvider;
import io.cattle.platform.register.auth.RegistrationAuthTokenManager;
import io.cattle.platform.register.util.RegisterConstants;
import io.github.ibuildthecloud.gdapi.request.ApiRequest;
import javax.inject.Inject;
public class RegistrationTokenAccountLookup implements AccountLookup {
RegistrationAuthTokenManager tokenManager;
@Override
public Account getAccount(ApiRequest request) {
String[] auth = BasicAuthImpl.getUsernamePassword(request);
if (auth == null) {
return null;
}
String username = auth[0];
String password = auth[1];
if (!RegisterConstants.KIND_CREDENTIAL_REGISTRATION_TOKEN.equals(username)) {
return null;
}
Account account = tokenManager.validateToken(password);
if (account == null) {
return null;
}
request.setAttribute(DefaultAuthorizationProvider.ACCOUNT_SCHEMA_FACTORY_NAME, RegisterConstants.SCHEMA_NAME);
return account;
}
@Override
public boolean challenge(ApiRequest request) {
return false;
}
public RegistrationAuthTokenManager getTokenManager() {
return tokenManager;
}
@Inject
public void setTokenManager(RegistrationAuthTokenManager tokenManager) {
this.tokenManager = tokenManager;
}
@Override
public boolean isConfigured() {
return true;
}
@Override
public String getName() {
return "RegistrationToken";
}
}