blob: be4219a8452fa588c728898de6e846819796695a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2012 Tasktop Technologies and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.commons.repositories.core.auth;
import org.eclipse.core.runtime.Assert;
import org.eclipse.equinox.security.storage.StorageException;
/**
* Provides a user name and password.
*
* @author Steffen Pingel
*/
public class UserCredentials extends AuthenticationCredentials {
private final String domain;
private final String password;
private final String userName;
private final boolean savePassword;
private final boolean hasSecrets;
/**
* @param userName
* the user name, must not be null
* @param password
* the password, must not be null
*/
public UserCredentials(String userName, String password) {
this(userName, password, null, true, true);
}
/**
* @param userName
* the user name, must not be null
* @param password
* the password, must not be null
*/
public UserCredentials(String userName, String password, boolean savePassword) {
this(userName, password, null, savePassword, true);
}
public UserCredentials(String userName, String password, String domain, boolean savePassword) {
this(userName, password, domain, savePassword, true);
}
public UserCredentials(String userName, String password, String domain, boolean savePassword, boolean hasSecrets) {
Assert.isNotNull(userName);
Assert.isNotNull(password);
this.userName = userName;
this.password = password;
this.domain = domain;
this.savePassword = savePassword;
this.hasSecrets = hasSecrets;
}
protected UserCredentials(ICredentialsStore store, String prefix, boolean loadSecrets) throws StorageException {
this(
store.get(prefix + ".user", ""), (loadSecrets) ? store.get(prefix + ".password", "") : "", store.get(prefix + ".domain", null), //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
store.getBoolean(prefix + ".savePassword", false), loadSecrets); //$NON-NLS-1$
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
UserCredentials other = (UserCredentials) obj;
if (domain == null) {
if (other.domain != null) {
return false;
}
} else if (!domain.equals(other.domain)) {
return false;
}
if (hasSecrets != other.hasSecrets) {
return false;
}
if (password == null) {
if (other.password != null) {
return false;
}
} else if (!password.equals(other.password)) {
return false;
}
if (savePassword != other.savePassword) {
return false;
}
if (userName == null) {
if (other.userName != null) {
return false;
}
} else if (!userName.equals(other.userName)) {
return false;
}
return true;
}
public String getDomain() {
return domain;
}
public String getPassword() {
return password;
}
public String getUserName() {
return userName;
}
public boolean getSavePassword() {
return savePassword;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((domain == null) ? 0 : domain.hashCode());
result = prime * result + (hasSecrets ? 1231 : 1237);
result = prime * result + ((password == null) ? 0 : password.hashCode());
result = prime * result + (savePassword ? 1231 : 1237);
result = prime * result + ((userName == null) ? 0 : userName.hashCode());
return result;
}
@Override
public void clear(ICredentialsStore store, String prefix) {
store.remove(prefix + ".user"); //$NON-NLS-1$
store.remove(prefix + ".password"); //$NON-NLS-1$
store.remove(prefix + ".domain"); //$NON-NLS-1$
store.remove(prefix + ".savePassword"); //$NON-NLS-1$
}
@Override
public void save(ICredentialsStore store, String prefix) {
store.put(prefix + ".user", userName, false); //$NON-NLS-1$
if (hasSecrets) {
store.put(prefix + ".password", password, true, savePassword); //$NON-NLS-1$
}
store.put(prefix + ".domain", domain, false); //$NON-NLS-1$
store.putBoolean(prefix + ".savePassword", savePassword, false); //$NON-NLS-1$
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("UserCredentials [domain="); //$NON-NLS-1$
builder.append(domain);
builder.append(", password="); //$NON-NLS-1$
builder.append((password == null) ? password : "********"); //$NON-NLS-1$
builder.append(", userName="); //$NON-NLS-1$
builder.append(userName);
builder.append(", savePassword="); //$NON-NLS-1$
builder.append(savePassword);
builder.append(", hasSecrets="); //$NON-NLS-1$
builder.append(hasSecrets);
builder.append("]"); //$NON-NLS-1$
return builder.toString();
}
}