package org.apereo.cas.web.flow; import org.apereo.cas.authentication.principal.Response; import org.apereo.cas.authentication.principal.ResponseBuilderLocator; import org.apereo.cas.authentication.principal.WebApplicationService; import org.apereo.cas.web.support.WebUtils; import org.springframework.webflow.action.AbstractAction; import org.springframework.webflow.action.EventFactorySupport; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; /** * This is {@link RedirectToServiceAction}. * * @author Misagh Moayyed * @since 5.1.0 */ public class RedirectToServiceAction extends AbstractAction { private final ResponseBuilderLocator responseBuilderLocator; public RedirectToServiceAction(final ResponseBuilderLocator responseBuilderLocator) { this.responseBuilderLocator = responseBuilderLocator; } @Override protected Event doExecute(final RequestContext requestContext) throws Exception { final WebApplicationService service = WebUtils.getService(requestContext); final String serviceTicketId = WebUtils.getServiceTicketFromRequestScope(requestContext); final Response response = responseBuilderLocator.locate(service).build(service, serviceTicketId); WebUtils.putServiceResponseIntoRequestScope(requestContext, response); WebUtils.putServiceOriginalUrlIntoRequestScope(requestContext, service); return new EventFactorySupport().event(this, response.getResponseType().name().toLowerCase()); } }