From fe24a0be919653d9e502f7729d9a804f2e28435d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 07 Dec 2011 19:33:10 -0500
Subject: [PATCH] Teams support.
---
src/com/gitblit/GitBlit.java | 81 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 80 insertions(+), 1 deletions(-)
diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index 60a96e6..13dc3fa 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -69,6 +69,7 @@
import com.gitblit.models.ServerSettings;
import com.gitblit.models.ServerStatus;
import com.gitblit.models.SettingModel;
+import com.gitblit.models.TeamModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.ByteFormat;
import com.gitblit.utils.FederationUtils;
@@ -508,6 +509,83 @@
if (!userService.updateUserModel(username, user)) {
throw new GitBlitException(isCreate ? "Failed to add user!" : "Failed to update user!");
}
+ }
+
+ /**
+ * Returns the list of available teams that a user or repository may be
+ * assigned to.
+ *
+ * @return the list of teams
+ */
+ public List<String> getAllTeamnames() {
+ List<String> teams = new ArrayList<String>(userService.getAllTeamNames());
+ Collections.sort(teams);
+ return teams;
+ }
+
+ /**
+ * Returns the TeamModel object for the specified name.
+ *
+ * @param teamname
+ * @return a TeamModel object or null
+ */
+ public TeamModel getTeamModel(String teamname) {
+ return userService.getTeamModel(teamname);
+ }
+
+ /**
+ * Returns the list of all teams who are allowed to bypass the access
+ * restriction placed on the specified repository.
+ *
+ * @see IUserService.getTeamnamesForRepositoryRole(String)
+ * @param repository
+ * @return list of all teamnames that can bypass the access restriction
+ */
+ public List<String> getRepositoryTeams(RepositoryModel repository) {
+ return userService.getTeamnamesForRepositoryRole(repository.name);
+ }
+
+ /**
+ * Sets the list of all uses who are allowed to bypass the access
+ * restriction placed on the specified repository.
+ *
+ * @see IUserService.setTeamnamesForRepositoryRole(String, List<String>)
+ * @param repository
+ * @param teamnames
+ * @return true if successful
+ */
+ public boolean setRepositoryTeams(RepositoryModel repository, List<String> repositoryTeams) {
+ return userService.setTeamnamesForRepositoryRole(repository.name, repositoryTeams);
+ }
+ /**
+ * Updates the TeamModel object for the specified name.
+ *
+ * @param teamname
+ * @param team
+ * @param isCreate
+ */
+ public void updateTeamModel(String teamname, TeamModel team, boolean isCreate) throws GitBlitException {
+ if (!teamname.equalsIgnoreCase(team.name)) {
+ if (userService.getTeamModel(team.name) != null) {
+ throw new GitBlitException(MessageFormat.format(
+ "Failed to rename ''{0}'' because ''{1}'' already exists.", teamname,
+ team.name));
+ }
+ }
+ if (!userService.updateTeamModel(teamname, team)) {
+ throw new GitBlitException(isCreate ? "Failed to add team!" : "Failed to update team!");
+ }
+ }
+
+ /**
+ * Delete the team object with the specified teamname
+ *
+ * @see IUserService.deleteTeam(String)
+ * @param teamname
+ * @return true if successful
+ */
+ public boolean deleteTeam(String teamname) {
+ return userService.deleteTeam(teamname);
}
/**
@@ -1115,6 +1193,7 @@
case PULL_REPOSITORIES:
return token.equals(all) || token.equals(unr) || token.equals(jur);
case PULL_USERS:
+ case PULL_TEAMS:
return token.equals(all) || token.equals(unr);
case PULL_SETTINGS:
return token.equals(all);
@@ -1473,7 +1552,7 @@
configService.updateUserModel(userModel);
}
}
-
+
// issue suggestion about switching to users.conf
logger.warn("Please consider using \"users.conf\" instead of the deprecated \"users.properties\" file");
} else if (realmFile.getName().toLowerCase().endsWith(".conf")) {
--
Gitblit v1.9.1