github.com/yacovm/fabric@v2.0.0-alpha.0.20191128145320-c5d4087dc723+incompatible/common/channelconfig/acls.go (about)

     1  /*
     2  Copyright State Street Corp. 2018 All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package channelconfig
     8  
     9  import (
    10  	pb "github.com/hyperledger/fabric-protos-go/peer"
    11  )
    12  
    13  // aclsProvider provides mappings for resource to policy names
    14  type aclsProvider struct {
    15  	aclPolicyRefs map[string]string
    16  }
    17  
    18  func (ag *aclsProvider) PolicyRefForAPI(aclName string) string {
    19  	return ag.aclPolicyRefs[aclName]
    20  }
    21  
    22  // this translates policies to absolute paths if needed
    23  func newAPIsProvider(acls map[string]*pb.APIResource) *aclsProvider {
    24  	aclPolicyRefs := make(map[string]string)
    25  
    26  	for key, acl := range acls {
    27  		if len(acl.PolicyRef) == 0 {
    28  			logger.Warningf("Policy reference for resource '%s' is specified, but empty, falling back to default", key)
    29  			continue
    30  		}
    31  		// If the policy is fully qualified, ie to /Channel/Application/Readers leave it alone
    32  		// otherwise, make it fully qualified referring to /Channel/Application/policyName
    33  		if acl.PolicyRef[0] != '/' {
    34  			aclPolicyRefs[key] = "/" + ChannelGroupKey + "/" + ApplicationGroupKey + "/" + acl.PolicyRef
    35  		} else {
    36  			aclPolicyRefs[key] = acl.PolicyRef
    37  		}
    38  	}
    39  
    40  	return &aclsProvider{
    41  		aclPolicyRefs: aclPolicyRefs,
    42  	}
    43  }