From b2d7f418bf289e5fa6149ac1b5744cfb03b60dea Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 23 Sep 2013 10:55:19 -0400
Subject: [PATCH] Eliminate redundant read() and use accessor instead of direct cache access

---
 src/main/java/com/gitblit/ConfigUserService.java |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/gitblit/ConfigUserService.java b/src/main/java/com/gitblit/ConfigUserService.java
index 8a6c92f..a9217b5 100644
--- a/src/main/java/com/gitblit/ConfigUserService.java
+++ b/src/main/java/com/gitblit/ConfigUserService.java
@@ -186,8 +186,10 @@
 		if (!StringUtils.isEmpty(model.cookie)) {
 			return model.cookie;
 		}
-		read();
-		UserModel storedModel = users.get(model.username.toLowerCase());
+		UserModel storedModel = getUserModel(model.username);
+		if (storedModel == null) {
+			return null;
+		}
 		return storedModel.cookie;
 	}
 
@@ -208,6 +210,12 @@
 		if (cookies.containsKey(hash)) {
 			model = cookies.get(hash);
 		}
+		
+		if (model != null) {
+			// clone the model, otherwise all changes to this object are
+			// live and unpersisted
+			model = DeepCopier.copy(model);
+		}
 		return model;
 	}
 
@@ -220,7 +228,6 @@
 	 */
 	@Override
 	public UserModel authenticate(String username, char[] password) {
-		read();
 		UserModel returnedUser = null;
 		UserModel user = getUserModel(username);
 		if (user == null) {

--
Gitblit v1.9.1