From 130fc51c2946c2e706e19cd82cc49beba844e223 Mon Sep 17 00:00:00 2001 From: Nicolas Micoud Date: Fri, 14 Dec 2018 14:25:19 +0100 Subject: [PATCH] IDEMPIERE-3826 Make ChangePasswordPanel a little more user friendly --- .../webui/panel/ChangePasswordPanel.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ChangePasswordPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ChangePasswordPanel.java index 0743ed76f6..b21860250b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ChangePasswordPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ChangePasswordPanel.java @@ -15,6 +15,7 @@ package org.adempiere.webui.panel; +import java.util.ArrayList; import java.util.Properties; import org.adempiere.exceptions.AdempiereException; @@ -32,6 +33,8 @@ import org.adempiere.webui.theme.ITheme; import org.adempiere.webui.theme.ThemeManager; import org.adempiere.webui.util.ZKUpdateUtil; import org.adempiere.webui.window.LoginWindow; +import org.compiere.model.MPasswordHistory; +import org.compiere.model.MPasswordRule; import org.compiere.model.MSysConfig; import org.compiere.model.MUser; import org.compiere.util.CLogger; @@ -44,8 +47,10 @@ import org.zkoss.zhtml.Div; import org.zkoss.zhtml.Table; import org.zkoss.zhtml.Td; import org.zkoss.zhtml.Tr; +import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.Clients; import org.zkoss.zul.Image; @@ -59,7 +64,7 @@ public class ChangePasswordPanel extends Window implements EventListener /** * */ - private static final long serialVersionUID = 6055606520280550335L; + private static final long serialVersionUID = -4117126419866788951L; private static CLogger logger = CLogger.getCLogger(ChangePasswordPanel.class); @@ -246,12 +251,14 @@ public class ChangePasswordPanel extends Window implements EventListener txtNewPassword.setId("txtNewPassword"); txtNewPassword.setType("password"); txtNewPassword.setCols(25); + txtNewPassword.addEventListener(Events.ON_BLUR, this); ZKUpdateUtil.setWidth(txtNewPassword, "220px"); txtRetypeNewPassword = new Textbox(); txtRetypeNewPassword.setId("txtRetypeNewPassword"); txtRetypeNewPassword.setType("password"); txtRetypeNewPassword.setCols(25); + txtRetypeNewPassword.addEventListener(Events.ON_BLUR, this); ZKUpdateUtil.setWidth(txtRetypeNewPassword, "220px"); txtAnswer = new Textbox(); @@ -272,6 +279,21 @@ public class ChangePasswordPanel extends Window implements EventListener SessionManager.logoutSession(); wndLogin.loginCancelled(); } + else if (event.getTarget() == txtNewPassword) { + MPasswordRule pwdrule = MPasswordRule.getRules(Env.getCtx(), null); + if (pwdrule != null) { + try { + pwdrule.validate(m_userName, txtNewPassword.getValue(), new ArrayList()); + } + catch (Exception e) { + throw new WrongValueException(txtNewPassword, e.getMessage()); + } + } + } + else if (event.getTarget() == txtRetypeNewPassword) { + if (!txtNewPassword.getValue().equals(txtRetypeNewPassword.getValue())) + throw new WrongValueException(txtRetypeNewPassword, Msg.getMsg(m_ctx, "PasswordNotMatch")); + } } public void validateChangePassword()