github.com/Hnampk/fabric@v2.1.1+incompatible/core/aclmgmt/aclmgmtimpl.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package aclmgmt 8 9 import "github.com/hyperledger/fabric/core/policy" 10 11 //implementation of aclMgmt. CheckACL calls in fabric result in the following flow 12 // if resourceProvider[resourceName] 13 // return resourceProvider[resourceName].CheckACL(...) 14 // else 15 // return defaultProvider[resourceName].CheckACL(...) 16 //with rescfgProvider encapsulating resourceProvider and defaultProvider 17 type aclMgmtImpl struct { 18 //resource provider gets resource information from config 19 rescfgProvider ACLProvider 20 } 21 22 //CheckACL checks the ACL for the resource for the channel using the 23 //idinfo. idinfo is an object such as SignedProposal from which an 24 //id can be extracted for testing against a policy 25 func (am *aclMgmtImpl) CheckACL(resName string, channelID string, idinfo interface{}) error { 26 //use the resource based config provider (which will in turn default to 1.0 provider) 27 return am.rescfgProvider.CheckACL(resName, channelID, idinfo) 28 } 29 30 //ACLProvider consists of two providers, supplied one and a default one (1.0 ACL management 31 //using ChannelReaders and ChannelWriters). If supplied provider is nil, a resource based 32 //ACL provider is created. 33 func NewACLProvider(rg ResourceGetter, policyChecker policy.PolicyChecker) ACLProvider { 34 return &aclMgmtImpl{ 35 rescfgProvider: newResourceProvider(rg, newDefaultACLProvider(policyChecker)), 36 } 37 }