diff options
author | James Moger <james.moger@gitblit.com> | 2014-06-08 10:30:39 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2014-06-13 08:00:48 -0400 |
commit | 6651a8e96bdc51b0c558b88e1c77fcfbed1837da (patch) | |
tree | b2d89a6dd77868783485af61636c65edf32b1861 /src/main/java/com/gitblit/servlet | |
parent | 2bfea381bbcea934f7e20f8c00db86e990c2fc93 (diff) | |
download | gitblit-ticket/75.tar.gz gitblit-ticket/75.zip |
Move repository ownership to the UserModel and prepare for project ownershipticket/75
Diffstat (limited to 'src/main/java/com/gitblit/servlet')
-rw-r--r-- | src/main/java/com/gitblit/servlet/GitFilter.java | 13 | ||||
-rw-r--r-- | src/main/java/com/gitblit/servlet/RpcServlet.java | 24 |
2 files changed, 32 insertions, 5 deletions
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<Owner> owners = gitblit.getOwners(model);
+ List<String> 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<String> names = deserialize(request, response, RpcUtils.NAMES_TYPE);
+ List<Owner> 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);
|