Merge pull request #280 from madhawap/master

Added username field to the device certificate DB and related changes
merge-requests/7/head
inoshperera 9 years ago
commit dafd219868

@ -55,7 +55,11 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
try { try {
conn = this.getConnection(); conn = this.getConnection();
stmt = conn.prepareStatement( stmt = conn.prepareStatement(
"INSERT INTO DM_DEVICE_CERTIFICATE (SERIAL_NUMBER, CERTIFICATE, TENANT_ID) VALUES (?,?,?)"); "INSERT INTO DM_DEVICE_CERTIFICATE (SERIAL_NUMBER, CERTIFICATE, TENANT_ID, USERNAME)"
+ " VALUES (?,?,?,?)");
PrivilegedCarbonContext threadLocalCarbonContext = PrivilegedCarbonContext.
getThreadLocalCarbonContext();
String username = threadLocalCarbonContext.getUsername();
for (Certificate certificate : certificates) { for (Certificate certificate : certificates) {
String serialNumber = certificate.getSerial(); String serialNumber = certificate.getSerial();
if (serialNumber == null || serialNumber.isEmpty()) { if (serialNumber == null || serialNumber.isEmpty()) {
@ -67,6 +71,7 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
stmt.setString(1, serialNumber); stmt.setString(1, serialNumber);
stmt.setObject(2, byteArrayInputStream); stmt.setObject(2, byteArrayInputStream);
stmt.setInt(3, certificate.getTenantId()); stmt.setInt(3, certificate.getTenantId());
stmt.setString(4, username);
stmt.addBatch(); stmt.addBatch();
} }
stmt.executeBatch(); stmt.executeBatch();
@ -89,8 +94,8 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
try { try {
conn = this.getConnection(); conn = this.getConnection();
String query = String query =
"SELECT CERTIFICATE, SERIAL_NUMBER, TENANT_ID FROM DM_DEVICE_CERTIFICATE WHERE SERIAL_NUMBER = ?" + "SELECT CERTIFICATE, SERIAL_NUMBER, TENANT_ID, USERNAME FROM"
" AND TENANT_ID = ? "; + " DM_DEVICE_CERTIFICATE WHERE SERIAL_NUMBER = ? AND TENANT_ID = ? ";
stmt = conn.prepareStatement(query); stmt = conn.prepareStatement(query);
stmt.setString(1, serialNumber); stmt.setString(1, serialNumber);
stmt.setInt(2, tenantId); stmt.setInt(2, tenantId);
@ -102,6 +107,7 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
certificateResponse.setCertificate(certificateBytes); certificateResponse.setCertificate(certificateBytes);
certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER"));
certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); certificateResponse.setTenantId(resultSet.getInt("TENANT_ID"));
certificateResponse.setUsername(resultSet.getString("USERNAME"));
CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse);
break; break;
} }
@ -128,8 +134,8 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
try { try {
conn = this.getConnection(); conn = this.getConnection();
String query = String query =
"SELECT CERTIFICATE, SERIAL_NUMBER, TENANT_ID FROM DM_DEVICE_CERTIFICATE WHERE SERIAL_NUMBER LIKE ?" + "SELECT CERTIFICATE, SERIAL_NUMBER, TENANT_ID, USERNAME FROM DM_DEVICE_CERTIFICATE "
" AND TENANT_ID = ? "; + "WHERE SERIAL_NUMBER LIKE ? AND TENANT_ID = ? ";
stmt = conn.prepareStatement(query); stmt = conn.prepareStatement(query);
stmt.setString(1, "%" + serialNumber + "%"); stmt.setString(1, "%" + serialNumber + "%");
stmt.setInt(2, tenantId); stmt.setInt(2, tenantId);
@ -140,6 +146,7 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
byte [] certificateBytes = resultSet.getBytes("CERTIFICATE"); byte [] certificateBytes = resultSet.getBytes("CERTIFICATE");
certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER"));
certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); certificateResponse.setTenantId(resultSet.getInt("TENANT_ID"));
certificateResponse.setUsername(resultSet.getString("USERNAME"));
CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse);
certificates.add(certificateResponse); certificates.add(certificateResponse);
} }
@ -164,8 +171,8 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
try { try {
Connection conn = this.getConnection(); Connection conn = this.getConnection();
String sql = "SELECT CERTIFICATE, SERIAL_NUMBER, TENANT_ID FROM DM_DEVICE_CERTIFICATE WHERE TENANT_ID = ? " + String sql = "SELECT CERTIFICATE, SERIAL_NUMBER, TENANT_ID, USERNAME FROM "
"ORDER BY ID DESC LIMIT ?,?"; + "DM_DEVICE_CERTIFICATE WHERE TENANT_ID = ? ORDER BY ID DESC LIMIT ?,?";
stmt = conn.prepareStatement(sql); stmt = conn.prepareStatement(sql);
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
stmt.setInt(2, request.getStartIndex()); stmt.setInt(2, request.getStartIndex());
@ -178,6 +185,7 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
byte [] certificateBytes = resultSet.getBytes("CERTIFICATE"); byte [] certificateBytes = resultSet.getBytes("CERTIFICATE");
certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER"));
certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); certificateResponse.setTenantId(resultSet.getInt("TENANT_ID"));
certificateResponse.setUsername(resultSet.getString("USERNAME"));
CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse);
certificates.add(certificateResponse); certificates.add(certificateResponse);
resultCount++; resultCount++;
@ -204,8 +212,8 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
try { try {
Connection conn = this.getConnection(); Connection conn = this.getConnection();
String sql = "SELECT CERTIFICATE, SERIAL_NUMBER, TENANT_ID FROM DM_DEVICE_CERTIFICATE WHERE TENANT_ID = ? " + String sql = "SELECT CERTIFICATE, SERIAL_NUMBER, TENANT_ID, USERNAME"
"ORDER BY ID DESC"; + " FROM DM_DEVICE_CERTIFICATE WHERE TENANT_ID = ? ORDER BY ID DESC";
stmt = conn.prepareStatement(sql); stmt = conn.prepareStatement(sql);
stmt.setInt(1, tenantId); stmt.setInt(1, tenantId);
resultSet = stmt.executeQuery(); resultSet = stmt.executeQuery();
@ -215,6 +223,7 @@ public class GenericCertificateDAOImpl implements CertificateDAO {
byte [] certificateBytes = resultSet.getBytes("CERTIFICATE"); byte [] certificateBytes = resultSet.getBytes("CERTIFICATE");
certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER"));
certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); certificateResponse.setTenantId(resultSet.getInt("TENANT_ID"));
certificateResponse.setUsername(resultSet.getString("USERNAME"));
CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse);
certificates.add(certificateResponse); certificates.add(certificateResponse);
} }

@ -56,6 +56,17 @@ public class CertificateResponse {
@ApiModelProperty(name = "certificateVersion", value = "The version of the certificate", required = true) @ApiModelProperty(name = "certificateVersion", value = "The version of the certificate", required = true)
int certificateVersion; int certificateVersion;
@ApiModelProperty(name ="username", value="username of the logged user", required = true)
String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public long getNotAfter() { public long getNotAfter() {
return notAfter; return notAfter;
} }

@ -129,10 +129,9 @@ public class CertificateAuthenticator implements WebappAuthenticator {
isEmpty()) { isEmpty()) {
authenticationInfo.setTenantId(certificateResponse.getTenantId()); authenticationInfo.setTenantId(certificateResponse.getTenantId());
authenticationInfo.setStatus(Status.CONTINUE); authenticationInfo.setStatus(Status.CONTINUE);
authenticationInfo.setUsername(certificateResponse.getCommonName()); authenticationInfo.setUsername(certificateResponse.getUsername());
try { try {
authenticationInfo.setTenantDomain(Utils. authenticationInfo.setTenantDomain(Utils.getTenantDomain(
getTenantDomain(
certificateResponse.getTenantId())); certificateResponse.getTenantId()));
} catch (AuthenticationException e) { } catch (AuthenticationException e) {
authenticationInfo.setStatus(Status.FAILURE); authenticationInfo.setStatus(Status.FAILURE);

@ -22,6 +22,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL, SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
CERTIFICATE BLOB DEFAULT NULL, CERTIFICATE BLOB DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0, TENANT_ID INTEGER DEFAULT 0,
USERNAME VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (ID) PRIMARY KEY (ID)
); );

@ -22,6 +22,7 @@ CREATE TABLE DM_DEVICE_CERTIFICATE (
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL, SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
CERTIFICATE VARBINARY(max) DEFAULT NULL, CERTIFICATE VARBINARY(max) DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0, TENANT_ID INTEGER DEFAULT 0,
USERNAME VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (ID) PRIMARY KEY (ID)
); );

@ -11,6 +11,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL, SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
CERTIFICATE BLOB DEFAULT NULL, CERTIFICATE BLOB DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0, TENANT_ID INTEGER DEFAULT 0,
USERNAME VARCHAR(500) DEFAULT NULL,
PRIMARY KEY (ID) PRIMARY KEY (ID)
)ENGINE = InnoDB; )ENGINE = InnoDB;

@ -50,6 +50,7 @@ CREATE TABLE DM_DEVICE_CERTIFICATE (
SERIAL_NUMBER VARCHAR2(500) DEFAULT NULL, SERIAL_NUMBER VARCHAR2(500) DEFAULT NULL,
CERTIFICATE BLOB DEFAULT NULL, CERTIFICATE BLOB DEFAULT NULL,
TENANT_ID NUMBER(10) DEFAULT 0, TENANT_ID NUMBER(10) DEFAULT 0,
USERNAME VARCHAR2(500) DEFAULT NULL,
PRIMARY KEY (ID) PRIMARY KEY (ID)
) )
/ /

@ -9,7 +9,8 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
ID BIGSERIAL NOT NULL PRIMARY KEY, ID BIGSERIAL NOT NULL PRIMARY KEY,
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL, SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
CERTIFICATE BYTEA DEFAULT NULL, CERTIFICATE BYTEA DEFAULT NULL,
TENANT_ID INTEGER DEFAULT 0 TENANT_ID INTEGER DEFAULT 0,
USERNAME VARCHAR(500) DEFAULT NULL
); );
CREATE TABLE IF NOT EXISTS DM_DEVICE ( CREATE TABLE IF NOT EXISTS DM_DEVICE (

Loading…
Cancel
Save