X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.suite.e4.rap%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Frap%2FArgeoSuiteLoginLifecycle.java;h=6899582f32fb81dbb4e42281bce213fc3397b875;hb=0640a2e720d001b3ac26a900fb9e7eddd8c4ee99;hp=32623110eae8006d672cfc07e5988758057a594a;hpb=91ba500dcfe75cde313a513e341b7f9f57d64d75;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java index 3262311..6899582 100644 --- a/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java +++ b/org.argeo.suite.e4.rap/src/org/argeo/suite/e4/rap/ArgeoSuiteLoginLifecycle.java @@ -4,6 +4,7 @@ import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import javax.inject.Inject; +import javax.inject.Named; import javax.jcr.Node; import javax.jcr.Repository; import javax.jcr.RepositoryException; @@ -15,6 +16,7 @@ import org.apache.commons.logging.LogFactory; import org.argeo.cms.e4.rap.CmsLoginLifecycle; import org.argeo.connect.ui.SystemWorkbenchService; import org.argeo.jcr.JcrUtils; +import org.argeo.node.NodeConstants; public class ArgeoSuiteLoginLifecycle extends CmsLoginLifecycle { private final static Log log = LogFactory.getLog(ArgeoSuiteLoginLifecycle.class); @@ -22,6 +24,7 @@ public class ArgeoSuiteLoginLifecycle extends CmsLoginLifecycle { SystemWorkbenchService systemWorkbenchService; @Inject + @Named("(cn=home)") Repository repository; @Override @@ -36,31 +39,34 @@ public class ArgeoSuiteLoginLifecycle extends CmsLoginLifecycle { private void loadState() { String state = getState(); - if (state != null && state.startsWith("/")) { - Session session = null; - try { - Subject subject = getSubject(); - session = Subject.doAs(subject, new PrivilegedExceptionAction() { + // for the time being we systematically open a session, in order to make sure + // that home is initialised + Session session = null; + try { + Subject subject = getSubject(); + session = Subject.doAs(subject, new PrivilegedExceptionAction() { - @Override - public Session run() throws PrivilegedActionException { - try { - return repository.login(); - } catch (RepositoryException e) { - throw new PrivilegedActionException(e); - } + @Override + public Session run() throws PrivilegedActionException { + try { + return repository.login(NodeConstants.HOME); + } catch (RepositoryException e) { + throw new PrivilegedActionException(e); } + } - }); + }); + if (state != null && state.startsWith("/")) { if (state.startsWith("/")) { Node node = session.getNode(state); systemWorkbenchService.openEntityEditor(node); } - } catch (RepositoryException | PrivilegedActionException e) { - log.error("Cannot load state " + state, e); - } finally { - JcrUtils.logoutQuietly(session); } + } catch (RepositoryException | PrivilegedActionException e) { + log.error("Cannot load state " + state, e); + getBrowserNavigation().pushState("~", null); + } finally { + JcrUtils.logoutQuietly(session); } } }