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  }