Skip to content
Snippets Groups Projects
Select Git revision
  • 1767f078eb25a7c9d926a0b9c02987b435235778
  • main default
2 results

acl.go

Blame
  • acl.go 1.14 KiB
    /**
     * acl.go
     *
     * COPYRIGHT: FUNDACIÓN TECNALIA RESEARCH & INNOVATION, 2022.
     */
    
    package discard
    
    import (
    	"git.code.tecnalia.com/ledgerbuilder/sdk/core/api"
    	"git.code.tecnalia.com/ledgerbuilder/sdk/core/fabric/protos"
    	"git.code.tecnalia.com/ledgerbuilder/sdk/shared"
    
    	"git.code.tecnalia.com/traceblock/sdk/controller/utils"
    )
    
    func (c DiscardController) CheckACL(validations []utils.OwnershipACL, trigger shared.TriggerFunction) shared.TriggerFunction {
    	return func(stub shared.LedgerBuildrStubInterface, requestAsset shared.LedgerBuildrAsset) protos.Response {
    		const fnName = "ACL"
    
    		storedAsset, err := c.readAsset(stub, requestAsset)
    		if err != nil {
    			return api.NewApiResponsePtr(fnName, err, nil).SendResponse()
    		}
    
    		for _, validation := range validations {
    			if err := validation(storedAsset.Owner, stub); err != nil {
    				return api.NewApiResponsePtr(fnName, err, nil).SendResponse()
    			}
    		}
    
    		return trigger(stub, requestAsset)
    	}
    }
    
    func (c DiscardController) OnlySameOrgAndRole(trigger shared.TriggerFunction) shared.TriggerFunction {
    	return c.CheckACL([]utils.OwnershipACL{utils.OwnedBySameOrg, utils.OwnedBySameRoleOrAdmin}, trigger)
    }