2017-11-26 20:29:17 -08:00
|
|
|
package auth
|
|
|
|
|
|
|
|
import (
|
2017-12-20 21:23:19 -08:00
|
|
|
"github.com/cosmos/cosmos-sdk/types"
|
2017-11-26 20:29:17 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
2018-01-12 11:49:53 -08:00
|
|
|
Usage:
|
2017-11-26 20:29:17 -08:00
|
|
|
|
2018-01-22 05:44:24 -08:00
|
|
|
var accounts types.AccountMapper
|
2017-11-26 20:29:17 -08:00
|
|
|
|
2018-01-12 11:49:53 -08:00
|
|
|
// Fetch all signer accounts.
|
|
|
|
addrs := tx.GetSigners()
|
|
|
|
signers := make([]types.Account, len(addrs))
|
|
|
|
for i, addr := range addrs {
|
2018-01-22 05:44:24 -08:00
|
|
|
acc := accounts.GetAccount(ctx)
|
2018-01-12 11:49:53 -08:00
|
|
|
signers[i] = acc
|
|
|
|
}
|
|
|
|
ctx = auth.SetSigners(ctx, signers)
|
2017-11-26 20:29:17 -08:00
|
|
|
|
2018-01-12 11:49:53 -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 (
|
2018-01-12 11:49:53 -08:00
|
|
|
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
|
|
|
}
|