From a5ae3da334fc82c60d375b764065198ec54f2d31 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 22 Jul 2013 09:38:55 -0400 Subject: [PATCH] Added GET_USER request to RPC interface (issue-275) --- src/main/java/com/gitblit/RpcServlet.java | 26 +++++++++++++++++++++++++- 1 files changed, 25 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/gitblit/RpcServlet.java b/src/main/java/com/gitblit/RpcServlet.java index f31bf86..89df473 100644 --- a/src/main/java/com/gitblit/RpcServlet.java +++ b/src/main/java/com/gitblit/RpcServlet.java @@ -36,9 +36,11 @@ 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