X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.e4.rap%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Frap%2FArgeoSuiteLoginLifecycle.java;h=f3145c3e7d51a36a35adc3e7d251eeb9d24720ed;hp=32623110eae8006d672cfc07e5988758057a594a;hb=b73835a7d8157ad402175a457a7f2593005630a2;hpb=91ba500dcfe75cde313a513e341b7f9f57d64d75 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..f3145c3 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; @@ -22,6 +23,7 @@ public class ArgeoSuiteLoginLifecycle extends CmsLoginLifecycle { SystemWorkbenchService systemWorkbenchService; @Inject + @Named("(cn=home)") Repository repository; @Override @@ -36,31 +38,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(); + } 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); } } }