/
token.go
53 lines (47 loc) · 1.22 KB
/
token.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package types
import sdk "github.com/cosmos/cosmos-sdk/types"
func NewToken(name string, symbol string, total string, manager string, authorizationRequired bool) Token {
return Token{
Name: name,
Symbol: symbol,
Total: total,
Manager: manager,
AuthorizationRequired: authorizationRequired,
Authorized: []*TokenAuthorization{},
}
}
func NewAuthorization(address sdk.Address) *TokenAuthorization {
return &TokenAuthorization{Address: address.String(), Authorized: true}
}
func (t *Token) AuthorizeAddress(addr sdk.Address) *Token {
found := false
for _, a := range t.Authorized {
if a.Address == addr.String() {
a.Authorized = true
found = true
break
}
}
if !found {
newAuthorized := NewAuthorization(addr)
t.Authorized = append(t.Authorized, newAuthorized)
}
return t
}
func (t *Token) UnAuthorizeAddress(addr sdk.Address) *Token {
for _, a := range t.Authorized {
if a.Address == addr.String() {
a.Authorized = false
break
}
}
return t
}
func (t *Token) AddressIsAuthorized(addr sdk.AccAddress) bool {
for _, a := range t.Authorized {
if a.Address == addr.String() && a.Authorized {
return true
}
}
return false
}