1 package org
.argeo
.suite
.e4
.rap
;
3 import java
.security
.PrivilegedActionException
;
4 import java
.security
.PrivilegedExceptionAction
;
6 import javax
.inject
.Inject
;
7 import javax
.inject
.Named
;
9 import javax
.jcr
.Repository
;
10 import javax
.jcr
.RepositoryException
;
11 import javax
.jcr
.Session
;
12 import javax
.security
.auth
.Subject
;
14 import org
.apache
.commons
.logging
.Log
;
15 import org
.apache
.commons
.logging
.LogFactory
;
16 import org
.argeo
.cms
.e4
.rap
.CmsLoginLifecycle
;
17 import org
.argeo
.connect
.ui
.SystemWorkbenchService
;
18 import org
.argeo
.jcr
.JcrUtils
;
20 public class ArgeoSuiteLoginLifecycle
extends CmsLoginLifecycle
{
21 private final static Log log
= LogFactory
.getLog(ArgeoSuiteLoginLifecycle
.class);
23 SystemWorkbenchService systemWorkbenchService
;
27 Repository repository
;
30 protected void startupComplete() {
35 protected void stateChanged() {
39 private void loadState() {
40 String state
= getState();
41 // for the time being we systematically open a session, in order to make sure
42 // that home is initialised
43 Session session
= null;
45 Subject subject
= getSubject();
46 session
= Subject
.doAs(subject
, new PrivilegedExceptionAction
<Session
>() {
49 public Session
run() throws PrivilegedActionException
{
51 return repository
.login();
52 } catch (RepositoryException e
) {
53 throw new PrivilegedActionException(e
);
58 if (state
!= null && state
.startsWith("/")) {
59 if (state
.startsWith("/")) {
60 Node node
= session
.getNode(state
);
61 systemWorkbenchService
.openEntityEditor(node
);
64 } catch (RepositoryException
| PrivilegedActionException e
) {
65 log
.error("Cannot load state " + state
, e
);
66 getBrowserNavigation().pushState("~", null);
68 JcrUtils
.logoutQuietly(session
);