diff --git a/src/main/java/edu/harvard/iq/dataverse/DataverseUserPage.java b/src/main/java/edu/harvard/iq/dataverse/DataverseUserPage.java index 9723e7cc6e6..f7e781e335e 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DataverseUserPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DataverseUserPage.java @@ -36,6 +36,9 @@ public enum EditMode {CREATE, INFO, EDIT, CHANGE}; @NotBlank(message = "Please enter a password for your account.") private String inputPassword; + @NotBlank(message = "Please enter a password for your account.") + private String currentPassword; + public DataverseUser getDataverseUser() { return dataverseUser; } @@ -59,11 +62,18 @@ public String getInputPassword() { public void setInputPassword(String inputPassword) { this.inputPassword = inputPassword; } - + + public String getCurrentPassword() { + return currentPassword; + } + + public void setCurrentPassword(String currentPassword) { + this.currentPassword = currentPassword; + } + public void init() { if (dataverseUser.getId() != null) { dataverseUser = dataverseUserService.find(dataverseUser.getId()); - } else { try { dataverseUser = dataverseUserService.findDataverseUser(); @@ -106,8 +116,18 @@ public void validateUserName(FacesContext context, UIComponent toValidate, Objec } } + public void validatePassword(FacesContext context, UIComponent toValidate, Object value) { + String password = (String) value; + String encryptedPassword = PasswordEncryption.getInstance().encrypt(password); + if (!encryptedPassword.equals(dataverseUser.getEncryptedPassword())) { + ((UIInput)toValidate).setValid(false); + FacesMessage message = new FacesMessage("Password is incorrect."); + context.addMessage(toValidate.getClientId(context), message); + } + } + public void save(ActionEvent e) { - if (editMode == EditMode.CREATE) { + if (editMode == EditMode.CREATE|| editMode == EditMode.CHANGE) { if (inputPassword!=null) { dataverseUser.setEncryptedPassword(dataverseUserService.encryptPassword(inputPassword)); }