From f1c3a882d12aede461e3c8ca3ebd298bdb28bc5d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 02 Dec 2012 13:16:39 -0500
Subject: [PATCH] Corrected certificatge bundle unit test
---
src/com/gitblit/wicket/pages/RootSubPage.java | 37 ++++++++++++++++++++++++++++++++-----
1 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/src/com/gitblit/wicket/pages/RootSubPage.java b/src/com/gitblit/wicket/pages/RootSubPage.java
index 30d296e..e7e12cc 100644
--- a/src/com/gitblit/wicket/pages/RootSubPage.java
+++ b/src/com/gitblit/wicket/pages/RootSubPage.java
@@ -19,11 +19,14 @@
import java.util.List;
import org.apache.wicket.PageParameters;
+import org.apache.wicket.Session;
import org.apache.wicket.markup.html.basic.Label;
-import com.gitblit.GitBlit;
import com.gitblit.Constants.AccessRestrictionType;
+import com.gitblit.Constants.AuthorizationControl;
+import com.gitblit.GitBlit;
import com.gitblit.models.RepositoryModel;
+import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
/**
@@ -36,10 +39,27 @@
public RootSubPage() {
super();
+ createPageMapIfNeeded();
}
public RootSubPage(PageParameters params) {
super(params);
+ createPageMapIfNeeded();
+ }
+
+ protected boolean requiresPageMap() {
+ return false;
+ }
+
+ protected void createPageMapIfNeeded() {
+ if (requiresPageMap()) {
+ // because Gitblit strives for page-statelessness
+ // Wicket seems to get confused as to when it really should
+ // generate a page map for complex pages. Conditionally ensure we
+ // have a page map for complex AJAX pages like the EditNNN pages.
+ Session.get().pageMapForName(null, true);
+ setVersioned(true);
+ }
}
@Override
@@ -52,7 +72,7 @@
super.setupPage("", pageName);
}
- protected List<String> getAccessRestrictedRepositoryList(boolean includeWildcards) {
+ protected List<String> getAccessRestrictedRepositoryList(boolean includeWildcards, UserModel user) {
// build list of access-restricted projects
String lastProject = null;
List<String> repos = new ArrayList<String>();
@@ -62,19 +82,26 @@
// all repositories excluding personal repositories
repos.add("[^~].*");
}
+
for (String repo : GitBlit.self().getRepositoryList()) {
RepositoryModel repositoryModel = GitBlit.self().getRepositoryModel(repo);
- if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) {
+ if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)
+ && repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED)) {
+ if (user != null &&
+ (repositoryModel.isOwner(user.username) || repositoryModel.isUsersPersonalRepository(user.username))) {
+ // exclude Owner or personal repositories
+ continue;
+ }
if (includeWildcards) {
if (lastProject == null || !lastProject.equalsIgnoreCase(repositoryModel.projectPath)) {
- lastProject = repositoryModel.projectPath;
+ lastProject = repositoryModel.projectPath.toLowerCase();
if (!StringUtils.isEmpty(repositoryModel.projectPath)) {
// regex for all repositories within a project
repos.add(repositoryModel.projectPath + "/.*");
}
}
}
- repos.add(repo);
+ repos.add(repo.toLowerCase());
}
}
return repos;
--
Gitblit v1.9.1