package org.argeo.cms.e4.rap;
import java.security.AccessController;
+import java.util.UUID;
import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.cms.CmsException;
+import org.argeo.api.NodeConstants;
+import org.argeo.api.cms.CmsImageManager;
+import org.argeo.api.cms.CmsView;
+import org.argeo.api.cms.UxContext;
import org.argeo.cms.auth.CurrentUser;
-import org.argeo.cms.ui.CmsImageManager;
-import org.argeo.cms.ui.CmsView;
-import org.argeo.cms.ui.UxContext;
-import org.argeo.cms.ui.dialogs.CmsFeedback;
-import org.argeo.cms.util.SimpleUxContext;
-import org.argeo.cms.widgets.auth.CmsLoginShell;
-import org.argeo.node.NodeConstants;
+import org.argeo.cms.swt.CmsSwtUtils;
+import org.argeo.cms.swt.SimpleSwtUxContext;
+import org.argeo.cms.swt.auth.CmsLoginShell;
+import org.argeo.cms.swt.dialogs.CmsFeedback;
+import org.argeo.cms.ui.util.SimpleImageManager;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.ui.workbench.UIEvents;
import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate;
private final static Log log = LogFactory.getLog(CmsLoginLifecycle.class);
private UxContext uxContext;
+ private CmsImageManager imageManager;
private LoginContext loginContext;
private BrowserNavigation browserNavigation;
private String state = null;
+ private String uid;
@PostContextCreate
boolean login(final IEventBroker eventBroker) {
+ uid = UUID.randomUUID().toString();
browserNavigation = RWT.getClient().getService(BrowserNavigation.class);
if (browserNavigation != null)
browserNavigation.addBrowserNavigationListener(new BrowserNavigationListener() {
Subject subject = Subject.getSubject(AccessController.getContext());
Display display = Display.getCurrent();
+// UiContext.setData(CmsView.KEY, this);
CmsLoginShell loginShell = new CmsLoginShell(this);
+ CmsSwtUtils.registerCmsView(loginShell.getShell(), this);
loginShell.setSubject(subject);
try {
// try pre-auth
}
if (CurrentUser.getUsername(getSubject()) == null)
return false;
- uxContext = new SimpleUxContext();
+ uxContext = new SimpleSwtUxContext();
+ imageManager = new SimpleImageManager();
eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE, new EventHandler() {
@Override
@Override
public void authChange(LoginContext loginContext) {
if (loginContext == null)
- throw new CmsException("Login context cannot be null");
+ throw new IllegalArgumentException("Login context cannot be null");
// logout previous login context
// if (this.loginContext != null)
// try {
@Override
public void logout() {
if (loginContext == null)
- throw new CmsException("Login context should not be null");
+ throw new IllegalStateException("Login context should not be null");
try {
CurrentUser.logoutCmsSession(loginContext.getSubject());
loginContext.logout();
} catch (LoginException e) {
- throw new CmsException("Cannot log out", e);
+ throw new IllegalStateException("Cannot log out", e);
}
}
@Override
public CmsImageManager getImageManager() {
- throw new UnsupportedOperationException();
+ return imageManager;
}
protected Subject getSubject() {
return CurrentUser.isAnonymous(getSubject());
}
+ @Override
+ public String getUid() {
+ return uid;
+ }
+
// CALLBACKS
protected void startupComplete() {
}