cosmos-sdk/x/auth/context.go

49 lines
907 B
Go
Raw Normal View History

2017-11-26 20:29:17 -08:00
package auth
import (
"github.com/cosmos/cosmos-sdk/types"
2017-11-26 20:29:17 -08:00
)
/*
Usage:
2017-11-26 20:29:17 -08:00
var accounts types.AccountMapper
2017-11-26 20:29:17 -08:00
// Fetch all signer accounts.
addrs := tx.GetSigners()
signers := make([]types.Account, len(addrs))
for i, addr := range addrs {
acc := accounts.GetAccount(ctx)
signers[i] = acc
}
ctx = auth.SetSigners(ctx, signers)
2017-11-26 20:29:17 -08:00
// Get all signer accounts.
signers := auth.GetSigners(ctx)
for i, signer := range signers {
signer.Address() == tx.GetSigners()[i]
}
2017-11-26 20:29:17 -08:00
*/
type contextKey int // local to the auth module
const (
contextKeySigners contextKey = iota
2017-11-26 20:29:17 -08:00
)
2018-04-18 21:49:24 -07:00
// add the signers to the context
2018-05-23 19:26:54 -07:00
func WithSigners(ctx types.Context, accounts []Account) types.Context {
2018-01-12 14:30:02 -08:00
return ctx.WithValue(contextKeySigners, accounts)
2017-11-26 20:29:17 -08:00
}
2018-04-18 21:49:24 -07:00
// get the signers from the context
2018-05-23 19:26:54 -07:00
func GetSigners(ctx types.Context) []Account {
2018-03-17 13:20:24 -07:00
v := ctx.Value(contextKeySigners)
if v == nil {
2018-05-23 19:26:54 -07:00
return []Account{}
2018-03-17 13:20:24 -07:00
}
2018-05-23 19:26:54 -07:00
return v.([]Account)
2017-11-26 20:29:17 -08:00
}