X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.e4.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Frap%2FCmsLoginLifecycle.java;fp=org.argeo.cms.e4.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Frap%2FCmsLoginLifecycle.java;h=0000000000000000000000000000000000000000;hb=f9efbe5228615951dd8482a4582aa24e00c10ce5;hp=3ee8df1ef76c27a9b44a672c16354d4b3fe0cf8a;hpb=af817c9bebfa3187f9a64c3e6aadb933dac148c8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/CmsLoginLifecycle.java b/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/CmsLoginLifecycle.java deleted file mode 100644 index 3ee8df1ef..000000000 --- a/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/CmsLoginLifecycle.java +++ /dev/null @@ -1,183 +0,0 @@ -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 javax.security.auth.login.LoginException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -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.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; -import org.eclipse.e4.ui.workbench.lifecycle.PreSave; -import org.eclipse.rap.rwt.RWT; -import org.eclipse.rap.rwt.client.service.BrowserNavigation; -import org.eclipse.rap.rwt.client.service.BrowserNavigationEvent; -import org.eclipse.rap.rwt.client.service.BrowserNavigationListener; -import org.eclipse.swt.widgets.Display; -import org.osgi.service.event.Event; -import org.osgi.service.event.EventHandler; - -@SuppressWarnings("restriction") -public class CmsLoginLifecycle implements CmsView { - 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() { - private static final long serialVersionUID = -3668136623771902865L; - - @Override - public void navigated(BrowserNavigationEvent event) { - state = event.getState(); - if (uxContext != null)// is logged in - stateChanged(); - } - }); - - 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 - loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, subject, loginShell); - loginContext.login(); - } catch (LoginException e) { - loginShell.createUi(); - loginShell.open(); - - while (!loginShell.getShell().isDisposed()) { - if (!display.readAndDispatch()) - display.sleep(); - } - } - if (CurrentUser.getUsername(getSubject()) == null) - return false; - uxContext = new SimpleSwtUxContext(); - imageManager = new SimpleImageManager(); - - eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE, new EventHandler() { - @Override - public void handleEvent(Event event) { - startupComplete(); - eventBroker.unsubscribe(this); - } - }); - - // lcs.changeApplicationLocale(Locale.FRENCH); - return true; - } - - @PreSave - void destroy() { - // logout(); - } - - @Override - public UxContext getUxContext() { - return uxContext; - } - - @Override - public void navigateTo(String state) { - browserNavigation.pushState(state, state); - } - - @Override - public void authChange(LoginContext loginContext) { - if (loginContext == null) - throw new IllegalArgumentException("Login context cannot be null"); - // logout previous login context - // if (this.loginContext != null) - // try { - // this.loginContext.logout(); - // } catch (LoginException e1) { - // System.err.println("Could not log out: " + e1); - // } - this.loginContext = loginContext; - } - - @Override - public void logout() { - if (loginContext == null) - throw new IllegalStateException("Login context should not be null"); - try { - CurrentUser.logoutCmsSession(loginContext.getSubject()); - loginContext.logout(); - } catch (LoginException e) { - throw new IllegalStateException("Cannot log out", e); - } - } - - @Override - public void exception(Throwable e) { - String msg = "Unexpected exception in Eclipse 4 RAP"; - log.error(msg, e); - CmsFeedback.show(msg, e); - } - - @Override - public CmsImageManager getImageManager() { - return imageManager; - } - - protected Subject getSubject() { - return loginContext.getSubject(); - } - - @Override - public boolean isAnonymous() { - return CurrentUser.isAnonymous(getSubject()); - } - - @Override - public String getUid() { - return uid; - } - - // CALLBACKS - protected void startupComplete() { - } - - protected void stateChanged() { - - } - - // GETTERS - protected BrowserNavigation getBrowserNavigation() { - return browserNavigation; - } - - protected String getState() { - return state; - } - -}