tendermint/permission/types/snatives.go

103 lines
2.4 KiB
Go
Raw Normal View History

2015-06-19 23:53:21 -07:00
package types
2015-07-20 11:24:57 -07:00
import (
2015-07-25 15:45:45 -07:00
"github.com/tendermint/tendermint/wire"
2015-07-20 11:24:57 -07:00
)
//---------------------------------------------------------------------------------------------------
// PermissionsTx.PermArgs interface and argument encoding
2015-07-20 11:24:57 -07:00
// Arguments are a registered interface in the PermissionsTx,
// so binary handles the arguments and each permission function gets a type-byte
2015-07-21 10:05:08 -07:00
// PermFlag() maps the type-byte to the permission
// The account sending the PermissionsTx must have this PermFlag set
type PermArgs interface {
2015-07-20 11:24:57 -07:00
PermFlag() PermFlag
}
const (
PermArgsTypeHasBase = byte(0x01)
PermArgsTypeSetBase = byte(0x02)
PermArgsTypeUnsetBase = byte(0x03)
PermArgsTypeSetGlobal = byte(0x04)
PermArgsTypeHasRole = byte(0x05)
PermArgsTypeAddRole = byte(0x06)
PermArgsTypeRmRole = byte(0x07)
2015-07-20 11:24:57 -07:00
)
2015-07-25 15:45:45 -07:00
// for wire.readReflect
var _ = wire.RegisterInterface(
struct{ PermArgs }{},
2015-07-25 15:45:45 -07:00
wire.ConcreteType{&HasBaseArgs{}, PermArgsTypeHasBase},
wire.ConcreteType{&SetBaseArgs{}, PermArgsTypeSetBase},
wire.ConcreteType{&UnsetBaseArgs{}, PermArgsTypeUnsetBase},
wire.ConcreteType{&SetGlobalArgs{}, PermArgsTypeSetGlobal},
wire.ConcreteType{&HasRoleArgs{}, PermArgsTypeHasRole},
wire.ConcreteType{&AddRoleArgs{}, PermArgsTypeAddRole},
wire.ConcreteType{&RmRoleArgs{}, PermArgsTypeRmRole},
2015-07-20 11:24:57 -07:00
)
type HasBaseArgs struct {
2015-07-21 11:29:31 -07:00
Address []byte `json:"address"`
Permission PermFlag `json:"permission"`
2015-07-20 11:24:57 -07:00
}
func (*HasBaseArgs) PermFlag() PermFlag {
return HasBase
}
type SetBaseArgs struct {
2015-07-21 11:29:31 -07:00
Address []byte `json:"address"`
Permission PermFlag `json:"permission"`
Value bool `json:"value"`
2015-07-20 11:24:57 -07:00
}
func (*SetBaseArgs) PermFlag() PermFlag {
return SetBase
}
type UnsetBaseArgs struct {
2015-07-21 11:29:31 -07:00
Address []byte `json:"address"`
Permission PermFlag `json:"permission"`
2015-07-20 11:24:57 -07:00
}
func (*UnsetBaseArgs) PermFlag() PermFlag {
return UnsetBase
}
type SetGlobalArgs struct {
2015-07-21 11:29:31 -07:00
Permission PermFlag `json:"permission"`
Value bool `json:"value"`
2015-07-20 11:24:57 -07:00
}
func (*SetGlobalArgs) PermFlag() PermFlag {
return SetGlobal
}
type HasRoleArgs struct {
2015-07-21 11:29:31 -07:00
Address []byte `json:"address"`
Role string `json:"role"`
2015-07-20 11:24:57 -07:00
}
func (*HasRoleArgs) PermFlag() PermFlag {
return HasRole
}
type AddRoleArgs struct {
2015-07-21 11:29:31 -07:00
Address []byte `json:"address"`
Role string `json:"role"`
2015-07-20 11:24:57 -07:00
}
func (*AddRoleArgs) PermFlag() PermFlag {
return AddRole
}
type RmRoleArgs struct {
2015-07-21 11:29:31 -07:00
Address []byte `json:"address"`
Role string `json:"role"`
2015-07-20 11:24:57 -07:00
}
func (*RmRoleArgs) PermFlag() PermFlag {
return RmRole
}