From 9da97003c7f33a64ae5060f413f9c4c5d26efe78 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 19 May 2011 19:01:45 -0400 Subject: [PATCH] Critical fix for servlet. --- src/com/gitblit/wicket/BasePage.java | 74 +++++++++++++++++++++++++++++++------ 1 files changed, 62 insertions(+), 12 deletions(-) diff --git a/src/com/gitblit/wicket/BasePage.java b/src/com/gitblit/wicket/BasePage.java index 9aa7baa..733f4f7 100644 --- a/src/com/gitblit/wicket/BasePage.java +++ b/src/com/gitblit/wicket/BasePage.java @@ -1,31 +1,38 @@ package com.gitblit.wicket; +import java.util.LinkedHashMap; +import java.util.Map; import java.util.TimeZone; import javax.servlet.http.HttpServletRequest; import org.apache.wicket.PageParameters; +import org.apache.wicket.RestartResponseAtInterceptPageException; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.protocol.http.servlet.ServletWebRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.gitblit.Constants; +import com.gitblit.Constants.AccessRestrictionType; +import com.gitblit.GitBlit; import com.gitblit.Keys; -import com.gitblit.StoredSettings; import com.gitblit.wicket.pages.SummaryPage; public abstract class BasePage extends WebPage { - Logger logger = LoggerFactory.getLogger(BasePage.class); + private final Logger logger; public BasePage() { super(); + logger = LoggerFactory.getLogger(getClass()); } public BasePage(PageParameters params) { super(params); + logger = LoggerFactory.getLogger(getClass()); } protected void setupPage(String repositoryName, String pageName) { @@ -35,7 +42,7 @@ add(new Label("title", getServerName())); } // header - String siteName = StoredSettings.getString(Keys.web_siteName, Constants.NAME); + String siteName = GitBlit.self().settings().getString(Keys.web.siteName, Constants.NAME); if (siteName == null || siteName.trim().length() == 0) { siteName = Constants.NAME; } @@ -43,22 +50,50 @@ add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName))); add(new Label("pageName", pageName)); + // Feedback panel for info, warning, and non-fatal error messages + add(new FeedbackPanel("feedback")); + // footer - User user = null; - if (StoredSettings.getBoolean(Keys.web_authenticate, true)) { - user = GitBlitWebSession.get().getUser(); - add(new Label("userText", "Logout " + user.toString())); + if (GitBlit.self().settings().getBoolean(Keys.web.authenticateViewPages, true) || GitBlit.self().settings().getBoolean(Keys.web.authenticateAdminPages, true)) { + if (GitBlitWebSession.get().isLoggedIn()) { + // logout + add(new LinkPanel("userPanel", null, getString("gb.logout") + " " + GitBlitWebSession.get().getUser().toString(), LogoutPage.class)); + } else { + // login + add(new LinkPanel("userPanel", null, getString("gb.login"), LoginPage.class)); + } } else { - add(new Label("userText", "")); + add(new Label("userPanel", "")); } add(new Label("gbVersion", "v" + Constants.VERSION)); - if (StoredSettings.getBoolean(Keys.server_aggressiveHeapManagement, false)) { + if (GitBlit.self().settings().getBoolean(Keys.web.aggressiveHeapManagement, false)) { System.gc(); } } + protected Map<AccessRestrictionType, String> getAccessRestrictions() { + Map<AccessRestrictionType, String> map = new LinkedHashMap<AccessRestrictionType, String>(); + for (AccessRestrictionType type : AccessRestrictionType.values()) { + switch (type) { + case NONE: + map.put(type, getString("gb.notRestricted")); + break; + case PUSH: + map.put(type, getString("gb.pushRestricted")); + break; + case CLONE: + map.put(type, getString("gb.cloneRestricted")); + break; + case VIEW: + map.put(type, getString("gb.viewRestricted")); + break; + } + } + return map; + } + protected TimeZone getTimeZone() { - return StoredSettings.getBoolean(Keys.web_useClientTimezone, false) ? GitBlitWebSession.get().getTimezone() : TimeZone.getDefault(); + return GitBlit.self().settings().getBoolean(Keys.web.useClientTimezone, false) ? GitBlitWebSession.get().getTimezone() : TimeZone.getDefault(); } protected String getServerName() { @@ -67,8 +102,23 @@ return req.getServerName(); } - public void error(String message, Throwable t) { - super.error(message); + public void error(String message, boolean redirect) { + logger.error(message); + if (redirect) { + GitBlitWebSession.get().cacheErrorMessage(message); + throw new RestartResponseAtInterceptPageException(getApplication().getHomePage()); + } else { + super.error(message); + } + } + + public void error(String message, Throwable t, boolean redirect) { logger.error(message, t); + if (redirect) { + GitBlitWebSession.get().cacheErrorMessage(message); + throw new RestartResponseAtInterceptPageException(getApplication().getHomePage()); + } else { + super.error(message); + } } } -- Gitblit v1.9.1