From 020a4d6dccfa25235a1481efc3e449a73a0d659a Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 24 Oct 2013 08:12:03 -0400
Subject: [PATCH] Merge pull request #119 from simonharrer/fix-locale-test-run-bug
---
src/main/java/com/gitblit/RpcServlet.java | 32 ++++++++++++++++++++++++++++----
1 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/gitblit/RpcServlet.java b/src/main/java/com/gitblit/RpcServlet.java
index f31bf86..8b48fbe 100644
--- a/src/main/java/com/gitblit/RpcServlet.java
+++ b/src/main/java/com/gitblit/RpcServlet.java
@@ -36,21 +36,23 @@
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.
- *
+ *
* @author James Moger
- *
+ *
*/
public class RpcServlet extends JsonServlet {
private static final long serialVersionUID = 1L;
- public static final int PROTOCOL_VERSION = 5;
+ public static final int PROTOCOL_VERSION = 6;
public RpcServlet() {
super();
@@ -58,7 +60,7 @@
/**
* Processes an rpc request.
- *
+ *
* @param request
* @param response
* @throws javax.servlet.ServletException
@@ -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