package org.apereo.cas.web.flow;
import org.apache.commons.lang3.StringUtils;
import org.apereo.cas.authentication.Credential;
import org.apereo.cas.authentication.UsernamePasswordCredential;
import org.apereo.cas.web.support.WebUtils;
import org.springframework.webflow.action.AbstractAction;
import org.springframework.webflow.execution.Event;
import org.springframework.webflow.execution.RequestContext;
/**
* This is {@link SurrogateSelectionAction}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public class SurrogateSelectionAction extends AbstractAction {
private final String separator;
public SurrogateSelectionAction(final String separator) {
this.separator = separator;
}
@Override
protected Event doExecute(final RequestContext requestContext) throws Exception {
final Credential credential = WebUtils.getCredential(requestContext);
if (credential instanceof UsernamePasswordCredential) {
final UsernamePasswordCredential upc = UsernamePasswordCredential.class.cast(credential);
final String target = requestContext.getExternalContext().getRequestParameterMap().get("surrogateTarget");
if (StringUtils.isNotBlank(target)) {
upc.setUsername(target + this.separator + upc.getUsername());
}
}
return success();
}
}