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 }