| | |
| | | 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;
|
| | |
| | | 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>("");
|
| | |
| | | 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));
|
| | | |
| | | if (!GitBlit.self().supportsCredentialChanges()) {
|
| | | error(MessageFormat.format(getString("gb.userServiceDoesNotPermitPasswordChanges"),
|
| | | GitBlit.getString(Keys.realm.userService, "users.conf")), true);
|
| | | }
|
| | | |
| | | setupPage(getString("gb.changePassword"), GitBlitWebSession.get().getUsername());
|
| | |
|
| | | StatelessForm<Void> form = new StatelessForm<Void>("passwordForm") {
|
| | |
|
| | |
| | | String confirmPassword = ChangePasswordPage.this.confirmPassword.getObject();
|
| | | // ensure passwords match
|
| | | if (!password.equals(confirmPassword)) {
|
| | | error("Passwords do not match!");
|
| | | error(getString("gb.passwordsDoNotMatch"));
|
| | | return;
|
| | | }
|
| | |
|
| | |
| | | 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);
|
| | |
| | | return;
|
| | | }
|
| | | setRedirect(false);
|
| | | info("Password successfully changed.");
|
| | | info(getString("gb.passwordChanged"));
|
| | | setResponsePage(RepositoriesPage.class);
|
| | | }
|
| | | };
|
| | |
| | | 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);
|
| | | }
|
| | | }
|