Major refactoring of Argeo CMS UI
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / util / LoginEntryPoint.java
diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/util/LoginEntryPoint.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/util/LoginEntryPoint.java
deleted file mode 100644 (file)
index 0bbed1d..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-package org.argeo.cms.ui.util;
-
-import java.util.Locale;
-import java.util.UUID;
-
-import javax.security.auth.Subject;
-import javax.security.auth.login.LoginContext;
-import javax.security.auth.login.LoginException;
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.api.NodeConstants;
-import org.argeo.cms.CmsException;
-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.widgets.auth.CmsLogin;
-import org.argeo.cms.ui.widgets.auth.CmsLoginShell;
-import org.argeo.eclipse.ui.specific.UiContext;
-import org.eclipse.rap.rwt.RWT;
-import org.eclipse.rap.rwt.application.EntryPoint;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-
-public class LoginEntryPoint implements EntryPoint, CmsView {
-       protected final static String HEADER_WWW_AUTHENTICATE = "WWW-Authenticate";
-       protected final static String HEADER_AUTHORIZATION = "Authorization";
-       private final static Log log = LogFactory.getLog(LoginEntryPoint.class);
-       private LoginContext loginContext;
-       private UxContext uxContext = null;
-       private String uid;
-
-       @Override
-       public int createUI() {
-               uid = UUID.randomUUID().toString();
-               final Display display = createDisplay();
-//             UiContext.setData(CmsView.KEY, this);
-
-               CmsLoginShell loginShell = createCmsLoginShell();
-               CmsView.registerCmsView(loginShell.getShell(), this);
-               try {
-                       // try pre-auth
-                       loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, loginShell);
-                       loginContext.login();
-               } catch (LoginException e) {
-                       loginShell.createUi();
-                       loginShell.open();
-
-                       // HttpServletRequest request = RWT.getRequest();
-                       // String authorization = request.getHeader(HEADER_AUTHORIZATION);
-                       // if (authorization == null ||
-                       // !authorization.startsWith("Negotiate")) {
-                       // HttpServletResponse response = RWT.getResponse();
-                       // response.setStatus(401);
-                       // response.setHeader(HEADER_WWW_AUTHENTICATE, "Negotiate");
-                       // response.setDateHeader("Date", System.currentTimeMillis());
-                       // response.setDateHeader("Expires", System.currentTimeMillis() +
-                       // (24 * 60 * 60 * 1000));
-                       // response.setHeader("Accept-Ranges", "bytes");
-                       // response.setHeader("Connection", "Keep-Alive");
-                       // response.setHeader("Keep-Alive", "timeout=5, max=97");
-                       // // response.setContentType("text/html; charset=UTF-8");
-                       // }
-
-                       while (!loginShell.getShell().isDisposed()) {
-                               if (!display.readAndDispatch())
-                                       display.sleep();
-                       }
-               }
-
-               if (CurrentUser.getUsername(getSubject()) == null)
-                       return -1;
-               uxContext = new SimpleUxContext();
-               return postLogin();
-       }
-
-       protected Display createDisplay() {
-               return new Display();
-       }
-
-       protected int postLogin() {
-               return 0;
-       }
-
-       protected HttpServletRequest getRequest() {
-               return RWT.getRequest();
-       }
-
-       protected CmsLoginShell createCmsLoginShell() {
-               return new CmsLoginShell(this) {
-
-                       @Override
-                       public void createContents(Composite parent) {
-                               LoginEntryPoint.this.createLoginPage(parent, this);
-                       }
-
-                       @Override
-                       protected void extendsCredentialsBlock(Composite credentialsBlock, Locale selectedLocale,
-                                       SelectionListener loginSelectionListener) {
-                               LoginEntryPoint.this.extendsCredentialsBlock(credentialsBlock, selectedLocale, loginSelectionListener);
-                       }
-
-               };
-       }
-
-       /**
-        * To be overridden. CmsLogin#createCredentialsBlock() should be called at some
-        * point in order to create the credentials composite. In order to use the
-        * default layout, call CmsLogin#defaultCreateContents() but <b>not</b>
-        * CmsLogin#createContent(), since it would lead to a stack overflow.
-        */
-       protected void createLoginPage(Composite parent, CmsLogin login) {
-               login.defaultCreateContents(parent);
-       }
-
-       protected void extendsCredentialsBlock(Composite credentialsBlock, Locale selectedLocale,
-                       SelectionListener loginSelectionListener) {
-
-       }
-
-       @Override
-       public String getUid() {
-               return uid;
-       }
-
-       @Override
-       public void navigateTo(String state) {
-               // TODO Auto-generated method stub
-
-       }
-
-       @Override
-       public void authChange(LoginContext loginContext) {
-               if (loginContext == null)
-                       throw new CmsException("Login context cannot be null");
-               // logout previous login context
-               if (this.loginContext != null)
-                       try {
-                               this.loginContext.logout();
-                       } catch (LoginException e1) {
-                               log.warn("Could not log out: " + e1);
-                       }
-               this.loginContext = loginContext;
-       }
-
-       @Override
-       public void logout() {
-               if (loginContext == null)
-                       throw new CmsException("Login context should not bet null");
-               try {
-                       CurrentUser.logoutCmsSession(loginContext.getSubject());
-                       loginContext.logout();
-               } catch (LoginException e) {
-                       throw new CmsException("Cannot log out", e);
-               }
-       }
-
-       @Override
-       public void exception(Throwable e) {
-               // TODO Auto-generated method stub
-
-       }
-
-       // @Override
-       // public LoginContext getLoginContext() {
-       // return loginContext;
-       // }
-
-       protected Subject getSubject() {
-               return loginContext.getSubject();
-       }
-
-       @Override
-       public boolean isAnonymous() {
-               return CurrentUser.isAnonymous(getSubject());
-       }
-
-       @Override
-       public CmsImageManager getImageManager() {
-               // TODO Auto-generated method stub
-               return null;
-       }
-
-       @Override
-       public UxContext getUxContext() {
-               return uxContext;
-       }
-}
\ No newline at end of file