X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fwidgets%2Fauth%2FCmsLogin.java;h=76263c1f2a5d514c3c5533008802679a71802f3a;hb=a9731453273884138ca48036fe6fe49da729c49b;hp=21f101aea4628ae3a87bc0eac0b0430da95df97f;hpb=972528f4de2d00690362c01d3ce843ca9cd10250;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 21f101aea..76263c1f2 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 @@ -2,14 +2,11 @@ package org.argeo.cms.widgets.auth; import static org.argeo.cms.CmsMsg.password; import static org.argeo.cms.CmsMsg.username; -import static org.argeo.cms.auth.AuthConstants.LOGIN_CONTEXT_ANONYMOUS; -import static org.argeo.cms.auth.AuthConstants.LOGIN_CONTEXT_USER; 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; @@ -23,14 +20,15 @@ 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.CmsStyles; -import org.argeo.cms.CmsView; 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.eclipse.rap.rwt.RWT; +import org.argeo.eclipse.ui.specific.UiContext; +import org.argeo.node.NodeConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; @@ -82,7 +80,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } protected boolean isAnonymous() { - return CurrentUser.isAnonymous(cmsView.getSubject()); + return CurrentUser.isAnonymous(cmsView.getLoginContext().getSubject()); } public final void createUi(Composite parent) { @@ -123,7 +121,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; @@ -152,12 +150,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); @@ -165,7 +163,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); @@ -248,17 +246,21 @@ 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(LOGIN_CONTEXT_ANONYMOUS, subject).logout(); - loginContext = new LoginContext(LOGIN_CONTEXT_USER, subject, this); + loginContext.logout(); + loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, this); loginContext.login(); - } catch (FailedLoginException e) { - log.warn(e.getMessage()); + } 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) { @@ -266,10 +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; } + // catch (LoginException e) { + // log.error("Cannot login", e); + // return false; + // } cmsView.authChange(loginContext); return true; } @@ -282,13 +285,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()); } }