+ pwd1 = createLP(body, UserStyles.USER_FORM_TEXT, "Enter password");
+ pwd2 = createLP(body, UserStyles.USER_FORM_TEXT, "Re-Enter");
+
+ final Link link = new Link(body, SWT.NONE);
+ link.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 2,
+ 1));
+ link.setText("<a>Change password</a>");
+ link.addSelectionListener(new SelectionAdapter() {
+ private static final long serialVersionUID = 8348668888548451776L;
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ String msg = null;
+ if ("".equals(pwd1.getText().trim()))
+ msg = "Passwords cannot be blank";
+ else if (!pwd1.getText().equals(pwd2.getText()))
+ msg = "Passwords do not match, please try again.";
+
+ if (msg != null) {
+ MessageDialog.openError(link.getShell(), "Error", msg);
+ } else {
+ try {
+ String username = getNode().getProperty(
+ ArgeoNames.ARGEO_USER_ID).getString();
+ if (userAdminService.userExists(username)) {
+ JcrUserDetails userDetails = (JcrUserDetails) userAdminService
+ .loadUserByUsername(username);
+ userDetails = userDetails.cloneWithNewPassword(pwd1
+ .getText());
+ userAdminService.updateUser(userDetails);
+ MessageDialog.openInformation(link.getShell(),
+ "Password changed", "Password changed.");
+ }
+ } catch (Exception re) {
+ throw new ArgeoException(
+ "unable to reset password for user "
+ + getNode(), re);
+ }
+ }
+
+ pwd1.setText("");
+ pwd2.setText("");
+
+ }
+ });