X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FAbstractCmsEntryPoint.java;h=60758da887d63b66b80af07bf4317cab780b0690;hb=0c5fb19fc8447577255071899e445329da8be5e7;hp=6043980e90f8b58a927e45da360027dab298cad2;hpb=4b56d461613392a3808d886d5373cf46b65a040e;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..60758da88 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; @@ -39,8 +44,16 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint 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; @@ -200,15 +213,12 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint page = prefix; } else { node = getDefaultNode(session); - if (state.equals("~")) - page = ""; - else - page = state; + page = state; } if (log.isTraceEnabled()) - log.trace("page=" + page + ", node=" + node + ", state=" - + state); + log.trace("node=" + node + ", state=" + state + " (page=" + + page); } catch (RepositoryException e) { throw new CmsException("Cannot retrieve node", e); @@ -231,9 +241,9 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint return state; } - protected String getPage() { - return page; - } + // String getPage() { + // return page; + // } protected Throwable getException() { return exception;