diff options
author | James Moger <james.moger@gitblit.com> | 2013-11-24 23:18:50 -0500 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2013-11-29 11:05:51 -0500 |
commit | 04a98505a4ab8f48aee22800fcac193d9367d0ae (patch) | |
tree | eb05bc77eeafda1c5b7af9d7b5b27012065f7a98 /src/main/java/com/gitblit/SalesforceUserService.java | |
parent | f8f6aa4d07cdfaaf23e24bf9eaf0a5fb9b437dda (diff) | |
download | gitblit-04a98505a4ab8f48aee22800fcac193d9367d0ae.tar.gz gitblit-04a98505a4ab8f48aee22800fcac193d9367d0ae.zip |
Refactor user services and separate authentication (issue-281)
Change-Id: I336e005e02623fc5e11a4f8b4408bea5465a43fd
Diffstat (limited to 'src/main/java/com/gitblit/SalesforceUserService.java')
-rw-r--r-- | src/main/java/com/gitblit/SalesforceUserService.java | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/src/main/java/com/gitblit/SalesforceUserService.java b/src/main/java/com/gitblit/SalesforceUserService.java deleted file mode 100644 index 6161ba93..00000000 --- a/src/main/java/com/gitblit/SalesforceUserService.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.gitblit; - -import java.io.File; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.gitblit.Constants.AccountType; -import com.gitblit.manager.IRuntimeManager; -import com.gitblit.models.UserModel; -import com.gitblit.utils.ArrayUtils; -import com.gitblit.utils.StringUtils; -import com.sforce.soap.partner.Connector; -import com.sforce.soap.partner.GetUserInfoResult; -import com.sforce.soap.partner.PartnerConnection; -import com.sforce.ws.ConnectionException; -import com.sforce.ws.ConnectorConfig; - -public class SalesforceUserService extends GitblitUserService { - - public static final Logger logger = LoggerFactory.getLogger(SalesforceUserService.class); - private IStoredSettings settings; - - @Override - public AccountType getAccountType() { - return AccountType.SALESFORCE; - } - - @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()); - } - - @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)); - - try { - PartnerConnection connection = Connector.newConnection(config); - - GetUserInfoResult info = connection.getUserInfo(); - - String org = settings.getString(Keys.realm.salesforce.orgId, "0") - .trim(); - - if (!org.equals("0")) { - if (!org.equals(info.getOrganizationId())) { - logger.warn("Access attempted by user of an invalid org: " - + info.getUserName() + ", org: " - + info.getOrganizationName() + "(" - + info.getOrganizationId() + ")"); - - return null; - } - } - - logger.info("Authenticated user " + info.getUserName() - + " using org " + info.getOrganizationName() + "(" - + info.getOrganizationId() + ")"); - - String simpleUsername = getSimpleUsername(info); - - UserModel user = null; - synchronized (this) { - user = getUserModel(simpleUsername); - if (user == null) - user = new UserModel(simpleUsername); - - if (StringUtils.isEmpty(user.cookie) - && !ArrayUtils.isEmpty(password)) { - user.cookie = StringUtils.getSHA1(user.username - + new String(password)); - } - - setUserAttributes(user, info); - - super.updateUserModel(user); - } - - return user; - } catch (ConnectionException e) { - logger.error("Failed to authenticate", e); - } - - return null; - } - - private void setUserAttributes(UserModel user, GetUserInfoResult info) { - // Don't want visibility into the real password, make up a dummy - user.password = Constants.EXTERNAL_ACCOUNT; - user.accountType = getAccountType(); - - // Get full name Attribute - user.displayName = info.getUserFullName(); - - // Get email address Attribute - user.emailAddress = info.getUserEmail(); - } - - /** - * Simple user name is the first part of the email address. - */ - private String getSimpleUsername(GetUserInfoResult info) { - String email = info.getUserEmail(); - - return email.split("@")[0]; - } - - @Override - public boolean supportsCredentialChanges() { - return false; - } - - @Override - public boolean supportsDisplayNameChanges() { - return false; - } - - @Override - public boolean supportsEmailAddressChanges() { - return false; - } -} |