@Override public boolean isUserInRole(final String role) { try { return securityModel.isUserInRole(RequestContextProvider.get().getSession(), role); } catch (RepositoryException e) { throw new IllegalStateException("Exception while trying to find whether user is " + "in role.", e); } }
/** * Create a HstLinkResolver instance with the current <code>requestContext</code>. The {@link Mount} is taken from this context. If * we have a {@link ResolvedSiteMapItem} on the <code>requestContext</code>, we also set this also for the {@link HstLinkResolver} for context aware link rewriting * @param requestContext * @param node */ HstLinkResolver(Node node, HstRequestContext requestContext){ this.node = node; originalNodePath = getOriginalNodePath(node); // note: the resolvedSiteMapItem can be null resolverProperties = new ResolverProperties(); resolverProperties.resolvedSiteMapItem = requestContext.getResolvedSiteMapItem(); mount = requestContext.getResolvedMount().getMount(); }
public HstURL createNavigationalURL(String pathInfo) { HstContainerURL navURL = requestContext.getContainerURLProvider().createURL(requestContext.getBaseURL(), pathInfo); return requestContext.getURLFactory().createURL(HstURL.RENDER_TYPE, null, navURL, requestContext); }
/** * Enter into a specific top level bean's (referred to by {@code representationId}) content bean serialization sub-context. * @param representationId the top level bean's {@code representationId} */ public static void beginTopLevelContentBean(final String representationId) { final HstRequestContext requestContext = RequestContextProvider.get(); Stack<String> baseModelIdStack = (Stack<String>) requestContext .getAttribute(TOP_LEVEL_BEAN_IDS_STACK_ATTR_NAME); if (baseModelIdStack == null) { baseModelIdStack = new Stack<>(); requestContext.setAttribute(TOP_LEVEL_BEAN_IDS_STACK_ATTR_NAME, baseModelIdStack); } baseModelIdStack.push(representationId); }
public HstLink create(Node node, HstRequestContext requestContext, String mountAlias, String type) { Mount targetMount = requestContext.getMount(mountAlias, type); if(targetMount == null) { String[] messages = {mountAlias , requestContext.getVirtualHost().getHostGroupName(), type}; log.info("Cannot create a link for mountAlias '{}' as it cannot be found in the host group '{}' for type '{}'", messages); return null; } log.debug("Target Mount found for mountAlias '{}'. Create link for target Mount", mountAlias); return create(node, targetMount); }
return reqContext.getHstLinkCreator().create(path, reqContext.getResolvedSiteMapItem().getHstSiteMapItem().getHstSiteMap().getSite()); } else { return reqContext.getHstLinkCreator().create(mirrorNode, reqContext.getResolvedSiteMapItem()); } else { log.warn("Cannot find node '{}' for internal link for document '{}'. Cannot create link", path, node.getPath());
public String getLink() { final HstRequestContext context = RequestContextProvider.get(); return context.getHstLinkCreator().create("/", context.getResolvedMount().getMount()).toUrlForm(context, true); }
/** * Add links to the page model. * @param pageModel the aggregated page model instance */ private void addLinksToPageModel(IdentifiableLinkableMetadataBaseModel pageModel) { final HstRequestContext requestContext = RequestContextProvider.get(); final HstLinkCreator linkCreator = requestContext.getHstLinkCreator(); final HstSiteMapItem siteMapItem = requestContext.getResolvedSiteMapItem().getHstSiteMapItem(); final Mount selfMount = requestContext.getResolvedMount().getMount(); final HstLink selfLink = linkCreator.create(siteMapItem, selfMount); pageModel.putLink(ContainerConstants.LINK_NAME_SELF, new LinkModel(selfLink.toUrlForm(requestContext, true))); final Mount siteMount = selfMount.getParent(); if (siteMount != null) { final HstLink siteLink = linkCreator.create(siteMapItem, siteMount); pageModel.putLink(ContainerConstants.LINK_NAME_SITE, new LinkModel(siteLink.toUrlForm(requestContext, true))); } else { log.warn("Expected a 'PageModelPipeline' always to be nested below a parent site mount. This is not the " + "case for '{}'. Cannot add site links", selfMount); } }
ResolvedSiteMount resolvedSiteMount = requestContext.getResolvedSiteMount(); SiteMount siteMount = resolvedSiteMount.getSiteMount(); final SiteMount parentSiteMount = siteMount.getParent(); HstLink hstLink = requestContext.getHstLinkCreator().create(canonicalUuid, getJcrSession(servletRequest), parentResolvedSiteMapItem); final HstContainerURL baseURL = requestContext.getBaseURL(); HstContainerURL adjustedBaseURL = (HstContainerURL) Proxy.newProxyInstance( HstContainerURL navURL = requestContext.getContainerURLProvider().createURL(adjustedBaseURL, hstLink.getPath()); HstURL hstUrl = requestContext.getURLFactory().createURL(HstURL.RENDER_TYPE, null, navURL, requestContext); return hstUrl.toString(); } catch (Exception e) {
/** * When the <code>{@link ResolvedSiteMapItem}</code> belonging to the current requestUri has a relativeContentPath that points to an * existing jcr Node, a HippoBean wrapping this node is returned. When there is no relativeContentPath or the location does not exist, * <code>null</code> is returned * @param request * @return A <code>HippoBean</code> or <code>null</code> when there cannot be created a content bean for the resolvedSiteMapItem belonging to the current request */ public HippoBean getContentBean(HstRequest request) { ResolvedSiteMapItem resolvedSiteMapItem = request.getRequestContext().getResolvedSiteMapItem(); return this.getBeanForResolvedSiteMapItem(request, resolvedSiteMapItem); }
public Node getScope(final HttpServletRequest request) throws RepositoryException { HstRequestContext requestContext = getRequestContext(request); Mount siteMount = requestContext.getResolvedMount().getMount(); if (siteMount == null) { log.error("Couldn't find site mount for rest service"); return null; } String contentPath = siteMount.getContentPath(); if (contentPath != null) { return requestContext.getSession().getRootNode().getNode(PathUtils.normalizePath(contentPath)); } return null; }
final HippoBean bean = context.getSiteContentBaseBean().getBean(pageNotFoundPath, HippoBean.class); response.setStatus(HttpServletResponse.SC_NOT_FOUND); if (bean != null) { final HstLinkCreator hstLinkCreator = context.getHstLinkCreator(); final HstLink hstLink = hstLinkCreator.create(bean.getNode(), context); try { final ResolvedSiteMapItem resolvedSiteMapItem = RequestContextProvider.get().getResolvedSiteMapItem(); if (resolvedSiteMapItem == null) { return;
@Override public void invoke(ValveContext context) throws ContainerException { final HstRequestContext requestContext = context.getRequestContext(); final String componentRenderingWindowReferenceNamespace = requestContext.getBaseURL().getComponentRenderingWindowReferenceNamespace(); if (componentRenderingWindowReferenceNamespace == null) { // not a compoment rendering request, so skip it.. context.invokeNext(); return; } final HstComponentWindow window = context.getRootComponentWindow(); final HttpServletResponse servletResponse = requestContext.getServletResponse(); if (requestContext.isCmsRequest() || requestContext.isPreview()) { setNoCacheHeaders(servletResponse); } if (!window.getComponentInfo().isStandalone()) { // set the rendering window firsst context.setRootComponentRenderingWindow(window); // set the sitemap item root window as the root window because the backing componentInfo is standalone HstComponentWindow root = window; while(root.getParentWindow() != null) { root = root.getParentWindow(); } context.setRootComponentWindow(root); } context.invokeNext(); }
/** * Write the aggregated output to the client. e.g, by flushing the {@code rootRenderingWindow} by default. * @param context {@link ValveContext} instance * @param rootRenderingWindow the root rendering {@link HstComponentWindow} instance * @throws ContainerException if HST Container exception occurs */ protected void writeAggregatedOutput(final ValveContext context, final HstComponentWindow rootRenderingWindow) throws ContainerException { final HstRequestContext requestContext = context.getRequestContext(); try { // add the X-HST-VERSION as a response header if we are in preview: boolean isPreviewOrCmsRequest = requestContext.isPreview() || requestContext.isCmsRequest(); if (isPreviewOrCmsRequest) { final HttpServletResponse servletResponse = context.getServletResponse(); setNoCacheHeaders(servletResponse); if (requestContext.getResolvedMount().getMount().isVersionInPreviewHeader()) { servletResponse.setHeader("X-HST-VERSION", HstServices.getImplementationVersion()); } } // flush root component window content. // note that the child component's contents are already flushed into the root component's response state. rootRenderingWindow.getResponseState().flush(); } catch (Exception e) { if (log.isDebugEnabled()) { log.warn("Exception during flushing the response state.", e); } else if (log.isWarnEnabled()) { log.warn("Exception during flushing the response state. {}", e.toString()); } } }
public Credentials getDefaultCredentials(HstRequestContext requestContext) { Credentials credentials = super.getDefaultCredentials(requestContext); if (credentials instanceof SimpleCredentials) { String siteName = requestContext.getResolvedSiteMapItem().getResolvedMount().getMount().getHstSite().getName(); String userID = ((SimpleCredentials) credentials).getUserID(); String userIDWithSiteName = userID + siteNameSeparator + siteName; char [] password = ((SimpleCredentials) credentials).getPassword(); if (requestContext.isPreview()) { credentials = defaultCredentialsForPreviewModeCache.get(userIDWithSiteName); if (credentials == null) { credentials = new SimpleCredentials(userIDWithSiteName, password); defaultCredentialsForPreviewModeCache.put(userIDWithSiteName, credentials); } } else { credentials = defaultCredentialsCache.get(userIDWithSiteName); if (credentials == null) { credentials = new SimpleCredentials(userIDWithSiteName, password); defaultCredentialsCache.put(userIDWithSiteName, credentials); } } } return credentials; }
public HttpServletRequest getServletRequest() { return requestContext.getServletRequest(); }
@Override public void validate(final HstRequestContext requestContext) throws RuntimeException { Mount mount = requestContext.getVirtualHost().getVirtualHosts().getMountByIdentifier(mountId); try { if (!requestContext.getSession().nodeExists(mount.getHstSite().getConfigurationPath() + "/" + NODENAME_HST_WORKSPACE)) { final String message = String.format("There is no workspace configuration for '%s'", mount.getHstSite().getConfigurationPath()); throw new ClientException("There is no workspace configuration", ClientError.NO_PREVIEW_CONFIGURATION, Collections.singletonMap("errorReason", message)); } } catch (RepositoryException e) { throw new RuntimeRepositoryException(e); } } }
public HstSiteMenusImpl(HstRequestContext hstRequestContext) { if (hstRequestContext.getResolvedSiteMapItem() == null) { log.info("'{}' does not resolve to a siteMap item hence no siteMenus can be provided", hstRequestContext.getServletRequest()); return; } // find currently selected hstSiteMenuItemConfiguration's HstSiteMapItem selectedSiteMapItem = hstRequestContext.getResolvedSiteMapItem().getHstSiteMapItem(); HstSiteMenusConfiguration siteMenusConfiguration = selectedSiteMapItem.getHstSiteMap().getSite().getSiteMenusConfiguration(); if(siteMenusConfiguration != null) { for(HstSiteMenuConfiguration siteMenuConfiguration : siteMenusConfiguration.getSiteMenuConfigurations().values()) { HstSiteMenuImpl siteMenu = new HstSiteMenuImpl(this, siteMenuConfiguration, hstRequestContext); siteMenus.put(siteMenu.getName(), siteMenu); } } }
/** * Get the {@link Mount} for the current */ protected Mount getMount(final HstRequest request){ return request.getRequestContext().getResolvedMount().getMount(); }
public HstSiteMenuImpl(HstSiteMenus hstSiteMenus, HstSiteMenuConfiguration siteMenuConfiguration, HstRequestContext hstRequestContext) { this.hstSiteMenus = hstSiteMenus; this.name = siteMenuConfiguration.getName(); final boolean menuVisibleRegardlessRoles = hstRequestContext.isCmsRequest() && hstRequestContext.getResolvedMount().getMount().getVirtualHost().getVirtualHosts().isChannelMngrSiteAuthenticationSkipped(); for(HstSiteMenuItemConfiguration hstSiteMenuItemConfiguration : siteMenuConfiguration.getSiteMenuConfigurationItems()) { if (hstSiteMenuItemConfiguration.getRoles() == null || menuVisibleRegardlessRoles) { hstSiteMenuItems.add(new HstSiteMenuItemImpl(this, null, hstSiteMenuItemConfiguration , hstRequestContext)); } else { if (HstSiteMenuUtils.isUserInRole(hstSiteMenuItemConfiguration, hstRequestContext)) { hstSiteMenuItems.add(new HstSiteMenuItemImpl(this, null, hstSiteMenuItemConfiguration , hstRequestContext)); } } } }