X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FAbstractCmsEntryPoint.java;h=49a7b98dfc4fe635665f608e67eaccefa21b209b;hb=d0a62e782639c7117768916bc62577283975b633;hp=6043980e90f8b58a927e45da360027dab298cad2;hpb=f26fa850fab8c3666e6cc27683991f2d11378e5b;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java b/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java index 6043980e9..49a7b98df 100644 --- a/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java +++ b/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java @@ -1,5 +1,7 @@ package org.argeo.cms; +import static org.argeo.cms.internal.kernel.KernelConstants.SPRING_SECURITY_CONTEXT_KEY; + import java.util.Locale; import java.util.ResourceBundle; @@ -8,9 +10,11 @@ import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.nodetype.NodeType; +import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.cms.i18n.Msg; import org.argeo.jcr.JcrUtils; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.application.AbstractEntryPoint; @@ -19,11 +23,12 @@ import org.eclipse.rap.rwt.client.service.BrowserNavigationEvent; import org.eclipse.rap.rwt.client.service.BrowserNavigationListener; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; +import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; /** Manages history and navigation */ -public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint - implements CmsSession { +abstract class AbstractCmsEntryPoint extends AbstractEntryPoint implements + CmsSession { private final Log log = LogFactory.getLog(AbstractCmsEntryPoint.class); private Repository repository; @@ -33,14 +38,22 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint // current state private Node node; private String state; - private String page; + // private String page; private Throwable exception; private BrowserNavigation history; public AbstractCmsEntryPoint(Repository repository, String workspace) { - if (SecurityContextHolder.getContext().getAuthentication() == null) - logAsAnonymous(); + if (SecurityContextHolder.getContext().getAuthentication() == null) { + HttpSession httpSession = RWT.getRequest().getSession(); + // log.debug("Session: " + httpSession.getId()); + SecurityContext contextFromSessionObject = (SecurityContext) httpSession + .getAttribute(SPRING_SECURITY_CONTEXT_KEY); + if (contextFromSessionObject != null) + SecurityContextHolder.setContext(contextFromSessionObject); + else + logAsAnonymous(); + } this.repository = repository; this.workspace = workspace; @@ -154,7 +167,7 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint String previousState = this.state; node = null; - page = null; + // page = null; this.state = newState; try { @@ -164,7 +177,7 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint node = addNode(session, state, null); else node = session.getNode(state); - page = ""; + // page = ""; } else if (firstSlash > 0) { String prefix = state.substring(0, firstSlash); String path = state.substring(firstSlash); @@ -197,18 +210,19 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint throw new CmsException("Data " + path + " does not exist"); } - page = prefix; + throw new CmsException("Unsupported state prefix '" + prefix + + "'"); + // page = prefix; } else { node = getDefaultNode(session); - if (state.equals("~")) - page = ""; - else - page = state; + // if (state.equals("~")) + // page = ""; + // else + // page = state; } if (log.isTraceEnabled()) - log.trace("page=" + page + ", node=" + node + ", state=" - + state); + log.trace("node=" + node + ", state=" + state); } catch (RepositoryException e) { throw new CmsException("Cannot retrieve node", e); @@ -231,9 +245,9 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint return state; } - protected String getPage() { - return page; - } + // protected String getPage() { + // return page; + // } protected Throwable getException() { return exception;