X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fwidgets%2Fauth%2FCmsLogin.java;h=4af348059fa30fe528a676eda78336f8090aa866;hb=636529bb7df0774617693e452b04a4c61dda16cb;hp=792471996a81965ebdfb4bca364a202ce2af4414;hpb=fd8f2c91e47d38445ba9702b40559939162f666d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java index 792471996..4af348059 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java @@ -7,29 +7,26 @@ import java.io.IOException; import java.util.List; import java.util.Locale; -import javax.security.auth.Subject; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.LanguageCallback; import javax.security.auth.callback.NameCallback; import javax.security.auth.callback.PasswordCallback; import javax.security.auth.callback.UnsupportedCallbackException; -import javax.security.auth.login.FailedLoginException; 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.cms.CmsMsg; -import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.auth.HttpRequestCallback; import org.argeo.cms.i18n.LocaleUtils; import org.argeo.cms.ui.CmsStyles; import org.argeo.cms.ui.CmsView; import org.argeo.cms.ui.internal.Activator; import org.argeo.cms.util.CmsUtils; +import org.argeo.eclipse.ui.specific.UiContext; import org.argeo.node.NodeConstants; -import org.eclipse.rap.rwt.RWT; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; @@ -81,7 +78,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } protected boolean isAnonymous() { - return CurrentUser.isAnonymous(cmsView.getSubject()); + return cmsView.isAnonymous(); } public final void createUi(Composite parent) { @@ -122,7 +119,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { specificUserUi(credentialsBlock); Label l = new Label(credentialsBlock, SWT.NONE); - l.setData(RWT.CUSTOM_VARIANT, CMS_USER_MENU_ITEM); + CmsUtils.style(l, CMS_USER_MENU_ITEM); l.setText(CmsMsg.logout.lead(locale)); GridData lData = CmsUtils.fillWidth(); lData.widthHint = 120; @@ -151,12 +148,12 @@ public class CmsLogin implements CmsStyles, CallbackHandler { credentialsBlock.setLayoutData(CmsUtils.fillAll()); Integer textWidth = 120; - parent.setData(RWT.CUSTOM_VARIANT, CMS_USER_MENU); + CmsUtils.style(parent, CMS_USER_MENU); // new Label(this, SWT.NONE).setText(CmsMsg.username.lead()); usernameT = new Text(credentialsBlock, SWT.BORDER); usernameT.setMessage(username.lead(locale)); - usernameT.setData(RWT.CUSTOM_VARIANT, CMS_LOGIN_DIALOG_USERNAME); + CmsUtils.style(usernameT, CMS_LOGIN_DIALOG_USERNAME); GridData gd = CmsUtils.fillWidth(); gd.widthHint = textWidth; usernameT.setLayoutData(gd); @@ -164,7 +161,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { // new Label(this, SWT.NONE).setText(CmsMsg.password.lead()); passwordT = new Text(credentialsBlock, SWT.BORDER | SWT.PASSWORD); passwordT.setMessage(password.lead(locale)); - passwordT.setData(RWT.CUSTOM_VARIANT, CMS_LOGIN_DIALOG_PASSWORD); + CmsUtils.style(passwordT, CMS_LOGIN_DIALOG_PASSWORD); gd = CmsUtils.fillWidth(); gd.widthHint = textWidth; passwordT.setLayoutData(gd); @@ -247,17 +244,23 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } protected boolean login() { - Subject subject = cmsView.getSubject(); - LoginContext loginContext; + // Subject subject = cmsView.getLoginContext().getSubject(); + // LoginContext loginContext = cmsView.getLoginContext(); try { // // LOGIN // - new LoginContext(NodeConstants.LOGIN_CONTEXT_ANONYMOUS, subject).logout(); - loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, subject, this); + // loginContext.logout(); + LoginContext loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, this); loginContext.login(); - } catch (FailedLoginException e) { - log.warn(e.getMessage()); + cmsView.authChange(loginContext); + return true; + } catch (LoginException e) { + if (log.isTraceEnabled()) + log.warn("Login failed: " + e.getMessage(), e); + else + log.warn("Login failed: " + e.getMessage()); + try { Thread.sleep(3000); } catch (InterruptedException e2) { @@ -265,12 +268,11 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } // ErrorFeedback.show("Login failed", e); return false; - } catch (LoginException e) { - log.error("Cannot login", e); - return false; } - cmsView.authChange(loginContext); - return true; + // catch (LoginException e) { + // log.error("Cannot login", e); + // return false; + // } } protected void logout() { @@ -281,13 +283,14 @@ public class CmsLogin implements CmsStyles, CallbackHandler { @Override public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (Callback callback : callbacks) { - if (callback instanceof NameCallback) + if (callback instanceof NameCallback && usernameT != null) ((NameCallback) callback).setName(usernameT.getText()); - else if (callback instanceof PasswordCallback) + else if (callback instanceof PasswordCallback && passwordT != null) ((PasswordCallback) callback).setPassword(passwordT.getTextChars()); - else if (callback instanceof HttpRequestCallback) - ((HttpRequestCallback) callback).setRequest(RWT.getRequest()); - else if (callback instanceof LanguageCallback && localeChoice != null) + else if (callback instanceof HttpRequestCallback) { + ((HttpRequestCallback) callback).setRequest(UiContext.getHttpRequest()); + ((HttpRequestCallback) callback).setResponse(UiContext.getHttpResponse()); + } else if (callback instanceof LanguageCallback && localeChoice != null) ((LanguageCallback) callback).setLocale(localeChoice.getSelectedLocale()); } }