From 04a98505a4ab8f48aee22800fcac193d9367d0ae Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 29 Nov 2013 11:05:51 -0500
Subject: [PATCH] Refactor user services and separate authentication (issue-281)

---
 src/main/java/com/gitblit/GitBlit.java |  115 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 66 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/gitblit/Gitblit.java b/src/main/java/com/gitblit/GitBlit.java
similarity index 90%
rename from src/main/java/com/gitblit/Gitblit.java
rename to src/main/java/com/gitblit/GitBlit.java
index 64316bb..d4e89b0 100644
--- a/src/main/java/com/gitblit/Gitblit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -29,13 +29,13 @@
 
 import com.gitblit.Constants.FederationRequest;
 import com.gitblit.Constants.FederationToken;
+import com.gitblit.manager.IAuthenticationManager;
 import com.gitblit.manager.IFederationManager;
 import com.gitblit.manager.IGitblitManager;
 import com.gitblit.manager.INotificationManager;
 import com.gitblit.manager.IProjectManager;
 import com.gitblit.manager.IRepositoryManager;
 import com.gitblit.manager.IRuntimeManager;
-import com.gitblit.manager.ISessionManager;
 import com.gitblit.manager.IUserManager;
 import com.gitblit.models.FederationModel;
 import com.gitblit.models.FederationProposal;
@@ -54,7 +54,7 @@
 import com.gitblit.models.UserModel;
 
 /**
- * Gitblit is an aggregate interface delegate.  It implements all the manager
+ * GitBlit is an aggregate interface delegate.  It implements all the manager
  * interfaces and delegates all methods calls to the actual manager implementations.
  * It's primary purpose is to provide complete management control to the git
  * upload and receive pack functions.
@@ -62,10 +62,10 @@
  * @author James Moger
  *
  */
-public class Gitblit implements IRuntimeManager,
+public class GitBlit implements IRuntimeManager,
 								INotificationManager,
 								IUserManager,
-								ISessionManager,
+								IAuthenticationManager,
 								IRepositoryManager,
 								IProjectManager,
 								IGitblitManager,
@@ -77,7 +77,7 @@
 
 	private final IUserManager userManager;
 
-	private final ISessionManager sessionManager;
+	private final IAuthenticationManager authenticationManager;
 
 	private final IRepositoryManager repositoryManager;
 
@@ -87,11 +87,11 @@
 
 	private final IFederationManager federationManager;
 
-	public Gitblit(
+	public GitBlit(
 			IRuntimeManager runtimeManager,
 			INotificationManager notificationManager,
 			IUserManager userManager,
-			ISessionManager sessionManager,
+			IAuthenticationManager authenticationManager,
 			IRepositoryManager repositoryManager,
 			IProjectManager projectManager,
 			IGitblitManager gitblitManager,
@@ -100,7 +100,7 @@
 		this.runtimeManager = runtimeManager;
 		this.notificationManager = notificationManager;
 		this.userManager = userManager;
-		this.sessionManager = sessionManager;
+		this.authenticationManager = authenticationManager;
 		this.repositoryManager = repositoryManager;
 		this.projectManager = projectManager;
 		this.gitblitManager = gitblitManager;
@@ -108,13 +108,36 @@
 	}
 
 	@Override
-	public Gitblit start() {
+	public GitBlit start() {
 		return this;
 	}
 
 	@Override
-	public Gitblit stop() {
+	public GitBlit stop() {
 		return this;
+	}
+
+	/*
+	 * ISTOREDSETTINGS
+	 *
+	 * these methods are necessary for (nearly) seamless Groovy hook operation
+	 * after the massive refactor.
+	 */
+
+	public boolean getBoolean(String key, boolean defaultValue) {
+		return runtimeManager.getSettings().getBoolean(key, defaultValue);
+	}
+
+	public String getString(String key, String defaultValue) {
+		return runtimeManager.getSettings().getString(key, defaultValue);
+	}
+
+	public int getInteger(String key, int defaultValue) {
+		return runtimeManager.getSettings().getInteger(key, defaultValue);
+	}
+
+	public List<String> getStrings(String key) {
+		return runtimeManager.getSettings().getStrings(key);
 	}
 
 	/*
@@ -216,26 +239,51 @@
 
 	@Override
 	public UserModel authenticate(String username, char[] password) {
-		return sessionManager.authenticate(username, password);
+		return authenticationManager.authenticate(username, password);
 	}
 
 	@Override
 	public UserModel authenticate(HttpServletRequest httpRequest) {
-		return sessionManager.authenticate(httpRequest, false);
+		return authenticationManager.authenticate(httpRequest, false);
 	}
 	@Override
 	public UserModel authenticate(HttpServletRequest httpRequest, boolean requiresCertificate) {
-		return sessionManager.authenticate(httpRequest, requiresCertificate);
+		return authenticationManager.authenticate(httpRequest, requiresCertificate);
 	}
 
 	@Override
 	public void setCookie(HttpServletResponse response, UserModel user) {
-		sessionManager.setCookie(response, user);
+		authenticationManager.setCookie(response, user);
 	}
 
 	@Override
 	public void logout(HttpServletResponse response, UserModel user) {
-		sessionManager.logout(response, user);
+		authenticationManager.logout(response, user);
+	}
+
+	@Override
+	public boolean supportsCredentialChanges(UserModel user) {
+		return authenticationManager.supportsCredentialChanges(user);
+	}
+
+	@Override
+	public boolean supportsDisplayNameChanges(UserModel user) {
+		return authenticationManager.supportsDisplayNameChanges(user);
+	}
+
+	@Override
+	public boolean supportsEmailAddressChanges(UserModel user) {
+		return authenticationManager.supportsEmailAddressChanges(user);
+	}
+
+	@Override
+	public boolean supportsTeamMembershipChanges(UserModel user) {
+		return authenticationManager.supportsTeamMembershipChanges(user);
+	}
+
+	@Override
+	public boolean supportsTeamMembershipChanges(TeamModel team) {
+		return authenticationManager.supportsTeamMembershipChanges(team);
 	}
 
 	/*
@@ -243,33 +291,7 @@
 	 */
 
 	@Override
-	public boolean supportsAddUser() {
-		return userManager.supportsAddUser();
-	}
-
-	@Override
-	public boolean supportsCredentialChanges(UserModel user) {
-		return userManager.supportsCredentialChanges(user);
-	}
-
-	@Override
-	public boolean supportsDisplayNameChanges(UserModel user) {
-		return userManager.supportsDisplayNameChanges(user);
-	}
-
-	@Override
-	public boolean supportsEmailAddressChanges(UserModel user) {
-		return userManager.supportsEmailAddressChanges(user);
-	}
-
-	@Override
-	public boolean supportsTeamMembershipChanges(UserModel user) {
-		return userManager.supportsTeamMembershipChanges(user);
-	}
-
-	@Override
-	public void logout(UserModel user) {
-		userManager.logout(user);
+	public void setup(IRuntimeManager runtimeManager) {
 	}
 
 	@Override
@@ -303,18 +325,13 @@
 	}
 
 	@Override
-	public boolean supportsCookies() {
-		return userManager.supportsCookies();
-	}
-
-	@Override
 	public String getCookie(UserModel model) {
 		return userManager.getCookie(model);
 	}
 
 	@Override
-	public UserModel authenticate(char[] cookie) {
-		return userManager.authenticate(cookie);
+	public UserModel getUserModel(char[] cookie) {
+		return userManager.getUserModel(cookie);
 	}
 
 	@Override

--
Gitblit v1.9.1