X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fcommands%2FOpenChangePasswordDialog.java;h=5f2a9caddc0f6a9a67cdeaa348de089ca7a21df2;hb=ba8f8a6fb8ad9649dd03b2ac4670d194f0e1be79;hp=ed3e2c13c7e8c1eaeebbaa791ff20fad5f31835e;hpb=7eab8a52b56a763e0d0e5153d298ce658e41a22f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui/src/org/argeo/security/ui/commands/OpenChangePasswordDialog.java b/org.argeo.security.ui/src/org/argeo/security/ui/commands/OpenChangePasswordDialog.java index ed3e2c13c..5f2a9cadd 100644 --- a/org.argeo.security.ui/src/org/argeo/security/ui/commands/OpenChangePasswordDialog.java +++ b/org.argeo.security.ui/src/org/argeo/security/ui/commands/OpenChangePasswordDialog.java @@ -15,6 +15,13 @@ */ package org.argeo.security.ui.commands; +import static org.argeo.cms.CmsMsg.changePassword; +import static org.argeo.cms.CmsMsg.currentPassword; +import static org.argeo.cms.CmsMsg.newPassword; +import static org.argeo.cms.CmsMsg.passwordChanged; +import static org.argeo.cms.CmsMsg.repeatNewPassword; +import static org.eclipse.jface.dialogs.IMessageProvider.INFORMATION; + import java.security.AccessController; import javax.naming.InvalidNameException; @@ -26,11 +33,11 @@ import javax.transaction.UserTransaction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; +import org.argeo.eclipse.ui.dialogs.ErrorFeedback; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; @@ -58,11 +65,12 @@ public class OpenChangePasswordDialog extends AbstractHandler { HandlerUtil.getActiveShell(event), userAdmin); if (dialog.open() == Dialog.OK) { MessageDialog.openInformation(HandlerUtil.getActiveShell(event), - "Password changed", "Password changed."); + passwordChanged.lead(), passwordChanged.lead()); } return null; } + @SuppressWarnings("unchecked") protected void changePassword(char[] oldPassword, char[] newPassword) { Subject subject = Subject.getSubject(AccessController.getContext()); String name = subject.getPrincipals(X500Principal.class).iterator() @@ -73,12 +81,14 @@ public class OpenChangePasswordDialog extends AbstractHandler { } catch (InvalidNameException e) { throw new ArgeoException("Invalid user dn " + name, e); } + User user = (User) userAdmin.getRole(dn.toString()); + if (!user.hasCredential(null, oldPassword)) + throw new ArgeoException("Invalid password"); + if (newPassword.equals("")) + throw new ArgeoException("New password empty"); try { userTransaction.begin(); - User user = (User) userAdmin.getRole(dn.toString()); - if (user.hasCredential(null, oldPassword)) { - user.getCredentials().put(null, newPassword); - } + user.getCredentials().put(null, newPassword); userTransaction.commit(); } catch (Exception e) { try { @@ -103,7 +113,7 @@ public class OpenChangePasswordDialog extends AbstractHandler { class ChangePasswordDialog extends TitleAreaDialog { private static final long serialVersionUID = -6963970583882720962L; - private Text currentPassword, newPassword1, newPassword2; + private Text oldPassword, newPassword1, newPassword2; public ChangePasswordDialog(Shell parentShell, UserAdmin securityService) { super(parentShell); @@ -121,27 +131,25 @@ public class OpenChangePasswordDialog extends AbstractHandler { composite.setLayout(new GridLayout(2, false)); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); - currentPassword = createLP(composite, "Current password"); - newPassword1 = createLP(composite, "New password"); - newPassword2 = createLP(composite, "Repeat new password"); + oldPassword = createLP(composite, currentPassword.lead()); + newPassword1 = createLP(composite, newPassword.lead()); + newPassword2 = createLP(composite, repeatNewPassword.lead()); - setMessage("Change password", IMessageProvider.INFORMATION); + setMessage(changePassword.lead(), INFORMATION); parent.pack(); return composite; } @Override protected void okPressed() { - if (!newPassword1.getText().equals(newPassword2.getText())) - throw new ArgeoException("Passwords are different"); try { - changePassword(currentPassword.getTextChars(), + if (!newPassword1.getText().equals(newPassword2.getText())) + throw new ArgeoException("New passwords are different"); + changePassword(oldPassword.getTextChars(), newPassword1.getTextChars()); close(); } catch (Exception e) { - MessageDialog.openError(newPassword1.getShell(), "Error", - "Cannot change password"); - e.printStackTrace(); + ErrorFeedback.show("Cannot change password", e); } } @@ -156,7 +164,7 @@ public class OpenChangePasswordDialog extends AbstractHandler { protected void configureShell(Shell shell) { super.configureShell(shell); - shell.setText("Change password"); + shell.setText(changePassword.lead()); } }