]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui/src/org/argeo/security/ui/commands/OpenChangePasswordDialog.java
Continue framework clean up.
[lgpl/argeo-commons.git] / org.argeo.security.ui / src / org / argeo / security / ui / commands / OpenChangePasswordDialog.java
index ed3e2c13c7e8c1eaeebbaa791ff20fad5f31835e..5f2a9caddc0f6a9a67cdeaa348de089ca7a21df2 100644 (file)
  */
 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());
                }
 
        }