/* * The contents of this file are subject to the terms of the Common Development and * Distribution License (the License). You may not use this file except in compliance with the * License. * * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the * specific language governing permission and limitations under the License. * * When distributing Covered Software, include this CDDL Header Notice in each file and include * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL * Header, with the fields enclosed by brackets [] replaced by your own identifying * information: "Portions copyright [year] [name of copyright owner]". * * Copyright 2015-2016 ForgeRock AS. */ package com.sun.identity.console; import com.iplanet.jato.CompleteRequestException; import com.iplanet.jato.RequestContext; import com.iplanet.jato.RequestManager; import com.iplanet.jato.view.ViewBeanBase; import com.sun.identity.console.base.model.AMAdminConstants; import org.forgerock.guice.core.InjectorHolder; import org.forgerock.openam.services.baseurl.BaseURLProviderFactory; import org.forgerock.openam.xui.XUIState; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.text.MessageFormat; /** * Helper for redirecting back to the XUI. * * @since 13.0.0 */ public final class XuiRedirectHelper { private static final String XUI_CONSOLE_BASE_PAGE = "{0}/XUI/#{1}"; private XuiRedirectHelper() { } /** * Redirects to the XUI to the specified realm and hash. * * @param request Used to determine the OpenAM deployment URI. * @param redirectRealm The realm. * @param xuiHash The XUI location hash. */ public static void redirectToXui(HttpServletRequest request, String redirectRealm, String xuiHash) { String deploymentUri = InjectorHolder.getInstance(BaseURLProviderFactory.class).get(redirectRealm) .getRootURL(request); String redirect = MessageFormat.format(XUI_CONSOLE_BASE_PAGE, deploymentUri, xuiHash); RequestContext rc = RequestManager.getRequestContext(); try { rc.getResponse().sendRedirect(redirect); throw new CompleteRequestException(); } catch (IOException e) { //never thrown, empty catch } } /** * Gets the realm to redirect to from the JATO page session. * * @param viewBean The view bean. * @return The redirect realm. */ public static String getRedirectRealm(ViewBeanBase viewBean) { String redirectRealm = (String) viewBean.getPageSessionAttribute(AMAdminConstants.CURRENT_REALM); if (redirectRealm == null) { redirectRealm = (String) viewBean.getPageSessionAttribute(AMAdminConstants.CURRENT_PROFILE); } return redirectRealm; } /** * Determines if request is from XUI to get a JATO page session. * * @param request The request. * @return {@code true} if the request is from the XUI, {@code false} otherwise. */ public static boolean isJatoSessionRequestFromXUI(HttpServletRequest request) { return "XUI".equals(request.getParameter("requester")); } /** * Determines if the XUI admin console is enabled. * * @return {@code true} if the XUI admin console is enabled, {@code false} otherwise. */ public static boolean isXuiAdminConsoleEnabled() { return InjectorHolder.getInstance(XUIState.class).isXUIAdminEnabled(); } }