From d80588d99511fac16495f8eaafa50e01a6b98995 Mon Sep 17 00:00:00 2001
From: guriguri <guriguri.kr@gmail.com>
Date: Wed, 31 Jul 2013 11:20:49 -0400
Subject: [PATCH] apply PageParameters(final Map<String, ?> parameterMap), encode filename of Content-Disposition

---
 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