github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/wasm/keeper/authz_policy.go (about)

     1  package keeper
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  
     6  	"github.com/fibonacci-chain/fbc/x/wasm/types"
     7  )
     8  
     9  type AuthorizationPolicy interface {
    10  	CanCreateCode(c types.AccessConfig, creator sdk.AccAddress) bool
    11  	CanInstantiateContract(c types.AccessConfig, actor sdk.AccAddress) bool
    12  	CanModifyContract(admin, actor sdk.AccAddress) bool
    13  }
    14  
    15  type DefaultAuthorizationPolicy struct{}
    16  
    17  func (p DefaultAuthorizationPolicy) CanCreateCode(config types.AccessConfig, actor sdk.AccAddress) bool {
    18  	return config.Allowed(actor)
    19  }
    20  
    21  func (p DefaultAuthorizationPolicy) CanInstantiateContract(config types.AccessConfig, actor sdk.AccAddress) bool {
    22  	return config.Allowed(actor)
    23  }
    24  
    25  func (p DefaultAuthorizationPolicy) CanModifyContract(admin, actor sdk.AccAddress) bool {
    26  	return admin != nil && admin.Equals(actor)
    27  }
    28  
    29  type GovAuthorizationPolicy struct{}
    30  
    31  func (p GovAuthorizationPolicy) CanCreateCode(types.AccessConfig, sdk.AccAddress) bool {
    32  	return true
    33  }
    34  
    35  func (p GovAuthorizationPolicy) CanInstantiateContract(types.AccessConfig, sdk.AccAddress) bool {
    36  	return true
    37  }
    38  
    39  func (p GovAuthorizationPolicy) CanModifyContract(sdk.AccAddress, sdk.AccAddress) bool {
    40  	return true
    41  }