From 6651a8e96bdc51b0c558b88e1c77fcfbed1837da Mon Sep 17 00:00:00 2001 From: James Moger Date: Sun, 8 Jun 2014 10:30:39 -0400 Subject: Move repository ownership to the UserModel and prepare for project ownership --- src/main/java/com/gitblit/servlet/GitFilter.java | 13 +++++++----- src/main/java/com/gitblit/servlet/RpcServlet.java | 24 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) (limited to 'src/main/java/com/gitblit/servlet') diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java index bb3d3216..d9c1c08e 100644 --- a/src/main/java/com/gitblit/servlet/GitFilter.java +++ b/src/main/java/com/gitblit/servlet/GitFilter.java @@ -26,6 +26,7 @@ import com.gitblit.GitBlitException; import com.gitblit.IStoredSettings; import com.gitblit.Keys; import com.gitblit.manager.IFederationManager; +import com.gitblit.manager.IUserManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; @@ -51,12 +52,15 @@ public class GitFilter extends AccessRestrictionFilter { private IStoredSettings settings; + private IUserManager userManager; + private IFederationManager federationManager; @Override protected void inject(ObjectGraph dagger, FilterConfig filterConfig) { super.inject(dagger, filterConfig); this.settings = dagger.get(IStoredSettings.class); + this.userManager = dagger.get(IUserManager.class); this.federationManager = dagger.get(IFederationManager.class); } @@ -241,11 +245,8 @@ public class GitFilter extends AccessRestrictionFilter { } // create repository - RepositoryModel model = new RepositoryModel(); - model.name = repository; - model.addOwner(user.username); - model.projectPath = StringUtils.getFirstPathElement(repository); - if (model.isUsersPersonalRepository(user.username)) { + RepositoryModel model = new RepositoryModel(repository); + if (user.isMyPersonalRepository(model.name)) { // personal repository, default to private for user model.authorizationControl = AuthorizationControl.NAMED; model.accessRestriction = AccessRestrictionType.VIEW; @@ -258,6 +259,8 @@ public class GitFilter extends AccessRestrictionFilter { // create the repository try { repositoryManager.updateRepositoryModel(model.name, model, true); + user.own(model); + userManager.updateUserModel(user.username, user); logger.info(MessageFormat.format("{0} created {1} ON-PUSH", user.username, model.name)); return repositoryManager.getRepositoryModel(model.name); } catch (GitBlitException e) { diff --git a/src/main/java/com/gitblit/servlet/RpcServlet.java b/src/main/java/com/gitblit/servlet/RpcServlet.java index b8cdfb04..e09e921a 100644 --- a/src/main/java/com/gitblit/servlet/RpcServlet.java +++ b/src/main/java/com/gitblit/servlet/RpcServlet.java @@ -38,6 +38,7 @@ import com.gitblit.manager.IGitblit; import com.gitblit.models.RefModel; import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.RepositoryModel; +import com.gitblit.models.Owner; import com.gitblit.models.ServerSettings; import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; @@ -300,6 +301,29 @@ public class RpcServlet extends JsonServlet { } else if (RpcRequest.SET_REPOSITORY_MEMBERS.equals(reqType)) { // rejected since 1.2.0 response.setStatus(failureCode); + } else if (RpcRequest.LIST_REPOSITORY_OWNERS.equals(reqType)) { + // get repository owners + RepositoryModel model = gitblit.getRepositoryModel(objectName); + List owners = gitblit.getOwners(model); + List names = new ArrayList<>(); + for (Owner owner : owners) { + if (owner instanceof UserModel) { + names.add(((UserModel) owner).username); + } + } + result = names; + } else if (RpcRequest.SET_REPOSITORY_OWNERS.equals(reqType)) { + // set the owners for the specified repository + RepositoryModel model = gitblit.getRepositoryModel(objectName); + Collection names = deserialize(request, response, RpcUtils.NAMES_TYPE); + List owners = new ArrayList<>(); + for (String name : names) { + UserModel owner = gitblit.getUserModel(name); + if (owner != null) { + owners.add(owner); + } + } + result = gitblit.setOwners(model, owners); } else if (RpcRequest.LIST_REPOSITORY_MEMBER_PERMISSIONS.equals(reqType)) { // get repository member permissions RepositoryModel model = gitblit.getRepositoryModel(objectName); -- cgit v1.2.3