From 94dcbd617f3d06ca294d5d151390698e4bddd2cc Mon Sep 17 00:00:00 2001 From: James Moger Date: Wed, 6 Jun 2012 17:00:21 -0400 Subject: [PATCH] Implemented default access restriction (issue 88) --- distrib/gitblit.properties | 10 ++++++++++ docs/04_releases.mkd | 2 ++ src/com/gitblit/GitBlit.java | 2 +- src/com/gitblit/client/EditRepositoryDialog.java | 4 ++++ src/com/gitblit/client/GitblitClient.java | 9 +++++++++ src/com/gitblit/client/RepositoriesPanel.java | 1 + src/com/gitblit/wicket/pages/EditRepositoryPage.java | 5 ++++- 7 files changed, 31 insertions(+), 2 deletions(-) diff --git a/distrib/gitblit.properties b/distrib/gitblit.properties index 6353696e..58833c0f 100644 --- a/distrib/gitblit.properties +++ b/distrib/gitblit.properties @@ -37,6 +37,16 @@ git.enableGitServlet = true # SINCE 0.9.0 git.onlyAccessBareRepositories = false +# The default access restriction for new repositories. +# Valid values are NONE, PUSH, CLONE, VIEW +# NONE = anonymous view, clone, & push +# PUSH = anonymous view & clone and authenticated push +# CLONE = anonymous view, authenticated clone & push +# VIEW = authenticated view, clone, & push +# +# SINCE 1.0.0 +git.defaultAccessRestriction = NONE + # # Groovy Integration # diff --git a/docs/04_releases.mkd b/docs/04_releases.mkd index 8a24acfc..9e61a824 100644 --- a/docs/04_releases.mkd +++ b/docs/04_releases.mkd @@ -16,6 +16,8 @@ #### additions +- Added default access restriction. Applies to new repositories and repositories that have not been configured with Gitblit. (issue 88) + **New:** *git.defaultAccessRestriction = NONE* - Added LDAP User Service with many new *realm.ldap* keys (Github/jcrygier) - Added support for custom repository properties for Groovy hooks (Github/jcrygier) - Added script to facilitate proxy environment setup on Linux (Github/mragab) diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index a86cfd7f..969dc537 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -849,7 +849,7 @@ public class GitBlit implements ServletContextListener { model.useTickets = getConfig(config, "useTickets", false); model.useDocs = getConfig(config, "useDocs", false); model.accessRestriction = AccessRestrictionType.fromName(getConfig(config, - "accessRestriction", null)); + "accessRestriction", settings.getString(Keys.git.defaultAccessRestriction, null))); model.showRemoteBranches = getConfig(config, "showRemoteBranches", false); model.isFrozen = getConfig(config, "isFrozen", false); model.showReadme = getConfig(config, "showReadme", false); diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java index 96c0dd1f..f6a315be 100644 --- a/src/com/gitblit/client/EditRepositoryDialog.java +++ b/src/com/gitblit/client/EditRepositoryDialog.java @@ -487,6 +487,10 @@ public class EditRepositoryDialog extends JDialog { JOptionPane.showMessageDialog(EditRepositoryDialog.this, message, Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE); } + + public void setAccessRestriction(AccessRestrictionType restriction) { + this.accessRestriction.setSelectedItem(restriction); + } public void setUsers(String owner, List all, List selected) { ownerField.setModel(new DefaultComboBoxModel(all.toArray())); diff --git a/src/com/gitblit/client/GitblitClient.java b/src/com/gitblit/client/GitblitClient.java index 09bcaab9..ed5a1337 100644 --- a/src/com/gitblit/client/GitblitClient.java +++ b/src/com/gitblit/client/GitblitClient.java @@ -28,6 +28,7 @@ import java.util.Set; import java.util.TreeSet; import com.gitblit.Constants; +import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.GitBlitException.ForbiddenException; import com.gitblit.GitBlitException.NotAllowedException; import com.gitblit.GitBlitException.UnauthorizedException; @@ -185,6 +186,14 @@ public class GitblitClient implements Serializable { return sb.toString(); } } + + public AccessRestrictionType getDefaultAccessRestriction() { + String restriction = null; + if (settings.hasKey(Keys.git.defaultAccessRestriction)) { + restriction = settings.get(Keys.git.defaultAccessRestriction).currentValue; + } + return AccessRestrictionType.fromName(restriction); + } /** * Returns the list of pre-receive scripts the repository inherited from the diff --git a/src/com/gitblit/client/RepositoriesPanel.java b/src/com/gitblit/client/RepositoriesPanel.java index 7cff4b68..c5d0d35b 100644 --- a/src/com/gitblit/client/RepositoriesPanel.java +++ b/src/com/gitblit/client/RepositoriesPanel.java @@ -357,6 +357,7 @@ public abstract class RepositoriesPanel extends JPanel { protected void createRepository() { EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion()); dialog.setLocationRelativeTo(RepositoriesPanel.this); + dialog.setAccessRestriction(gitblit.getDefaultAccessRestriction()); dialog.setUsers(null, gitblit.getUsernames(), null); dialog.setTeams(gitblit.getTeamnames(), null); dialog.setRepositories(gitblit.getRepositories()); diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java index e057e2a2..572f650d 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -72,7 +72,10 @@ public class EditRepositoryPage extends RootSubPage { // create constructor super(); isCreate = true; - setupPage(new RepositoryModel()); + RepositoryModel model = new RepositoryModel(); + String restriction = GitBlit.getString(Keys.git.defaultAccessRestriction, null); + model.accessRestriction = AccessRestrictionType.fromName(restriction); + setupPage(model); } public EditRepositoryPage(PageParameters params) { -- 2.39.5