From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 25 Feb 2013 08:40:30 -0500 Subject: [PATCH] Merge pull request #75 from thefake/master --- src/com/gitblit/wicket/pages/ChangePasswordPage.java | 27 ++++++++++++++++++++------- 1 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/com/gitblit/wicket/pages/ChangePasswordPage.java b/src/com/gitblit/wicket/pages/ChangePasswordPage.java index 660a813..c401420 100644 --- a/src/com/gitblit/wicket/pages/ChangePasswordPage.java +++ b/src/com/gitblit/wicket/pages/ChangePasswordPage.java @@ -32,7 +32,7 @@ import com.gitblit.utils.StringUtils; import com.gitblit.wicket.GitBlitWebSession; -public class ChangePasswordPage extends StandardPage { +public class ChangePasswordPage extends RootSubPage { IModel<String> password = new Model<String>(""); IModel<String> confirmPassword = new Model<String>(""); @@ -50,7 +50,14 @@ // no authentication enabled throw new RestartResponseException(getApplication().getHomePage()); } - setupPage(getString("gb.changePassword"), GitBlitWebSession.get().getUser().username); + + UserModel user = GitBlitWebSession.get().getUser(); + if (!GitBlit.self().supportsCredentialChanges(user)) { + error(MessageFormat.format(getString("gb.userServiceDoesNotPermitPasswordChanges"), + GitBlit.getString(Keys.realm.userService, "${baseFolder}/users.conf")), true); + } + + setupPage(getString("gb.changePassword"), user.username); StatelessForm<Void> form = new StatelessForm<Void>("passwordForm") { @@ -62,7 +69,7 @@ String confirmPassword = ChangePasswordPage.this.confirmPassword.getObject(); // ensure passwords match if (!password.equals(confirmPassword)) { - error("Passwords do not match!"); + error(getString("gb.passwordsDoNotMatch")); return; } @@ -72,19 +79,23 @@ minLength = 4; } if (password.length() < minLength) { - error(MessageFormat.format( - "Password is too short. Minimum length is {0} characters.", minLength)); + error(MessageFormat.format(getString("gb.passwordTooShort"), minLength)); return; } + + UserModel user = GitBlitWebSession.get().getUser(); // convert to MD5 digest, if appropriate String type = GitBlit.getString(Keys.realm.passwordStorage, "md5"); if (type.equalsIgnoreCase("md5")) { // store MD5 digest of password password = StringUtils.MD5_TYPE + StringUtils.getMD5(password); + } else if (type.equalsIgnoreCase("combined-md5")) { + // store MD5 digest of username+password + password = StringUtils.COMBINED_MD5_TYPE + + StringUtils.getMD5(user.username.toLowerCase() + password); } - UserModel user = GitBlitWebSession.get().getUser(); user.password = password; try { GitBlit.self().updateUserModel(user.username, user, false); @@ -97,7 +108,7 @@ return; } setRedirect(false); - info("Password successfully changed."); + info(getString("gb.passwordChanged")); setResponsePage(RepositoriesPage.class); } }; @@ -115,6 +126,8 @@ @Override public void onSubmit() { + setRedirect(false); + error(getString("gb.passwordChangeAborted")); setResponsePage(RepositoriesPage.class); } }; -- Gitblit v1.9.1