From 332e93c9e8b2ef756ac2b2ec1055262046f988fa Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 30 Mar 2012 20:01:03 -0400 Subject: [PATCH] Merge pull request #10 from jonnybbb/master --- src/com/gitblit/wicket/pages/RootPage.java | 51 ++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/com/gitblit/wicket/pages/RootPage.java b/src/com/gitblit/wicket/pages/RootPage.java index 686fc72..deb2f4b 100644 --- a/src/com/gitblit/wicket/pages/RootPage.java +++ b/src/com/gitblit/wicket/pages/RootPage.java @@ -32,7 +32,6 @@ import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.form.PasswordTextField; -import org.apache.wicket.markup.html.form.StatelessForm; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -48,6 +47,7 @@ import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.PageRegistration; import com.gitblit.wicket.PageRegistration.DropDownMenuItem; +import com.gitblit.wicket.SessionlessForm; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.NavigationPanel; @@ -101,6 +101,9 @@ pages.add(new PageRegistration("gb.repositories", RepositoriesPage.class, getRootPageParameters())); pages.add(new PageRegistration("gb.activity", ActivityPage.class, getRootPageParameters())); + if (GitBlit.getBoolean(Keys.web.allowLuceneIndexing, true)) { + pages.add(new PageRegistration("gb.search", LuceneSearchPage.class)); + } if (showAdmin) { pages.add(new PageRegistration("gb.users", UsersPage.class)); } @@ -116,7 +119,7 @@ add(navPanel); // login form - StatelessForm<Void> loginForm = new StatelessForm<Void>("loginForm") { + SessionlessForm<Void> loginForm = new SessionlessForm<Void>("loginForm", getClass(), getPageParameters()) { private static final long serialVersionUID = 1L; @@ -127,11 +130,11 @@ UserModel user = GitBlit.self().authenticate(username, password); if (user == null) { - error("Invalid username or password!"); + error(getString("gb.invalidUsernameOrPassword")); } else if (user.username.equals(Constants.FEDERATION_USER)) { // disallow the federation user from logging in via the // web ui - error("Invalid username or password!"); + error(getString("gb.invalidUsernameOrPassword")); user = null; } else { loginUser(user); @@ -159,9 +162,9 @@ } else if (showAdmin) { int pendingProposals = GitBlit.self().getPendingFederationProposals().size(); if (pendingProposals == 1) { - info("There is 1 federation proposal awaiting review."); + info(getString("gb.OneProposalToReview")); } else if (pendingProposals > 1) { - info(MessageFormat.format("There are {0} federation proposals awaiting review.", + info(MessageFormat.format(getString("gb.nFederationProposalsToReview"), pendingProposals)); } } @@ -171,12 +174,19 @@ private PageParameters getRootPageParameters() { if (reusePageParameters()) { - PageParameters params = getPageParameters(); - if (params != null) { + PageParameters pp = getPageParameters(); + if (pp != null) { + PageParameters params = new PageParameters(pp); // remove named repository parameter params.remove("r"); - } - return params; + + // remove days back parameter if it is the default value + if (params.containsKey("db") + && params.getInt("db") == GitBlit.getInteger(Keys.web.activityDuration, 14)) { + params.remove("db"); + } + return params; + } } return null; } @@ -188,7 +198,10 @@ private void loginUser(UserModel user) { if (user != null) { // Set the user into the session - GitBlitWebSession.get().setUser(user); + GitBlitWebSession session = GitBlitWebSession.get(); + // issue 62: fix session fixation vulnerability + session.replaceSession(); + session.setUser(user); // Set Cookie if (GitBlit.getBoolean(Keys.web.allowCookieAuthentication, false)) { @@ -197,8 +210,16 @@ } if (!continueToOriginalDestination()) { - // Redirect to home page - setResponsePage(getApplication().getHomePage()); + PageParameters params = getPageParameters(); + if (params == null) { + // redirect to this page + setResponsePage(getClass()); + } else { + // Strip username and password and redirect to this page + params.remove("username"); + params.remove("password"); + setResponsePage(getClass(), params); + } } } } @@ -262,7 +283,7 @@ if (addedExpression) { filters.add(new DropDownMenuItem()); } - } + } return new ArrayList<DropDownMenuItem>(filters); } @@ -362,7 +383,7 @@ if (!hasParameter) { models.addAll(availableModels); } - + // time-filter the list if (daysBack > 0) { Calendar cal = Calendar.getInstance(); -- Gitblit v1.9.1