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 | 54 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 30 insertions(+), 24 deletions(-) diff --git a/src/com/gitblit/wicket/pages/ChangePasswordPage.java b/src/com/gitblit/wicket/pages/ChangePasswordPage.java index 42cd2b7..c401420 100644 --- a/src/com/gitblit/wicket/pages/ChangePasswordPage.java +++ b/src/com/gitblit/wicket/pages/ChangePasswordPage.java @@ -18,17 +18,13 @@ import java.text.MessageFormat; import org.apache.wicket.RestartResponseException; -import org.apache.wicket.markup.html.WebPage; -import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.StatelessForm; -import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.protocol.http.WebResponse; -import com.gitblit.Constants; import com.gitblit.GitBlit; import com.gitblit.GitBlitException; import com.gitblit.Keys; @@ -36,7 +32,7 @@ import com.gitblit.utils.StringUtils; import com.gitblit.wicket.GitBlitWebSession; -public class ChangePasswordPage extends WebPage { +public class ChangePasswordPage extends RootSubPage { IModel<String> password = new Model<String>(""); IModel<String> confirmPassword = new Model<String>(""); @@ -49,14 +45,19 @@ throw new RestartResponseException(getApplication().getHomePage()); } - if (!GitBlit.getBoolean(Keys.web.authenticateAdminPages, true) && !GitBlit.getBoolean(Keys.web.authenticateViewPages, false)) { + if (!GitBlit.getBoolean(Keys.web.authenticateAdminPages, true) + && !GitBlit.getBoolean(Keys.web.authenticateViewPages, false)) { // no authentication enabled throw new RestartResponseException(getApplication().getHomePage()); } - - add(new Label("title", GitBlit.getString(Keys.web.siteName, Constants.NAME))); - add(new Label("name", 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") { @@ -68,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; } @@ -78,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); @@ -103,7 +108,7 @@ return; } setRedirect(false); - info("Password successfully changed."); + info(getString("gb.passwordChanged")); setResponsePage(RepositoriesPage.class); } }; @@ -114,20 +119,21 @@ confirmPassword); confirmPasswordField.setResetPassword(false); form.add(confirmPasswordField); - form.add(new FeedbackPanel("feedback")); - + form.add(new Button("save")); - Button cancel = new Button("cancel"){ + Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { - setResponsePage(RepositoriesPage.class); - } - }; - cancel.setDefaultFormProcessing(false); - form.add(cancel); - + setRedirect(false); + error(getString("gb.passwordChangeAborted")); + setResponsePage(RepositoriesPage.class); + } + }; + cancel.setDefaultFormProcessing(false); + form.add(cancel); + add(form); } } -- Gitblit v1.9.1