[ISSUE-67901957] add org
diff --git a/accessEntity/api.go b/accessEntity/api.go index cffeea0..1736376 100644 --- a/accessEntity/api.go +++ b/accessEntity/api.go
@@ -209,10 +209,11 @@ func extractIdentifiers(pars map[string][]string) (map[string]string, string, error) { m := make(map[string]string) - org := "" - if orgs := pars["organization"]; len(orgs) > 0 { - org = orgs[0] + orgs := pars["organization"] + if len(orgs) == 0 { + return nil, "", fmt.Errorf("no org specified") } + org := orgs[0] for k, v := range pars { k = strings.ToLower(k) if Identifiers[k] { @@ -233,7 +234,7 @@ } priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] - devs, err := a.DbMan.GetCompanyDevelopers(priKey, priVal, secKey, secVal) + devs, err := a.DbMan.GetCompanyDevelopers(org, priKey, priVal, secKey, secVal) if err != nil { log.Errorf("getCompanyDeveloper: %v", err) return nil, newDbError(err) @@ -274,7 +275,7 @@ } priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] - devs, err := a.DbMan.GetDevelopers(priKey, priVal, secKey, secVal) + devs, err := a.DbMan.GetDevelopers(org, priKey, priVal, secKey, secVal) if err != nil { log.Errorf("getDeveloper: %v", err) return nil, newDbError(err) @@ -313,7 +314,7 @@ } priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] - coms, err := a.DbMan.GetCompanies(priKey, priVal, secKey, secVal) + coms, err := a.DbMan.GetCompanies(org, priKey, priVal, secKey, secVal) if err != nil { log.Errorf("getCompany: %v", err) return nil, newDbError(err) @@ -347,7 +348,7 @@ } priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] - prods, err := a.DbMan.GetApiProducts(priKey, priVal, secKey, secVal) + prods, err := a.DbMan.GetApiProducts(org, priKey, priVal, secKey, secVal) if err != nil { log.Errorf("getApiProduct: %v", err) return nil, newDbError(err) @@ -380,7 +381,7 @@ } priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] - appCreds, err := a.DbMan.GetAppCredentials(priKey, priVal, secKey, secVal) + appCreds, err := a.DbMan.GetAppCredentials(org, priKey, priVal, secKey, secVal) if err != nil { log.Errorf("getAppCredential: %v", err) return nil, newDbError(err) @@ -394,7 +395,7 @@ } appCred := &appCreds[0] attrs := a.DbMan.GetKmsAttributes(appCred.TenantId, appCred.Id)[appCred.Id] - apps, err := a.DbMan.GetApps(IdentifierAppId, appCred.AppId, "", "") + apps, err := a.DbMan.GetApps(org, IdentifierAppId, appCred.AppId, "", "") if err != nil { log.Errorf("getAppCredential: %v", err) return nil, newDbError(err) @@ -434,7 +435,7 @@ } priKey, priVal, secKey, secVal := keyVals[0], keyVals[1], keyVals[2], keyVals[3] - apps, err := a.DbMan.GetApps(priKey, priVal, secKey, secVal) + apps, err := a.DbMan.GetApps(org, priKey, priVal, secKey, secVal) if err != nil { log.Errorf("getApp: %v", err) return nil, newDbError(err) @@ -462,7 +463,7 @@ log.Errorf("getApp error getting parent status: %v", err) return nil, newDbError(err) } - creds, err := a.DbMan.GetAppCredentials(IdentifierAppId, app.Id, "", "") + creds, err := a.DbMan.GetAppCredentials(org, IdentifierAppId, app.Id, "", "") if err != nil { log.Errorf("getApp error getting parent status: %v", err) return nil, newDbError(err)
diff --git a/accessEntity/data.go b/accessEntity/data.go index 0307c7a..8c2450c 100644 --- a/accessEntity/data.go +++ b/accessEntity/data.go
@@ -22,6 +22,7 @@ const ( sql_select_api_product = `SELECT * FROM kms_api_product AS ap ` sql_select_org = `SELECT * FROM kms_organization AS o WHERE o.tenant_id=$1 LIMIT 1;` + sql_select_tenant_org = ` (SELECT o.tenant_id FROM kms_organization AS o WHERE o.name=?)` ) type DbManager struct { @@ -191,35 +192,35 @@ return status.String, nil } -func (d *DbManager) GetApiProducts(priKey, priVal, secKey, secVal string) (apiProducts []common.ApiProduct, err error) { +func (d *DbManager) GetApiProducts(org, priKey, priVal, secKey, secVal string) (apiProducts []common.ApiProduct, err error) { if priKey == IdentifierAppId { - apiProducts, err = d.getApiProductsByAppId(priVal) + apiProducts, err = d.getApiProductsByAppId(priVal, org) if err != nil { return } } else if priKey == IdentifierApiProductName { - apiProducts, err = d.getApiProductsByName(priVal) + apiProducts, err = d.getApiProductsByName(priVal, org) if err != nil { return } } else if priKey == IdentifierAppName { switch secKey { case IdentifierDeveloperEmail: - apiProducts, err = d.getApiProductsByAppName(priVal, secVal, "", "") + apiProducts, err = d.getApiProductsByAppName(priVal, secVal, "", "", org) case IdentifierDeveloperId: - apiProducts, err = d.getApiProductsByAppName(priVal, "", secVal, "") + apiProducts, err = d.getApiProductsByAppName(priVal, "", secVal, "", org) case IdentifierCompanyName: - apiProducts, err = d.getApiProductsByAppName(priVal, "", "", secVal) + apiProducts, err = d.getApiProductsByAppName(priVal, "", "", secVal, org) case IdentifierApiResource: fallthrough case "": - apiProducts, err = d.getApiProductsByAppName(priVal, "", "", "") + apiProducts, err = d.getApiProductsByAppName(priVal, "", "", "", org) } if err != nil { return } } else if priKey == IdentifierConsumerKey { - apiProducts, err = d.getApiProductsByConsumerKey(priVal) + apiProducts, err = d.getApiProductsByConsumerKey(priVal, org) if err != nil { return } @@ -231,76 +232,79 @@ return } -func (d *DbManager) GetApps(priKey, priVal, secKey, secVal string) (apps []common.App, err error) { +func (d *DbManager) GetApps(org, priKey, priVal, secKey, secVal string) (apps []common.App, err error) { switch priKey { case IdentifierAppId: - return d.getAppByAppId(priVal) + return d.getAppByAppId(priVal, org) case IdentifierAppName: switch secKey { case IdentifierDeveloperEmail: - return d.getAppByAppName(priVal, secVal, "", "") + return d.getAppByAppName(priVal, secVal, "", "", org) case IdentifierDeveloperId: - return d.getAppByAppName(priVal, "", secVal, "") + return d.getAppByAppName(priVal, "", secVal, "", org) case IdentifierCompanyName: - return d.getAppByAppName(priVal, "", "", secVal) + return d.getAppByAppName(priVal, "", "", secVal, org) case "": - return d.getAppByAppName(priVal, "", "", "") + return d.getAppByAppName(priVal, "", "", "", org) } case IdentifierConsumerKey: - return d.getAppByConsumerKey(priVal) + return d.getAppByConsumerKey(priVal, org) } return } -func (d *DbManager) GetCompanies(priKey, priVal, secKey, secVal string) (companies []common.Company, err error) { +func (d *DbManager) GetCompanies(org, priKey, priVal, secKey, secVal string) (companies []common.Company, err error) { switch priKey { case IdentifierAppId: - return d.getCompanyByAppId(priVal) + return d.getCompanyByAppId(priVal, org) case IdentifierCompanyName: - return d.getCompanyByName(priVal) + return d.getCompanyByName(priVal, org) case IdentifierConsumerKey: - return d.getCompanyByConsumerKey(priVal) + return d.getCompanyByConsumerKey(priVal, org) } return } -func (d *DbManager) GetCompanyDevelopers(priKey, priVal, secKey, secVal string) (companyDevelopers []common.CompanyDeveloper, err error) { +func (d *DbManager) GetCompanyDevelopers(org, priKey, priVal, secKey, secVal string) (companyDevelopers []common.CompanyDeveloper, err error) { if priKey == IdentifierCompanyName { - return d.getCompanyDeveloperByComName(priVal) + return d.getCompanyDeveloperByComName(priVal, org) } return } -func (d *DbManager) GetAppCredentials(priKey, priVal, secKey, secVal string) (appCredentials []common.AppCredential, err error) { +func (d *DbManager) GetAppCredentials(org, priKey, priVal, secKey, secVal string) (appCredentials []common.AppCredential, err error) { if priKey == IdentifierConsumerKey { - return d.getAppCredentialByConsumerKey(priVal) + return d.getAppCredentialByConsumerKey(priVal, org) } return } -func (d *DbManager) GetDevelopers(priKey, priVal, secKey, secVal string) (developers []common.Developer, err error) { +func (d *DbManager) GetDevelopers(org, priKey, priVal, secKey, secVal string) (developers []common.Developer, err error) { switch priKey { case IdentifierAppId: - return d.getDeveloperByAppId(priVal) + return d.getDeveloperByAppId(priVal, org) case IdentifierDeveloperEmail: - return d.getDeveloperByEmail(priVal) + return d.getDeveloperByEmail(priVal, org) case IdentifierConsumerKey: - return d.getDeveloperByConsumerKey(priVal) + return d.getDeveloperByConsumerKey(priVal, org) case IdentifierDeveloperId: - return d.getDeveloperById(priVal) + return d.getDeveloperById(priVal, org) } return } -func (d *DbManager) getApiProductsByName(apiProdName string) (apiProducts []common.ApiProduct, err error) { +func (d *DbManager) getApiProductsByName(apiProdName string, org string) (apiProducts []common.ApiProduct, err error) { err = d.GetDb().QueryStructs(&apiProducts, - sql_select_api_product+`WHERE ap.name = $1;`, + sql_select_api_product+ + `WHERE ap.name = ? AND ap.tenant_id IN `+ + sql_select_tenant_org, apiProdName, + org, ) return } -func (d *DbManager) getApiProductsByAppId(appId string) (apiProducts []common.ApiProduct, err error) { +func (d *DbManager) getApiProductsByAppId(appId string, org string) (apiProducts []common.ApiProduct, err error) { cols := []string{"*"} query := selectApiProductsById( selectAppCredentialMapperByAppId( @@ -308,13 +312,13 @@ "apiprdt_id", ), cols..., - ) + ) + " AND ap.tenant_id IN " + sql_select_tenant_org log.Debugf("getApiProductsByAppId: %v", query) - err = d.GetDb().QueryStructs(&apiProducts, query) + err = d.GetDb().QueryStructs(&apiProducts, query, org) return } -func (d *DbManager) getApiProductsByConsumerKey(consumerKey string) (apiProducts []common.ApiProduct, err error) { +func (d *DbManager) getApiProductsByConsumerKey(consumerKey string, org string) (apiProducts []common.ApiProduct, err error) { cols := []string{"*"} query := selectApiProductsById( selectAppCredentialMapperByConsumerKey( @@ -322,13 +326,13 @@ "apiprdt_id", ), cols..., - ) + ) + " AND ap.tenant_id IN " + sql_select_tenant_org log.Debugf("getApiProductsByConsumerKey: %v", query) - err = d.GetDb().QueryStructs(&apiProducts, query) + err = d.GetDb().QueryStructs(&apiProducts, query, org) return } -func (d *DbManager) getApiProductsByAppName(appName, devEmail, devId, comName string) (apiProducts []common.ApiProduct, err error) { +func (d *DbManager) getApiProductsByAppName(appName, devEmail, devId, comName, org string) (apiProducts []common.ApiProduct, err error) { cols := []string{"*"} var appQuery string switch { @@ -369,24 +373,24 @@ "apiprdt_id", ), cols..., - ) + ) + " AND ap.tenant_id IN " + sql_select_tenant_org log.Debugf("getApiProductsByAppName: %v", query) - err = d.GetDb().QueryStructs(&apiProducts, query) + err = d.GetDb().QueryStructs(&apiProducts, query, org) return } -func (d *DbManager) getAppByAppId(id string) (apps []common.App, err error) { +func (d *DbManager) getAppByAppId(id, org string) (apps []common.App, err error) { cols := []string{"*"} query := selectAppById( "'"+id+"'", cols..., - ) + ) + " AND a.tenant_id IN " + sql_select_tenant_org log.Debugf("getAppByAppId: %v", query) - err = d.GetDb().QueryStructs(&apps, query) + err = d.GetDb().QueryStructs(&apps, query, org) return } -func (d *DbManager) getAppByAppName(appName, devEmail, devId, comName string) (apps []common.App, err error) { +func (d *DbManager) getAppByAppName(appName, devEmail, devId, comName, org string) (apps []common.App, err error) { cols := []string{"*"} var query string switch { @@ -420,12 +424,13 @@ cols..., ) } - log.Debugf("getAppByAppName: %v", query) + query += " AND a.tenant_id IN " + sql_select_tenant_org + log.Debugf("getAppByAppName: %v", query, org) err = d.GetDb().QueryStructs(&apps, query) return } -func (d *DbManager) getAppByConsumerKey(consumerKey string) (apps []common.App, err error) { +func (d *DbManager) getAppByConsumerKey(consumerKey, org string) (apps []common.App, err error) { cols := []string{"*"} query := selectAppById( selectAppCredentialMapperByConsumerKey( @@ -433,24 +438,24 @@ "app_id", ), cols..., - ) + ) + " AND a.tenant_id IN " + sql_select_tenant_org log.Debugf("getAppByConsumerKey: %v", query) - err = d.GetDb().QueryStructs(&apps, query) + err = d.GetDb().QueryStructs(&apps, query, org) return } -func (d *DbManager) getAppCredentialByConsumerKey(consumerKey string) (appCredentials []common.AppCredential, err error) { +func (d *DbManager) getAppCredentialByConsumerKey(consumerKey, org string) (appCredentials []common.AppCredential, err error) { cols := []string{"*"} query := selectAppCredentialByConsumerKey( "'"+consumerKey+"'", cols..., - ) + ) + " AND a.tenant_id IN " + sql_select_tenant_org log.Debugf("getAppCredentialByConsumerKey: %v", query) - err = d.GetDb().QueryStructs(&appCredentials, query) + err = d.GetDb().QueryStructs(&appCredentials, query, org) return } -func (d *DbManager) getCompanyByAppId(appId string) (companies []common.Company, err error) { +func (d *DbManager) getCompanyByAppId(appId, org string) (companies []common.Company, err error) { cols := []string{"*"} query := selectCompanyByComId( selectAppById( @@ -458,24 +463,24 @@ "company_id", ), cols..., - ) + ) + " AND com.tenant_id IN " + sql_select_tenant_org log.Debugf("getCompanyByAppId: %v", query) - err = d.GetDb().QueryStructs(&companies, query) + err = d.GetDb().QueryStructs(&companies, query, org) return } -func (d *DbManager) getCompanyByName(name string) (companies []common.Company, err error) { +func (d *DbManager) getCompanyByName(name, org string) (companies []common.Company, err error) { cols := []string{"*"} query := selectCompanyByName( "'"+name+"'", cols..., - ) + ) + " AND com.tenant_id IN " + sql_select_tenant_org log.Debugf("getCompanyByName: %v", query) - err = d.GetDb().QueryStructs(&companies, query) + err = d.GetDb().QueryStructs(&companies, query, org) return } -func (d *DbManager) getCompanyByConsumerKey(consumerKey string) (companies []common.Company, err error) { +func (d *DbManager) getCompanyByConsumerKey(consumerKey, org string) (companies []common.Company, err error) { cols := []string{"*"} query := selectCompanyByComId( selectAppById( @@ -486,13 +491,13 @@ "company_id", ), cols..., - ) + ) + " AND com.tenant_id IN " + sql_select_tenant_org log.Debugf("getCompanyByConsumerKey: %v", query) - err = d.GetDb().QueryStructs(&companies, query) + err = d.GetDb().QueryStructs(&companies, query, org) return } -func (d *DbManager) getCompanyDeveloperByComName(comName string) (companyDevelopers []common.CompanyDeveloper, err error) { +func (d *DbManager) getCompanyDeveloperByComName(comName, org string) (companyDevelopers []common.CompanyDeveloper, err error) { cols := []string{"*"} query := selectCompanyDeveloperByComId( selectCompanyByName( @@ -500,13 +505,13 @@ "id", ), cols..., - ) + ) + " AND cd.tenant_id IN " + sql_select_tenant_org log.Debugf("getCompanyDeveloperByComName: %v", query) - err = d.GetDb().QueryStructs(&companyDevelopers, query) + err = d.GetDb().QueryStructs(&companyDevelopers, query, org) return } -func (d *DbManager) getDeveloperByAppId(appId string) (developers []common.Developer, err error) { +func (d *DbManager) getDeveloperByAppId(appId, org string) (developers []common.Developer, err error) { cols := []string{"*"} query := selectDeveloperById( selectAppById( @@ -514,13 +519,13 @@ "developer_id", ), cols..., - ) + ) + " AND dev.tenant_id IN " + sql_select_tenant_org log.Debugf("getDeveloperByAppId: %v", query) - err = d.GetDb().QueryStructs(&developers, query) + err = d.GetDb().QueryStructs(&developers, query, org) return } -func (d *DbManager) getDeveloperByConsumerKey(consumerKey string) (developers []common.Developer, err error) { +func (d *DbManager) getDeveloperByConsumerKey(consumerKey, org string) (developers []common.Developer, err error) { cols := []string{"*"} query := selectDeveloperById( selectAppById( @@ -531,31 +536,31 @@ "developer_id", ), cols..., - ) + ) + " AND dev.tenant_id IN " + sql_select_tenant_org log.Debugf("getDeveloperByConsumerKey: %v", query) - err = d.GetDb().QueryStructs(&developers, query) + err = d.GetDb().QueryStructs(&developers, query, org) return } -func (d *DbManager) getDeveloperByEmail(email string) (developers []common.Developer, err error) { +func (d *DbManager) getDeveloperByEmail(email, org string) (developers []common.Developer, err error) { cols := []string{"*"} query := selectDeveloperByEmail( "'"+email+"'", cols..., - ) + ) + " AND dev.tenant_id IN " + sql_select_tenant_org log.Debugf("getDeveloperByEmail: %v", query) - err = d.GetDb().QueryStructs(&developers, query) + err = d.GetDb().QueryStructs(&developers, query, org) return } -func (d *DbManager) getDeveloperById(id string) (developers []common.Developer, err error) { +func (d *DbManager) getDeveloperById(id, org string) (developers []common.Developer, err error) { cols := []string{"*"} query := selectDeveloperById( "'"+id+"'", cols..., - ) + ) + " AND dev.tenant_id IN " + sql_select_tenant_org log.Debugf("getDeveloperById: %v", query) - err = d.GetDb().QueryStructs(&developers, query) + err = d.GetDb().QueryStructs(&developers, query, org) return }
diff --git a/accessEntity/data_test.go b/accessEntity/data_test.go index 4cf7b78..e836dd2 100644 --- a/accessEntity/data_test.go +++ b/accessEntity/data_test.go
@@ -48,6 +48,7 @@ It("should get apiProducts", func() { setupTestDb(dbMan.GetDb()) + org := "edgex01" testData := [][]string{ //positive tests {IdentifierApiProductName, "apstest", "", ""}, @@ -118,7 +119,7 @@ for i, data := range testData { priKey, priVal, secKey, secVal := data[0], data[1], data[2], data[3] - prods, err := dbMan.GetApiProducts(priKey, priVal, secKey, secVal) + prods, err := dbMan.GetApiProducts(org, priKey, priVal, secKey, secVal) Expect(err).Should(Succeed()) if len(results[i]) > 0 { Expect(prods).Should(Equal(results[i]))
diff --git a/accessEntity/interfaces.go b/accessEntity/interfaces.go index cdf4154..94506ec 100644 --- a/accessEntity/interfaces.go +++ b/accessEntity/interfaces.go
@@ -12,13 +12,12 @@ type DbManagerInterface interface { common.DbManagerInterface - GetOrgName(tenantId string) (string, error) - GetApiProducts(priKey, priVal, secKey, secVal string) (apiProducts []common.ApiProduct, err error) - GetApps(priKey, priVal, secKey, secVal string) (apps []common.App, err error) - GetCompanies(priKey, priVal, secKey, secVal string) (companies []common.Company, err error) - GetCompanyDevelopers(priKey, priVal, secKey, secVal string) (companyDevelopers []common.CompanyDeveloper, err error) - GetAppCredentials(priKey, priVal, secKey, secVal string) (appCredentials []common.AppCredential, err error) - GetDevelopers(priKey, priVal, secKey, secVal string) (developers []common.Developer, err error) + GetApiProducts(org, priKey, priVal, secKey, secVal string) (apiProducts []common.ApiProduct, err error) + GetApps(org, priKey, priVal, secKey, secVal string) (apps []common.App, err error) + GetCompanies(org, priKey, priVal, secKey, secVal string) (companies []common.Company, err error) + GetCompanyDevelopers(org, priKey, priVal, secKey, secVal string) (companyDevelopers []common.CompanyDeveloper, err error) + GetAppCredentials(org, priKey, priVal, secKey, secVal string) (appCredentials []common.AppCredential, err error) + GetDevelopers(org, priKey, priVal, secKey, secVal string) (developers []common.Developer, err error) GetApiProductNamesByAppId(appId string) ([]string, error) GetAppNamesByComId(comId string) ([]string, error) GetComNamesByDevId(devId string) ([]string, error) @@ -26,4 +25,5 @@ GetComNameByComId(comId string) (string, error) GetDevEmailByDevId(devId string) (string, error) GetStatus(id, t string) (string, error) + GetOrgName(tenantId string) (string, error) }