From df75fa3a0961fc6a539209d5f13788d64b109a34 Mon Sep 17 00:00:00 2001 From: Florian Zschocke <florian.zschocke@cycos.com> Date: Mon, 26 Aug 2013 06:30:53 -0400 Subject: [PATCH] Add new configuration setting 'git.userRepositoryPrefix'. --- src/main/java/com/gitblit/RpcServlet.java | 28 ++++++++++++++++++++++++++-- 1 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gitblit/RpcServlet.java b/src/main/java/com/gitblit/RpcServlet.java index f6368dd..89df473 100644 --- a/src/main/java/com/gitblit/RpcServlet.java +++ b/src/main/java/com/gitblit/RpcServlet.java @@ -30,15 +30,17 @@ import org.eclipse.jgit.lib.Repository; import com.gitblit.Constants.RpcRequest; -import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.RefModel; +import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.RepositoryModel; import com.gitblit.models.ServerSettings; import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; +import com.gitblit.utils.DeepCopier; import com.gitblit.utils.HttpUtils; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.RpcUtils; +import com.gitblit.utils.StringUtils; /** * Handles remote procedure calls. @@ -50,7 +52,7 @@ private static final long serialVersionUID = 1L; - public static final int PROTOCOL_VERSION = 5; + public static final int PROTOCOL_VERSION = 6; public RpcServlet() { super(); @@ -132,6 +134,28 @@ repository.close(); } result = localBranches; + } else if (RpcRequest.GET_USER.equals(reqType)) { + if (StringUtils.isEmpty(objectName)) { + if (UserModel.ANONYMOUS.equals(user)) { + response.sendError(forbiddenCode); + } else { + // return the current user, reset credentials + UserModel requestedUser = DeepCopier.copy(user); + result = requestedUser; + } + } else { + if (user.canAdmin() || objectName.equals(user.username)) { + // return the specified user + UserModel requestedUser = GitBlit.self().getUserModel(objectName); + if (requestedUser == null) { + response.setStatus(failureCode); + } else { + result = requestedUser; + } + } else { + response.sendError(forbiddenCode); + } + } } else if (RpcRequest.LIST_USERS.equals(reqType)) { // list users List<String> names = GitBlit.self().getAllUsernames(); -- Gitblit v1.9.1