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/auth/SalesforceAuthProvider.java |   45 +++++++++++++++++----------------------------
 1 files changed, 17 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/gitblit/SalesforceUserService.java b/src/main/java/com/gitblit/auth/SalesforceAuthProvider.java
similarity index 73%
rename from src/main/java/com/gitblit/SalesforceUserService.java
rename to src/main/java/com/gitblit/auth/SalesforceAuthProvider.java
index 6161ba9..fdda32a 100644
--- a/src/main/java/com/gitblit/SalesforceUserService.java
+++ b/src/main/java/com/gitblit/auth/SalesforceAuthProvider.java
@@ -1,12 +1,9 @@
-package com.gitblit;
+package com.gitblit.auth;
 
-import java.io.File;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
+import com.gitblit.Constants;
 import com.gitblit.Constants.AccountType;
-import com.gitblit.manager.IRuntimeManager;
+import com.gitblit.Keys;
+import com.gitblit.auth.AuthenticationProvider.UsernamePasswordAuthenticationProvider;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.ArrayUtils;
 import com.gitblit.utils.StringUtils;
@@ -16,10 +13,11 @@
 import com.sforce.ws.ConnectionException;
 import com.sforce.ws.ConnectorConfig;
 
-public class SalesforceUserService extends GitblitUserService {
+public class SalesforceAuthProvider extends UsernamePasswordAuthenticationProvider {
 
-	public static final Logger logger = LoggerFactory.getLogger(SalesforceUserService.class);
-	private IStoredSettings settings;
+	public SalesforceAuthProvider() {
+		super("salesforce");
+	}
 
 	@Override
 	public AccountType getAccountType() {
@@ -27,26 +25,11 @@
 	}
 
 	@Override
-	public void setup(IRuntimeManager runtimeManager) {
-		this.settings = runtimeManager.getSettings();
-		String file = settings.getString(
-				Keys.realm.salesforce.backingUserService,
-				"${baseFolder}/users.conf");
-		File realmFile = runtimeManager.getFileOrFolder(file);
-
-		serviceImpl = createUserService(realmFile);
-
-		logger.info("Salesforce User Service backed by "
-				+ serviceImpl.toString());
+	public void setup() {
 	}
 
 	@Override
 	public UserModel authenticate(String username, char[] password) {
-		if (isLocalAccount(username)) {
-			// local account, bypass Salesforce authentication
-			return super.authenticate(username, password);
-		}
-
 		ConnectorConfig config = new ConnectorConfig();
 		config.setUsername(username);
 		config.setPassword(new String(password));
@@ -78,7 +61,7 @@
 
 			UserModel user = null;
 			synchronized (this) {
-				user = getUserModel(simpleUsername);
+				user = userManager.getUserModel(simpleUsername);
 				if (user == null)
 					user = new UserModel(simpleUsername);
 
@@ -90,7 +73,7 @@
 
 				setUserAttributes(user, info);
 
-				super.updateUserModel(user);
+				updateUser(user);
 			}
 
 			return user;
@@ -122,6 +105,7 @@
 		return email.split("@")[0];
 	}
 
+
 	@Override
 	public boolean supportsCredentialChanges() {
 		return false;
@@ -136,4 +120,9 @@
 	public boolean supportsEmailAddressChanges() {
 		return false;
 	}
+
+	@Override
+	public boolean supportsTeamMembershipChanges() {
+		return true;
+	}
 }

--
Gitblit v1.9.1