From 9b7ff515ec19b7072421aebb9b194c6790c330a0 Mon Sep 17 00:00:00 2001 From: "Gomez Goiri, Aitor" <aitor.gomez@tecnalia.com> Date: Fri, 1 Apr 2022 12:27:21 +0200 Subject: [PATCH] Delegating organization name extraction so it can consider affiliation too --- chaincode/constants/organizations.go | 15 +++++++++++++++ chaincode/controller/bid/acl.go | 3 ++- chaincode/controller/bid/bid_controller.go | 2 +- chaincode/controller/stats/stub.go | 9 +++++---- chaincode/go.mod | 2 +- chaincode/go.sum | 4 ++-- chaincode/middleware/acl.go | 7 ++++--- chaincode/middleware/selector.go | 10 ++++++---- 8 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 chaincode/constants/organizations.go diff --git a/chaincode/constants/organizations.go b/chaincode/constants/organizations.go new file mode 100644 index 0000000..d8a53da --- /dev/null +++ b/chaincode/constants/organizations.go @@ -0,0 +1,15 @@ +/** + * constants.go + * + * COPYRIGHT: FUNDACIÓN TECNALIA RESEARCH & INNOVATION, 2022. + */ + +package constants + +var ( + SidenorOrg string = "sidenor.com" + SidenorMsp string = "sidenor-com" + Cement1Msp string = "cement-company1-com" + Cement2Msp string = "cement-company2-com" + PublicAdminMsp string = "public-administration-com" +) \ No newline at end of file diff --git a/chaincode/controller/bid/acl.go b/chaincode/controller/bid/acl.go index d04764d..8f498c9 100644 --- a/chaincode/controller/bid/acl.go +++ b/chaincode/controller/bid/acl.go @@ -9,6 +9,7 @@ package bid import ( "errors" + "git.code.tecnalia.com/blockchain/hypercog/constants" "git.code.tecnalia.com/ledgerbuilder/sdk/core/api" "git.code.tecnalia.com/ledgerbuilder/sdk/core/fabric/protos" "git.code.tecnalia.com/ledgerbuilder/sdk/shared" @@ -27,7 +28,7 @@ func (c BidController) OwnedBySidenor(trigger shared.TriggerFunction) shared.Tri return api.NewApiResponsePtr(fnName, err, nil).SendResponse() } - if storedAsset.Owner.Org != "sidenor.com" { + if storedAsset.Owner.Org != constants.SidenorOrg { return api.NewApiResponsePtr(fnName, errNotSidenorMSP, nil).SendResponse() } diff --git a/chaincode/controller/bid/bid_controller.go b/chaincode/controller/bid/bid_controller.go index beb6427..745a7a2 100644 --- a/chaincode/controller/bid/bid_controller.go +++ b/chaincode/controller/bid/bid_controller.go @@ -118,7 +118,7 @@ func (c BidController) BidAsset(stub shared.LedgerBuildrStubInterface, params sh return api.NewApiResponsePtr(fnName, err, nil).SendResponse() } - org, err := stub.GetOrganization() + org, err := model.GetOrganization(stub) if err != nil { return api.NewApiResponsePtr(fnName, err, nil).SendResponse() } diff --git a/chaincode/controller/stats/stub.go b/chaincode/controller/stats/stub.go index 66066ad..175d4d4 100644 --- a/chaincode/controller/stats/stub.go +++ b/chaincode/controller/stats/stub.go @@ -14,8 +14,9 @@ import ( "git.code.tecnalia.com/ledgerbuilder/sdk/core/util/logging" "git.code.tecnalia.com/ledgerbuilder/sdk/shared" - "git.code.tecnalia.com/blockchain/hypercog/model" + hmodel "git.code.tecnalia.com/blockchain/hypercog/model" "git.code.tecnalia.com/blockchain/hypercog/model/stats" + "git.code.tecnalia.com/traceblock/sdk/model" ) const STEEL_ORG_LIST_KEY = "steel_orgs" @@ -156,7 +157,7 @@ func addOrgIfNotExist(stub shared.LedgerBuildrStubInterface, key string, org str func retrieveExistingStats(stub shared.LedgerBuildrStubInterface) (*stats.RawSteelOrgStats, error) { - org, err := stub.GetOrganization() + org, err := model.GetOrganization(stub) if err != nil { return nil, err } @@ -170,7 +171,7 @@ func retrieveExistingStats(stub shared.LedgerBuildrStubInterface) (*stats.RawSte } func upgradeSteelStats(stub shared.LedgerBuildrStubInterface, customStats *stats.RawSteelOrgStats) (error) { - org, err := stub.GetOrganization() + org, err := model.GetOrganization(stub) if err != nil { return err } @@ -237,7 +238,7 @@ func RegisterDiscard(stub shared.LedgerBuildrStubInterface, quantity uint32, uni return nil } -func RegisterSale(stub shared.LedgerBuildrStubInterface, acceptedBid *model.Bid, units string) (error) { +func RegisterSale(stub shared.LedgerBuildrStubInterface, acceptedBid *hmodel.Bid, units string) (error) { senderOrgStats, err := retrieveExistingStats(stub) if err != nil { return err diff --git a/chaincode/go.mod b/chaincode/go.mod index a43b720..ebc0247 100644 --- a/chaincode/go.mod +++ b/chaincode/go.mod @@ -4,7 +4,7 @@ go 1.15 require ( git.code.tecnalia.com/ledgerbuilder/sdk v1.4.1 - git.code.tecnalia.com/traceblock/sdk v1.0.1-0.20220308162114-1a900e794740 + git.code.tecnalia.com/traceblock/sdk v1.0.1-0.20220401083654-f7585e7ed3ce github.com/mitchellh/mapstructure v1.4.2 github.com/stretchr/testify v1.7.0 ) diff --git a/chaincode/go.sum b/chaincode/go.sum index b2ed95a..0fe234c 100644 --- a/chaincode/go.sum +++ b/chaincode/go.sum @@ -1,8 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= git.code.tecnalia.com/ledgerbuilder/sdk v1.4.1 h1:XK0VH1OWqv9G1XeTM3NMvuxJYTBFStSJ6FLlcp3lhO0= git.code.tecnalia.com/ledgerbuilder/sdk v1.4.1/go.mod h1:lzlMPHixE7XouwzF3UY21z40uQNxeBGhzmjd3KZk2cQ= -git.code.tecnalia.com/traceblock/sdk v1.0.1-0.20220308162114-1a900e794740 h1:cRE2qGRBJozlhpWMvTkvQ3soyjmciKE1w0OpX8C6JkI= -git.code.tecnalia.com/traceblock/sdk v1.0.1-0.20220308162114-1a900e794740/go.mod h1:1+VF+RqzmkMTqhqkvp8Z/t9/LONNr1vBoEkttT8oOVo= +git.code.tecnalia.com/traceblock/sdk v1.0.1-0.20220401083654-f7585e7ed3ce h1:Rv+Jz1Qk57OYOa92pccqfD6Mi6rZO6IOOCfyrnLuzXo= +git.code.tecnalia.com/traceblock/sdk v1.0.1-0.20220401083654-f7585e7ed3ce/go.mod h1:1+VF+RqzmkMTqhqkvp8Z/t9/LONNr1vBoEkttT8oOVo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/RoaringBitmap/roaring v0.5.1/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= diff --git a/chaincode/middleware/acl.go b/chaincode/middleware/acl.go index 5a3390e..9346111 100644 --- a/chaincode/middleware/acl.go +++ b/chaincode/middleware/acl.go @@ -9,6 +9,7 @@ package middleware import ( "errors" + "git.code.tecnalia.com/blockchain/hypercog/constants" "git.code.tecnalia.com/ledgerbuilder/sdk/shared" ) @@ -22,7 +23,7 @@ var ( func rejectIfNotSidenor(stub shared.LedgerBuildrStubInterface, ctl shared.ControllerInterface, req shared.TXRequestInterface, request shared.LedgerBuildrAsset) (shared.LedgerBuildrAsset, error) { mspId := stub.GetMSPId() - if (mspId == "sidenor-com") { + if (mspId == constants.SidenorMsp) { return request, nil } @@ -32,7 +33,7 @@ func rejectIfNotSidenor(stub shared.LedgerBuildrStubInterface, ctl shared.Contro func rejectIfNotCementCompany(stub shared.LedgerBuildrStubInterface, ctl shared.ControllerInterface, req shared.TXRequestInterface, request shared.LedgerBuildrAsset) (shared.LedgerBuildrAsset, error) { mspId := stub.GetMSPId() - if (mspId == "cement-company1-com" || mspId == "cement-company2-com") { + if (mspId == constants.Cement1Msp || mspId == constants.Cement2Msp) { return request, nil } @@ -42,7 +43,7 @@ func rejectIfNotCementCompany(stub shared.LedgerBuildrStubInterface, ctl shared. func rejectIfNotPublicAdmin(stub shared.LedgerBuildrStubInterface, ctl shared.ControllerInterface, req shared.TXRequestInterface, request shared.LedgerBuildrAsset) (shared.LedgerBuildrAsset, error) { mspId := stub.GetMSPId() - if (mspId == "public-administration-com") { + if (mspId == constants.PublicAdminMsp) { return request, nil } diff --git a/chaincode/middleware/selector.go b/chaincode/middleware/selector.go index b1423db..a371f2c 100644 --- a/chaincode/middleware/selector.go +++ b/chaincode/middleware/selector.go @@ -7,9 +7,11 @@ package middleware import ( + "git.code.tecnalia.com/blockchain/hypercog/constants" "git.code.tecnalia.com/ledgerbuilder/sdk/core/model/query" "git.code.tecnalia.com/ledgerbuilder/sdk/shared" "git.code.tecnalia.com/traceblock/sdk/middleware" + "git.code.tecnalia.com/traceblock/sdk/model" ) var ( @@ -22,7 +24,7 @@ var ( func addMspConstraint(stub shared.LedgerBuildrStubInterface, ctl shared.ControllerInterface, req shared.TXRequestInterface, request shared.LedgerBuildrAsset) (shared.LedgerBuildrAsset, error) { mspId := stub.GetMSPId() - if (mspId == "public-administration-com") { + if (mspId == constants.PublicAdminMsp) { // If public administration => do not alter the query (full-access) return request, nil } @@ -34,12 +36,12 @@ func addMspConstraint(stub shared.LedgerBuildrStubInterface, ctl shared.Controll func addOrgConstraint(stub shared.LedgerBuildrStubInterface, ctl shared.ControllerInterface, req shared.TXRequestInterface, request shared.LedgerBuildrAsset) (shared.LedgerBuildrAsset, error) { mspId := stub.GetMSPId() - if (mspId == "public-administration-com") { + if (mspId == constants.PublicAdminMsp) { // If public administration => do not alter the query (full-access) return request, nil } - org, err := stub.GetOrganization() + org, err := model.GetOrganization(stub) if err != nil { return nil, err } @@ -58,5 +60,5 @@ func addStockedStatusConstraint(stub shared.LedgerBuildrStubInterface, ctl share func addSidenorOrgConstraint(stub shared.LedgerBuildrStubInterface, ctl shared.ControllerInterface, req shared.TXRequestInterface, request shared.LedgerBuildrAsset) (shared.LedgerBuildrAsset, error) { // If more than one: // middleware.AlterSelector(request, "selector.owner.msp.$in", fmt.Sprintf("[\"%s\",\"%s\"]", "msp1", "sidenor-com")) - return middleware.AlterSelector(request, "selector.owner.org", "sidenor.com") + return middleware.AlterSelector(request, "selector.owner.org", constants.SidenorOrg) } \ No newline at end of file -- GitLab