void redirectToPrimarilyRequestedUrl( FilterChain chain, HttpServletRequest httpRequest, HttpServletResponse httpResponse, ServiceAccess serviceAccess, AuthorizationRequestData rdo) throws IOException, ServletException { String forwardUrl = (String) httpRequest.getSession().getAttribute(Constants.SESS_ATTR_FORWARD_URL); if (BesServletRequestReader.onlyServiceLogin(httpRequest.getSession())) { if (forwardUrl == null) { forwardUrl = Constants.SERVICE_BASE_URI + "/" + rdo.getSubscriptionKey() + "/"; } JSFUtils.sendRedirect(httpResponse, httpRequest.getContextPath() + forwardUrl); return; } if (ADMStringUtils.isBlank(forwardUrl) || forwardUrl.startsWith(MenuBean.LINK_DEFAULT)) { forwardUrl = getDefaultUrl(serviceAccess, rdo, httpRequest); } if ((ADMStringUtils.isBlank(forwardUrl) || rdo.getRelativePath().startsWith(forwardUrl)) && !rdo.isMarketplaceLoginPage()) { chain.doFilter(httpRequest, httpResponse); } else { JSFUtils.sendRedirect(httpResponse, httpRequest.getContextPath() + forwardUrl); } }
private HttpServletRequest handleServiceUrl( FilterChain chain, HttpServletRequest httpRequest, HttpServletResponse httpResponse, AuthorizationRequestData rdo) throws IOException, ServletException { VOMarketplace mpl; try { mpl = determineMarketplaceForSubscription(httpRequest, rdo); } catch (ObjectNotFoundException e) { logger.logError( Log4jLogger.SYSTEM_LOG, e, LogMessageIdentifier.ERROR_SUBSCRIPTION_NOT_FOUND, rdo.getSubscriptionKey()); BesServletRequestReader.setErrorAttributes(httpRequest, e); handleSubscriptionNotFound(chain, httpRequest, httpResponse, rdo); return null; } // Bug 9588: Marketplace may have been deleted if (mpl != null) { httpRequest.setAttribute( Constants.REQ_ATTR_SERVICE_LOGIN_TYPE, Constants.REQ_ATTR_LOGIN_TYPE_MPL); httpRequest .getSession() .setAttribute(Constants.REQ_PARAM_MARKETPLACE_ID, mpl.getMarketplaceId()); } else { httpRequest.setAttribute( Constants.REQ_ATTR_SERVICE_LOGIN_TYPE, Constants.REQ_ATTR_LOGIN_TYPE_NO_MPL); } String contextPath = rdo.getContextPath(); if (!ADMStringUtils.isBlank(httpRequest.getQueryString())) { contextPath += "?" + httpRequest.getQueryString(); } httpRequest.setAttribute(Constants.REQ_PARAM_SUB_KEY, rdo.getSubscriptionKey()); httpRequest.setAttribute(Constants.REQ_PARAM_CONTEXT_PATH, contextPath); return processServiceUrl( httpRequest, httpResponse, chain, rdo.getSubscriptionKey(), contextPath, rdo); }
/** Retrieve the marketplace for the given subscription in order to login */ private VOMarketplace determineMarketplaceForSubscription( HttpServletRequest httpRequest, AuthorizationRequestData rdo) throws ObjectNotFoundException { Map<String, VOMarketplace> cachedMarketplaces = getMarketplaceMapFromSession(httpRequest.getSession()); VOMarketplace mpl = cachedMarketplaces.get(rdo.getSubscriptionKey()); if (mpl == null) { MarketplaceService marketplaceService = ServiceAccess.getServiceAcccessFor(httpRequest.getSession()) .getService(MarketplaceService.class); mpl = marketplaceService.getMarketplaceForSubscription( ADMStringUtils.parseUnsignedLong(rdo.getSubscriptionKey()), "en"); // Bug 9588: Marketplace may have been deleted if (mpl != null) { cachedMarketplaces.put(rdo.getSubscriptionKey(), mpl); } } return mpl; }
private void handleNumberFormatException( FilterChain chain, HttpServletRequest httpRequest, HttpServletResponse httpResponse, NumberFormatException e, AuthorizationRequestData rdo) throws ServletException, IOException { logger.logError( Log4jLogger.SYSTEM_LOG, e, LogMessageIdentifier.ERROR_PARSE_SUBSCRIPTION_KEY_FAILED, rdo.getSubscriptionKey()); if (authSettings.isServiceProvider()) { httpRequest.setAttribute(Constants.REQ_ATTR_ERROR_KEY, BaseBean.ERROR_SUBSCRIPTION_KEY); forward(errorPage, httpRequest, httpResponse); } else { httpRequest.setAttribute(Constants.REQ_ATTR_ERROR_KEY, BaseBean.ERROR_LOGIN); forwardToLoginPage(rdo.getRelativePath(), false, httpRequest, httpResponse, chain); } }