github.com/cosmos/cosmos-sdk@v0.50.10/x/auth/types/permissions.go (about) 1 package types 2 3 import ( 4 "fmt" 5 "strings" 6 7 sdk "github.com/cosmos/cosmos-sdk/types" 8 ) 9 10 // permissions 11 const ( 12 Minter = "minter" 13 Burner = "burner" 14 Staking = "staking" 15 ) 16 17 // PermissionsForAddress defines all the registered permissions for an address 18 type PermissionsForAddress struct { 19 permissions []string 20 address sdk.AccAddress 21 } 22 23 // NewPermissionsForAddress creates a new PermissionsForAddress object 24 func NewPermissionsForAddress(name string, permissions []string) PermissionsForAddress { 25 return PermissionsForAddress{ 26 permissions: permissions, 27 address: NewModuleAddress(name), 28 } 29 } 30 31 // HasPermission returns whether the PermissionsForAddress contains permission. 32 func (pa PermissionsForAddress) HasPermission(permission string) bool { 33 for _, perm := range pa.permissions { 34 if perm == permission { 35 return true 36 } 37 } 38 return false 39 } 40 41 // GetAddress returns the address of the PermissionsForAddress object 42 func (pa PermissionsForAddress) GetAddress() sdk.AccAddress { 43 return pa.address 44 } 45 46 // GetPermissions returns the permissions granted to the address 47 func (pa PermissionsForAddress) GetPermissions() []string { 48 return pa.permissions 49 } 50 51 // performs basic permission validation 52 func validatePermissions(permissions ...string) error { 53 for _, perm := range permissions { 54 if strings.TrimSpace(perm) == "" { 55 return fmt.Errorf("module permission is empty") 56 } 57 } 58 return nil 59 }