diff options
Diffstat (limited to 'src/com/gitblit/wicket/pages/RootSubPage.java')
-rw-r--r-- | src/com/gitblit/wicket/pages/RootSubPage.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/com/gitblit/wicket/pages/RootSubPage.java b/src/com/gitblit/wicket/pages/RootSubPage.java index f7572b14..30d296ed 100644 --- a/src/com/gitblit/wicket/pages/RootSubPage.java +++ b/src/com/gitblit/wicket/pages/RootSubPage.java @@ -15,9 +15,15 @@ */
package com.gitblit.wicket.pages;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
+import com.gitblit.GitBlit;
+import com.gitblit.Constants.AccessRestrictionType;
+import com.gitblit.models.RepositoryModel;
import com.gitblit.utils.StringUtils;
/**
@@ -45,4 +51,32 @@ public abstract class RootSubPage extends RootPage { add(new Label("pageSubName", subName));
super.setupPage("", pageName);
}
+
+ protected List<String> getAccessRestrictedRepositoryList(boolean includeWildcards) {
+ // build list of access-restricted projects
+ String lastProject = null;
+ List<String> repos = new ArrayList<String>();
+ if (includeWildcards) {
+ // all repositories
+ repos.add(".*");
+ // 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 (includeWildcards) {
+ if (lastProject == null || !lastProject.equalsIgnoreCase(repositoryModel.projectPath)) {
+ lastProject = repositoryModel.projectPath;
+ if (!StringUtils.isEmpty(repositoryModel.projectPath)) {
+ // regex for all repositories within a project
+ repos.add(repositoryModel.projectPath + "/.*");
+ }
+ }
+ }
+ repos.add(repo);
+ }
+ }
+ return repos;
+ }
}
|