X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui.workbench%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Fcommands%2FOpenChangePasswordDialog.java;h=30836b948c19593f6fd15661524b568861c2785f;hb=5b444174cd13680f99944026877f6cac2e1faba1;hp=cd48598746c3e30dd6bff7201626ba1f679a6489;hpb=80033cfabcef26b413bf3f21ac8371bbe43ef882;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/commands/OpenChangePasswordDialog.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/commands/OpenChangePasswordDialog.java index cd4859874..30836b948 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/commands/OpenChangePasswordDialog.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/commands/OpenChangePasswordDialog.java @@ -23,6 +23,7 @@ import static org.argeo.cms.CmsMsg.repeatNewPassword; import static org.eclipse.jface.dialogs.IMessageProvider.INFORMATION; import java.security.AccessController; +import java.util.Arrays; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; @@ -34,6 +35,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.cms.CmsException; import org.argeo.eclipse.ui.dialogs.ErrorFeedback; +import org.argeo.node.security.CryptoKeyring; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; @@ -58,6 +60,7 @@ public class OpenChangePasswordDialog extends AbstractHandler { private final static Log log = LogFactory.getLog(OpenChangePasswordDialog.class); private UserAdmin userAdmin; private UserTransaction userTransaction; + private CryptoKeyring keyring = null; public Object execute(ExecutionEvent event) throws ExecutionException { ChangePasswordDialog dialog = new ChangePasswordDialog(HandlerUtil.getActiveShell(event), userAdmin); @@ -81,11 +84,15 @@ public class OpenChangePasswordDialog extends AbstractHandler { User user = (User) userAdmin.getRole(dn.toString()); if (!user.hasCredential(null, oldPassword)) throw new CmsException("Invalid password"); - if (newPassword.equals("")) + if (Arrays.equals(newPassword, new char[0])) throw new CmsException("New password empty"); try { userTransaction.begin(); user.getCredentials().put(null, newPassword); + if (keyring != null) { + keyring.changePassword(oldPassword, newPassword); + // TODO change secret keys in the CMS session + } userTransaction.commit(); } catch (Exception e) { try { @@ -124,6 +131,7 @@ public class OpenChangePasswordDialog extends AbstractHandler { setMessage(changePassword.lead(), INFORMATION); parent.pack(); + oldPassword.setFocus(); return composite; } @@ -160,4 +168,9 @@ public class OpenChangePasswordDialog extends AbstractHandler { public void setUserTransaction(UserTransaction userTransaction) { this.userTransaction = userTransaction; } + + public void setKeyring(CryptoKeyring keyring) { + this.keyring = keyring; + } + }