From 7e8873a14ccc2cb25213489d7d7ba97f09673831 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 07 Dec 2011 19:14:34 -0500
Subject: [PATCH] Unit testing overhaul.

---
 src/com/gitblit/FileUserService.java |   36 ++++++++++++++++++++++++++----------
 1 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/src/com/gitblit/FileUserService.java b/src/com/gitblit/FileUserService.java
index cae0d79..a98e417 100644
--- a/src/com/gitblit/FileUserService.java
+++ b/src/com/gitblit/FileUserService.java
@@ -34,14 +34,19 @@
 import com.gitblit.utils.StringUtils;
 
 /**
- * FileUserService is Gitblit's default user service implementation.
+ * FileUserService is Gitblit's original default user service implementation.
  * 
  * Users and their repository memberships are stored in a simple properties file
  * which is cached and dynamically reloaded when modified.
  * 
+ * This class was deprecated in Gitblit 0.8.0 in favor of ConfigUserService
+ * which is still a human-readable, editable, plain-text file but it is more
+ * flexible for storing additional fields.
+ * 
  * @author James Moger
  * 
  */
+@Deprecated
 public class FileUserService extends FileSettings implements IUserService {
 
 	private final Logger logger = LoggerFactory.getLogger(FileUserService.class);
@@ -126,11 +131,20 @@
 		UserModel returnedUser = null;
 		UserModel user = getUserModel(username);
 		if (user.password.startsWith(StringUtils.MD5_TYPE)) {
+			// password digest
 			String md5 = StringUtils.MD5_TYPE + StringUtils.getMD5(new String(password));
 			if (user.password.equalsIgnoreCase(md5)) {
 				returnedUser = user;
 			}
+		} else if (user.password.startsWith(StringUtils.COMBINED_MD5_TYPE)) {
+			// username+password digest
+			String md5 = StringUtils.COMBINED_MD5_TYPE
+					+ StringUtils.getMD5(username.toLowerCase() + new String(password));
+			if (user.password.equalsIgnoreCase(md5)) {
+				returnedUser = user;
+			}
 		} else if (user.password.equals(new String(password))) {
+			// plain-text password
 			returnedUser = user;
 		}
 		return returnedUser;
@@ -351,12 +365,11 @@
 				StringBuilder sb = new StringBuilder();
 				sb.append(password);
 				sb.append(',');
-				List<String> revisedRoles = new ArrayList<String>();
+
 				// skip first value (password)
 				for (int i = 1; i < values.length; i++) {
 					String value = values[i];
 					if (!value.equalsIgnoreCase(role)) {
-						revisedRoles.add(value);
 						sb.append(value);
 						sb.append(',');
 					}
@@ -397,7 +410,7 @@
 				for (int i = 1; i < roles.length; i++) {
 					String r = roles[i];
 					if (r.equalsIgnoreCase(oldRole)) {
-						needsRenameRole.remove(username);
+						needsRenameRole.add(username);
 						break;
 					}
 				}
@@ -411,13 +424,13 @@
 				StringBuilder sb = new StringBuilder();
 				sb.append(password);
 				sb.append(',');
-				List<String> revisedRoles = new ArrayList<String>();
-				revisedRoles.add(newRole);
+				sb.append(newRole);
+				sb.append(',');
+				
 				// skip first value (password)
 				for (int i = 1; i < values.length; i++) {
 					String value = values[i];
 					if (!value.equalsIgnoreCase(oldRole)) {
-						revisedRoles.add(value);
 						sb.append(value);
 						sb.append(',');
 					}
@@ -458,7 +471,7 @@
 				for (int i = 1; i < roles.length; i++) {
 					String r = roles[i];
 					if (r.equalsIgnoreCase(role)) {
-						needsDeleteRole.remove(username);
+						needsDeleteRole.add(username);
 						break;
 					}
 				}
@@ -472,12 +485,10 @@
 				StringBuilder sb = new StringBuilder();
 				sb.append(password);
 				sb.append(',');
-				List<String> revisedRoles = new ArrayList<String>();
 				// skip first value (password)
 				for (int i = 1; i < values.length; i++) {
 					String value = values[i];
 					if (!value.equalsIgnoreCase(role)) {
-						revisedRoles.add(value);
 						sb.append(value);
 						sb.append(',');
 					}
@@ -549,4 +560,9 @@
 		}
 		return allUsers;
 	}
+
+	@Override
+	public String toString() {
+		return getClass().getSimpleName() + "(" + propertiesFile.getAbsolutePath() + ")";
+	}
 }

--
Gitblit v1.9.1