From 77319330a8dec1f521e78a2df381f66c1b43100d Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 23 Nov 2015 09:53:41 +0000 Subject: [PATCH] Fix exception when providing bad credentials git-svn-id: https://svn.argeo.org/commons/trunk@8586 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../src/org/argeo/cms/widgets/auth/CmsLogin.java | 16 +++++++++++----- .../argeo/cms/widgets/auth/CmsLoginShell.java | 9 ++++++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java b/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java index 91c28078e..298b3965b 100644 --- a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java +++ b/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java @@ -20,7 +20,8 @@ import javax.security.auth.callback.UnsupportedCallbackException; import javax.security.auth.login.LoginContext; import javax.security.auth.login.LoginException; -import org.argeo.cms.CmsException; +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; @@ -48,6 +49,8 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class CmsLogin implements CmsStyles, CallbackHandler { + private final static Log log = LogFactory.getLog(CmsLogin.class); + private Composite parent; private Text usernameT, passwordT; private Composite credentialsBlock; @@ -205,7 +208,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { // save already entered values String usernameStr = usernameT.getText(); char[] pwd = passwordT.getTextChars(); - + for (Control child : parent.getChildren()) child.dispose(); createContents(parent); @@ -250,7 +253,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { return c; } - protected void login() { + protected boolean login() { Subject subject = cmsView.getSubject(); LoginContext loginContext; try { @@ -260,10 +263,13 @@ public class CmsLogin implements CmsStyles, CallbackHandler { new LoginContext(LOGIN_CONTEXT_ANONYMOUS, subject).logout(); loginContext = new LoginContext(LOGIN_CONTEXT_USER, subject, this); loginContext.login(); - } catch (LoginException e1) { - throw new CmsException("Cannot authenticate", e1); + } catch (LoginException e) { + // throw new CmsException("Cannot authenticate", e1); + log.error("Cannot login", e); + return false; } cmsView.authChange(loginContext); + return true; } protected void logout() { diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java b/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java index 66dc5a673..a1ca97090 100644 --- a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java +++ b/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java @@ -30,9 +30,12 @@ public class CmsLoginShell extends CmsLogin { } @Override - protected void login() { - super.login(); - closeShell(); + protected boolean login() { + try { + return super.login(); + } finally { + closeShell(); + } } @Override -- 2.30.2