1 package org
.argeo
.cms
.e4
.rap
;
3 import java
.security
.AccessController
;
5 import javax
.security
.auth
.Subject
;
6 import javax
.security
.auth
.login
.LoginContext
;
7 import javax
.security
.auth
.login
.LoginException
;
9 import org
.argeo
.cms
.CmsException
;
10 import org
.argeo
.cms
.auth
.CurrentUser
;
11 import org
.argeo
.cms
.ui
.CmsImageManager
;
12 import org
.argeo
.cms
.ui
.CmsView
;
13 import org
.argeo
.cms
.ui
.UxContext
;
14 import org
.argeo
.cms
.util
.SimpleUxContext
;
15 import org
.argeo
.cms
.widgets
.auth
.CmsLoginShell
;
16 import org
.argeo
.node
.NodeConstants
;
17 import org
.eclipse
.e4
.ui
.workbench
.lifecycle
.PostContextCreate
;
18 import org
.eclipse
.swt
.widgets
.Display
;
20 @SuppressWarnings("restriction")
21 public class CmsLoginLifecycle
implements CmsView
{
22 private UxContext uxContext
;
23 private LoginContext loginContext
;
26 boolean login(Display d
) {
27 Subject subject
= Subject
.getSubject(AccessController
.getContext());
28 Display display
= Display
.getCurrent();
29 CmsLoginShell loginShell
= new CmsLoginShell(this);
30 loginShell
.setSubject(subject
);
33 loginContext
= new LoginContext(NodeConstants
.LOGIN_CONTEXT_USER
, subject
, loginShell
);
35 } catch (LoginException e
) {
36 loginShell
.createUi();
39 while (!loginShell
.getShell().isDisposed()) {
40 if (!display
.readAndDispatch())
44 if (CurrentUser
.getUsername(getSubject()) == null)
46 uxContext
= new SimpleUxContext();
51 public UxContext
getUxContext() {
56 public void navigateTo(String state
) {
57 // TODO Auto-generated method stub
62 public void authChange(LoginContext loginContext
) {
63 if (loginContext
== null)
64 throw new CmsException("Login context cannot be null");
65 // logout previous login context
66 // if (this.loginContext != null)
68 // this.loginContext.logout();
69 // } catch (LoginException e1) {
70 // System.err.println("Could not log out: " + e1);
72 this.loginContext
= loginContext
;
76 public void logout() {
77 if (loginContext
== null)
78 throw new CmsException("Login context should not bet null");
80 CurrentUser
.logoutCmsSession(loginContext
.getSubject());
81 loginContext
.logout();
82 } catch (LoginException e
) {
83 throw new CmsException("Cannot log out", e
);
88 public void exception(Throwable e
) {
89 // TODO Auto-generated method stub
94 public CmsImageManager
getImageManager() {
95 // TODO Auto-generated method stub
99 protected Subject
getSubject() {
100 return loginContext
.getSubject();
104 public boolean isAnonymous() {
105 return CurrentUser
.isAnonymous(getSubject());