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
) {// , IEclipseContext eclipseContext) {
27 // RepositoryFactory repositoryFactory =
28 // eclipseContext.get(RepositoryFactory.class);
29 // Map<String, String> params = new HashMap<>();
30 // params.put("cn", "home");
31 // Repository homeRepository;
33 // homeRepository = repositoryFactory.getRepository(params);
34 // } catch (RepositoryException e1) {
35 // throw new CmsException("Cannot get home repository", e1);
37 // eclipseContext.set("(cn=home)", homeRepository);
39 Subject subject
= Subject
.getSubject(AccessController
.getContext());
40 Display display
= Display
.getCurrent();
41 CmsLoginShell loginShell
= new CmsLoginShell(this);
42 loginShell
.setSubject(subject
);
45 loginContext
= new LoginContext(NodeConstants
.LOGIN_CONTEXT_USER
, subject
, loginShell
);
47 } catch (LoginException e
) {
48 loginShell
.createUi();
51 while (!loginShell
.getShell().isDisposed()) {
52 if (!display
.readAndDispatch())
56 if (CurrentUser
.getUsername(getSubject()) == null)
58 uxContext
= new SimpleUxContext();
63 public UxContext
getUxContext() {
68 public void navigateTo(String state
) {
69 // TODO Auto-generated method stub
74 public void authChange(LoginContext loginContext
) {
75 if (loginContext
== null)
76 throw new CmsException("Login context cannot be null");
77 // logout previous login context
78 // if (this.loginContext != null)
80 // this.loginContext.logout();
81 // } catch (LoginException e1) {
82 // System.err.println("Could not log out: " + e1);
84 this.loginContext
= loginContext
;
88 public void logout() {
89 if (loginContext
== null)
90 throw new CmsException("Login context should not bet null");
92 CurrentUser
.logoutCmsSession(loginContext
.getSubject());
93 loginContext
.logout();
94 } catch (LoginException e
) {
95 throw new CmsException("Cannot log out", e
);
100 public void exception(Throwable e
) {
101 // TODO Auto-generated method stub
106 public CmsImageManager
getImageManager() {
107 // TODO Auto-generated method stub
111 protected Subject
getSubject() {
112 return loginContext
.getSubject();
116 public boolean isAnonymous() {
117 return CurrentUser
.isAnonymous(getSubject());