protected String getLastPath( MockHttpServletRequest request, MockHttpServletResponse response, MockFilterChain filterChain) throws Exception { _virtualHostFilter.init(_mockFilterConfig); _virtualHostFilter.processFilter(request, response, filterChain); LastPath lastPath = (LastPath) request.getAttribute(WebKeys.LAST_PATH); if (lastPath != null) { return lastPath.getPath(); } return StringPool.BLANK; }
private void _doServeResource( HttpServletRequest request, HttpServletResponse response, Portlet portlet) throws Exception { HttpServletRequest ownerLayoutRequest = getOwnerLayoutRequestWrapper(request, portlet); Layout ownerLayout = (Layout) ownerLayoutRequest.getAttribute(WebKeys.LAYOUT); boolean allowAddPortletDefaultResource = PortalUtil.isAllowAddPortletDefaultResource(ownerLayoutRequest, portlet); if (!allowAddPortletDefaultResource) { String url = null; LastPath lastPath = (LastPath) request.getAttribute(WebKeys.LAST_PATH); if (lastPath != null) { StringBundler sb = new StringBundler(3); sb.append(PortalUtil.getPortalURL(request)); sb.append(lastPath.getContextPath()); sb.append(lastPath.getPath()); url = sb.toString(); } else { url = String.valueOf(request.getRequestURI()); } response.setHeader(HttpHeaders.CACHE_CONTROL, HttpHeaders.CACHE_CONTROL_NO_CACHE_VALUE); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); _log.error("Reject serveResource for " + url + " on " + portlet.getPortletId()); return; } WindowState windowState = (WindowState) request.getAttribute(WebKeys.WINDOW_STATE); PortletMode portletMode = PortletModeFactory.getPortletMode(ParamUtil.getString(request, "p_p_mode")); PortletPreferencesIds portletPreferencesIds = PortletPreferencesFactoryUtil.getPortletPreferencesIds(request, portlet.getPortletId()); PortletPreferences portletPreferences = PortletPreferencesLocalServiceUtil.getPreferences(portletPreferencesIds); ServletContext servletContext = (ServletContext) request.getAttribute(WebKeys.CTX); InvokerPortlet invokerPortlet = PortletInstanceFactoryUtil.create(portlet, servletContext); PortletConfig portletConfig = PortletConfigFactoryUtil.create(portlet, servletContext); PortletContext portletContext = portletConfig.getPortletContext(); ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); PortletDisplay portletDisplay = themeDisplay.getPortletDisplay(); Layout layout = (Layout) request.getAttribute(WebKeys.LAYOUT); String portletPrimaryKey = PortletPermissionUtil.getPrimaryKey(layout.getPlid(), portlet.getPortletId()); portletDisplay.setId(portlet.getPortletId()); portletDisplay.setRootPortletId(portlet.getRootPortletId()); portletDisplay.setInstanceId(portlet.getInstanceId()); portletDisplay.setResourcePK(portletPrimaryKey); portletDisplay.setPortletName(portletConfig.getPortletName()); portletDisplay.setNamespace(PortalUtil.getPortletNamespace(portlet.getPortletId())); WebDAVStorage webDAVStorage = portlet.getWebDAVStorageInstance(); if (webDAVStorage != null) { portletDisplay.setWebDAVEnabled(true); } else { portletDisplay.setWebDAVEnabled(false); } ResourceRequestImpl resourceRequestImpl = ResourceRequestFactory.create( request, portlet, invokerPortlet, portletContext, windowState, portletMode, portletPreferences, layout.getPlid()); long companyId = PortalUtil.getCompanyId(request); ResourceResponseImpl resourceResponseImpl = ResourceResponseFactory.create( resourceRequestImpl, response, portlet.getPortletId(), companyId); resourceRequestImpl.defineObjects(portletConfig, resourceResponseImpl); try { ServiceContext serviceContext = ServiceContextFactory.getInstance(resourceRequestImpl); ServiceContextThreadLocal.pushServiceContext(serviceContext); PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker(); long scopeGroupId = themeDisplay.getScopeGroupId(); boolean access = PortletPermissionUtil.hasAccessPermission( permissionChecker, scopeGroupId, ownerLayout, portlet, portletMode); if (access) { invokerPortlet.serveResource(resourceRequestImpl, resourceResponseImpl); resourceResponseImpl.transferHeaders(response); } } finally { ServiceContextThreadLocal.popServiceContext(); } }
private ActionResult _doProcessAction( HttpServletRequest request, HttpServletResponse response, Portlet portlet) throws Exception { HttpServletRequest ownerLayoutRequest = getOwnerLayoutRequestWrapper(request, portlet); Layout ownerLayout = (Layout) ownerLayoutRequest.getAttribute(WebKeys.LAYOUT); boolean allowAddPortletDefaultResource = PortalUtil.isAllowAddPortletDefaultResource(ownerLayoutRequest, portlet); if (!allowAddPortletDefaultResource) { String url = null; LastPath lastPath = (LastPath) request.getAttribute(WebKeys.LAST_PATH); if (lastPath != null) { StringBundler sb = new StringBundler(3); sb.append(PortalUtil.getPortalURL(request)); sb.append(lastPath.getContextPath()); sb.append(lastPath.getPath()); url = sb.toString(); } else { url = String.valueOf(request.getRequestURI()); } _log.error("Reject processAction for " + url + " on " + portlet.getPortletId()); return ActionResult.EMPTY_ACTION_RESULT; } Layout layout = (Layout) request.getAttribute(WebKeys.LAYOUT); WindowState windowState = WindowStateFactory.getWindowState(ParamUtil.getString(request, "p_p_state")); if (layout.isTypeControlPanel() && ((windowState == null) || windowState.equals(WindowState.NORMAL) || Validator.isNull(windowState.toString()))) { windowState = WindowState.MAXIMIZED; } PortletMode portletMode = PortletModeFactory.getPortletMode(ParamUtil.getString(request, "p_p_mode")); PortletPreferencesIds portletPreferencesIds = PortletPreferencesFactoryUtil.getPortletPreferencesIds(request, portlet.getPortletId()); PortletPreferences portletPreferences = PortletPreferencesLocalServiceUtil.getPreferences(portletPreferencesIds); ServletContext servletContext = (ServletContext) request.getAttribute(WebKeys.CTX); InvokerPortlet invokerPortlet = PortletInstanceFactoryUtil.create(portlet, servletContext); PortletConfig portletConfig = PortletConfigFactoryUtil.create(portlet, servletContext); PortletContext portletContext = portletConfig.getPortletContext(); String contentType = request.getHeader(HttpHeaders.CONTENT_TYPE); if (_log.isDebugEnabled()) { _log.debug("Content type " + contentType); } UploadServletRequest uploadServletRequest = null; try { if ((contentType != null) && contentType.startsWith(ContentTypes.MULTIPART_FORM_DATA)) { PortletConfigImpl invokerPortletConfigImpl = (PortletConfigImpl) invokerPortlet.getPortletConfig(); if (invokerPortlet.isStrutsPortlet() || invokerPortletConfigImpl.isCopyRequestParameters() || !invokerPortletConfigImpl.isWARFile()) { uploadServletRequest = new UploadServletRequestImpl(request); request = uploadServletRequest; } } if (PropsValues.AUTH_TOKEN_CHECK_ENABLED && invokerPortlet.isCheckAuthToken()) { AuthTokenUtil.check(request); } ActionRequestImpl actionRequestImpl = ActionRequestFactory.create( request, portlet, invokerPortlet, portletContext, windowState, portletMode, portletPreferences, layout.getPlid()); User user = PortalUtil.getUser(request); ActionResponseImpl actionResponseImpl = ActionResponseFactory.create( actionRequestImpl, response, portlet.getPortletId(), user, layout, windowState, portletMode); actionRequestImpl.defineObjects(portletConfig, actionResponseImpl); ServiceContext serviceContext = ServiceContextFactory.getInstance(actionRequestImpl); ServiceContextThreadLocal.pushServiceContext(serviceContext); PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker(); ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); long scopeGroupId = themeDisplay.getScopeGroupId(); boolean access = PortletPermissionUtil.hasAccessPermission( permissionChecker, scopeGroupId, ownerLayout, portlet, portletMode); if (access) { invokerPortlet.processAction(actionRequestImpl, actionResponseImpl); actionResponseImpl.transferHeaders(response); } RenderParametersPool.put( request, layout.getPlid(), portlet.getPortletId(), actionResponseImpl.getRenderParameterMap()); List<Event> events = actionResponseImpl.getEvents(); String redirectLocation = actionResponseImpl.getRedirectLocation(); if (Validator.isNull(redirectLocation) && portlet.isActionURLRedirect()) { PortletURL portletURL = new PortletURLImpl( actionRequestImpl, actionRequestImpl.getPortletName(), layout.getPlid(), PortletRequest.RENDER_PHASE); Map<String, String[]> renderParameters = actionResponseImpl.getRenderParameterMap(); for (Map.Entry<String, String[]> entry : renderParameters.entrySet()) { String key = entry.getKey(); String[] value = entry.getValue(); portletURL.setParameter(key, value); } redirectLocation = portletURL.toString(); } return new ActionResult(events, redirectLocation); } finally { if (uploadServletRequest != null) { uploadServletRequest.cleanUp(); } ServiceContextThreadLocal.popServiceContext(); } }