Add company to the verifyapiKey
diff --git a/api.go b/api.go
index 3d47d52..eb5b6b2 100644
--- a/api.go
+++ b/api.go
@@ -75,7 +75,6 @@
// returns []byte to be written to client
func verifyAPIKey(f url.Values) ([]byte, error) {
-
key := f.Get("key")
scopeuuid := f.Get("scopeuuid")
path := f.Get("uriPath")
@@ -105,16 +104,41 @@
return errorResponse(reason, errorCode)
}
- log.Debug("Found tenant_id='", tenantId, "' with env='", env, "' for scopeuuid='", scopeuuid,"'")
+ log.Debug("Found tenant_id='", tenantId, "' with env='", env, "' for scopeuuid='", scopeuuid, "'")
- sSql := "SELECT ap.api_resources, ap.environments, c.issued_at, c.status, a.callback_url, d.username, d.id " +
- "FROM APP_CREDENTIAL AS c INNER JOIN APP AS a ON c.app_id = a.id " +
- "INNER JOIN DEVELOPER AS d ON a.developer_id = d.id " +
- "INNER JOIN APP_CREDENTIAL_APIPRODUCT_MAPPER as mp ON mp.appcred_id = c.id " +
- "INNER JOIN API_PRODUCT as ap ON ap.id = mp.apiprdt_id " +
- "WHERE (UPPER(d.status) = 'ACTIVE' AND mp.apiprdt_id = ap.id AND mp.app_id = a.id " +
- "AND mp.appcred_id = c.id AND UPPER(mp.status) = 'APPROVED' AND UPPER(a.status) = 'APPROVED' " +
- "AND c.id = $1 AND c.tenant_id = $2);"
+ sSql := `
+ WITH ALL_DEVELOPERS AS (
+ SELECT d.id, d.name, d.status
+ FROM DEVELOPER as d
+ INNER JOIN APP as a ON a.parent_id = d.id
+ UNION ALL
+ SELECT c.id, c.name, c.status
+ FROM COMPANY as c
+ INNER JOIN APP as a ON a.parent_id = c.id
+ )
+ SELECT
+ ap.api_resources,
+ ap.environments,
+ c.issued_at,
+ c.status,
+ a.callback_url,
+ ad.name,
+ ad.id
+ FROM APP_CREDENTIAL AS c
+ INNER JOIN APP AS a ON c.app_id = a.id
+ INNER JOIN ALL_DEVELOPERS AS ad
+ ON (ad.id = a.company_id OR ad.id = a.developer_id)
+ INNER JOIN APP_CREDENTIAL_APIPRODUCT_MAPPER as mp
+ ON mp.appcred_id = c.id
+ INNER JOIN API_PRODUCT as ap ON ap.id = mp.apiprdt_id
+ WHERE (UPPER(ad.status) = 'ACTIVE'
+ AND mp.apiprdt_id = ap.id
+ AND mp.app_id = a.id
+ AND mp.appcred_id = c.id
+ AND UPPER(mp.status) = 'APPROVED'
+ AND UPPER(a.status) = 'APPROVED'
+ AND c.id = $1
+ AND c.tenant_id = $2);`
var status, redirectionURIs, developerAppName, developerId, resName, resEnv string
var issuedAt int64
diff --git a/api_test.go b/api_test.go
index 87430a8..bc545e2 100644
--- a/api_test.go
+++ b/api_test.go
@@ -32,6 +32,7 @@
res := insertDevelopers([]common.Row{row}, txn)
Expect(res).Should(BeTrue())
}
+
// companies
for i := 0; i < 10; i++ {
row := generateTestCompany(i)
@@ -41,7 +42,7 @@
// company developers
for i := 0; i < 10; i++ {
- row := generateTestCompanyDeveloper(i);
+ row := generateTestCompanyDeveloper(i)
res := insertCompanyDevelopers([]common.Row{row}, txn)
Expect(res).Should(BeTrue())
}
@@ -50,7 +51,7 @@
var j, k int
for i := 0; i < 10; i++ {
for j = k; j < 10+k; j++ {
- row := generateTestApp(j, i);
+ row := generateTestApp(j, i)
res := insertApplications([]common.Row{row}, txn)
Expect(res).Should(BeTrue())
}
@@ -118,7 +119,7 @@
Expect(err).ShouldNot(HaveOccurred())
for i := 0; i < 10; i++ {
- row := generateTestApiProductMapper(i);
+ row := generateTestApiProductMapper(i)
res := deleteAPIproductMapper(row, txn)
Expect(res).Should(BeTrue())
}
diff --git a/init.go b/init.go
index 823158f..555d848 100644
--- a/init.go
+++ b/init.go
@@ -73,6 +73,7 @@
PRIMARY KEY (tenant_id, id));
CREATE TABLE IF NOT EXISTS developer (
id text,
+ name text,
tenant_id text,
username text,
first_name text,
@@ -124,6 +125,7 @@
status text,
app_family text,
company_id text,
+ parent_id text,
developer_id text,
type int,
created_at int64,
@@ -155,6 +157,7 @@
status text,
PRIMARY KEY (appcred_id, app_id, apiprdt_id,tenant_id)
);
+CREATE INDEX IF NOT EXISTS company_id ON company (id);
CREATE INDEX IF NOT EXISTS developer_id ON developer (id);
CREATE INDEX IF NOT EXISTS api_product_id ON api_product (id);
CREATE INDEX IF NOT EXISTS app_id ON app (id);
diff --git a/listener.go b/listener.go
index 749160f..8ceb9bc 100644
--- a/listener.go
+++ b/listener.go
@@ -134,10 +134,10 @@
*/
func insertApplications(rows []common.Row, txn *sql.Tx) bool {
- var scope, EntityIdentifier, DeveloperId, CallbackUrl, Status, AppName, AppFamily, tenantId, CreatedBy, LastModifiedBy string
+ var scope, EntityIdentifier, DeveloperId, CompanyId, ParentId, CallbackUrl, Status, AppName, AppFamily, tenantId, CreatedBy, LastModifiedBy string
var CreatedAt, LastModifiedAt int64
- prep, err := txn.Prepare("INSERT INTO APP (_change_selector, id, developer_id,callback_url,status, name, app_family, created_at, created_by,updated_at, updated_by,tenant_id) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12);")
+ prep, err := txn.Prepare("INSERT INTO APP (_change_selector, id, developer_id, company_id, parent_id, callback_url,status, name, app_family, created_at, created_by,updated_at, updated_by,tenant_id) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14);")
if err != nil {
log.Error("INSERT APP Failed: ", err)
return false
@@ -149,6 +149,8 @@
ele.Get("_change_selector", &scope)
ele.Get("id", &EntityIdentifier)
ele.Get("developer_id", &DeveloperId)
+ ele.Get("company_id", &CompanyId)
+ ele.Get("parent_id", &ParentId)
ele.Get("callback_url", &CallbackUrl)
ele.Get("status", &Status)
ele.Get("name", &AppName)
@@ -168,6 +170,8 @@
scope,
EntityIdentifier,
DeveloperId,
+ CompanyId,
+ ParentId,
CallbackUrl,
Status,
AppName,
@@ -194,10 +198,10 @@
*/
func insertDevelopers(rows []common.Row, txn *sql.Tx) bool {
- var scope, EntityIdentifier, Email, Status, UserName, FirstName, LastName, tenantId, CreatedBy, LastModifiedBy, Username string
+ var scope, EntityIdentifier, Email, Status, UserName, FirstName, LastName, tenantId, CreatedBy, LastModifiedBy, Username, Name string
var CreatedAt, LastModifiedAt int64
- prep, err := txn.Prepare("INSERT INTO DEVELOPER (_change_selector,email,id,tenant_id,status,username,first_name,last_name,created_at,created_by,updated_at,updated_by) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12);")
+ prep, err := txn.Prepare("INSERT INTO DEVELOPER (_change_selector,email,id,tenant_id,status,username,first_name,last_name,name,created_at,created_by,updated_at,updated_by) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13);")
if err != nil {
log.Error("INSERT DEVELOPER Failed: ", err)
return false
@@ -214,6 +218,7 @@
ele.Get("username", &Username)
ele.Get("first_name", &FirstName)
ele.Get("last_name", &LastName)
+ ele.Get("email", &Name)
ele.Get("created_at", &CreatedAt)
ele.Get("created_by", &CreatedBy)
ele.Get("updated_at", &LastModifiedAt)
@@ -233,6 +238,7 @@
UserName,
FirstName,
LastName,
+ Name,
CreatedAt,
CreatedBy,
LastModifiedAt,