package org.apereo.cas.support.oauth.web.response; import org.apereo.cas.CasProtocolConstants; import org.jasig.cas.client.util.CommonUtils; import org.pac4j.cas.client.CasClient; import org.pac4j.cas.config.CasConfiguration; import org.pac4j.core.context.WebContext; import org.pac4j.core.redirect.RedirectAction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This is {@link OAuth20DefaultCasClientRedirectActionBuilder}. * * @author Misagh Moayyed * @since 5.0.0 */ public class OAuth20DefaultCasClientRedirectActionBuilder implements OAuth20CasClientRedirectActionBuilder { private static final Logger LOGGER = LoggerFactory.getLogger(OAuth20DefaultCasClientRedirectActionBuilder.class); @Override public RedirectAction build(final CasClient casClient, final WebContext context) { try { final CasConfiguration casConfiguration = casClient.getConfiguration(); final String redirectionUrl = CommonUtils.constructRedirectUrl(casConfiguration.getLoginUrl(), CasProtocolConstants.PARAMETER_SERVICE, casClient.computeFinalCallbackUrl(context), casConfiguration.isRenew(), casConfiguration.isGateway()); LOGGER.debug("Final redirect url is [{}]", redirectionUrl); return RedirectAction.redirect(redirectionUrl); } catch (final Exception e) { throw new IllegalArgumentException(e); } } }