package org.simbasecurity.dwclient.dropwizard.credentials;
import java.util.Map;
import org.eclipse.jetty.http.HttpHeaders;
import org.simbasecurity.api.service.thrift.RequestData;
import org.simbasecurity.api.service.thrift.SSOToken;
import com.google.common.base.Objects;
import com.google.common.base.Strings;
/**
* Wrapper for Simba's RequestData
*/
public class SimbaCredentials {
private Map<String, String> requestParameters;
private Map<String, String> requestHeaders;
private String requestUrl;
private String simbaWebURL;
private String httpMethod;
private String hostServerName;
private boolean clientIsABrowser;
private String ssoToken;
private boolean isLoginRequest;
private String clientIPAddress;
private boolean isLogoutRequest;
SimbaCredentials(Map<String, String> requestParameters, Map<String, String> requestHeaders, String requestUrl, String simbaWebURL,
String httpMethod, String ssoToken, String hostServerName, boolean clientIsABrowser, boolean isLoginRequest, boolean isLogoutRequest,
String clientIPAddress) {
this.requestParameters = requestParameters;
this.requestHeaders = requestHeaders;
this.requestUrl = requestUrl;
this.simbaWebURL = simbaWebURL;
this.httpMethod = httpMethod;
this.ssoToken = ssoToken;
this.hostServerName = hostServerName;
this.clientIsABrowser = clientIsABrowser;
this.isLogoutRequest = isLogoutRequest;
this.isLoginRequest = isLoginRequest;
}
public RequestData asRequestData() {
String loginToken = null;
boolean ssoTokenMappingKeyProvided = false;
boolean changePasswordRequest = false;
boolean showChangePasswordRequest = false;
return new RequestData(requestParameters, requestHeaders, requestUrl, simbaWebURL, createSSOToken(), clientIPAddress,
isLogoutRequest, isLoginRequest, ssoTokenMappingKeyProvided, changePasswordRequest, showChangePasswordRequest,
httpMethod, hostServerName, loginToken);
}
public boolean isClientABrowser() {
return clientIsABrowser;
}
private SSOToken createSSOToken() {
return Strings.isNullOrEmpty(ssoToken) ? null : new SSOToken(ssoToken);
}
public Map<String, String> getRequestParameters() {
return requestParameters;
}
public Map<String, String> getRequestHeaders() {
return requestHeaders;
}
public String getRequestUrl() {
return requestUrl;
}
public String getSimbaWebURL() {
return simbaWebURL;
}
public String getHttpMethod() {
return httpMethod;
}
public String getHostServerName() {
return hostServerName;
}
public boolean isLogoutRequest() {
return isLogoutRequest;
}
public String getUserAgentHeader() {
return getRequestHeaders() == null ? null : getRequestHeaders().get(HttpHeaders.USER_AGENT);
}
public String getSsoToken() {
return ssoToken;
}
@Override
public int hashCode() {
return Objects.hashCode(hostServerName, httpMethod, requestHeaders, requestParameters, requestUrl, simbaWebURL, clientIsABrowser, clientIPAddress);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
SimbaCredentials other = (SimbaCredentials) obj;
return Objects.equal(hostServerName, other.hostServerName)
&& Objects.equal(httpMethod, other.httpMethod)
&& Objects.equal(requestHeaders, other.requestHeaders)
&& Objects.equal(requestParameters, other.requestParameters)
&& Objects.equal(requestUrl, other.requestUrl)
&& Objects.equal(simbaWebURL, other.simbaWebURL)
&& Objects.equal(isLoginRequest, other.isLoginRequest)
&& Objects.equal(isLogoutRequest, other.isLogoutRequest)
&& Objects.equal(clientIsABrowser, other.clientIsABrowser)
&& Objects.equal(clientIPAddress, other.clientIPAddress);
}
@Override
public String toString() {
return Objects.toStringHelper(this)
.add("requestParameters", requestParameters)
.add("requestHeaders", requestHeaders)
.add("requestUrl", requestUrl)
.add("simbaWebURL", simbaWebURL)
.add("httpMethod", httpMethod)
.add("hostServerName", hostServerName)
.add("clientIsABrowser", clientIsABrowser)
.add("isLoginRequest", isLoginRequest)
.add("isLogoutRequest", isLogoutRequest)
.add("clientIPAddress", clientIPAddress)
.toString();
}
}