-
Notifications
You must be signed in to change notification settings - Fork 105
/
msg_server.go
60 lines (43 loc) · 1.89 KB
/
msg_server.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
54
55
56
57
58
59
60
package keeper
import (
"context"
"fmt"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/axelarnetwork/axelar-core/x/permission/exported"
"github.com/axelarnetwork/axelar-core/x/permission/types"
)
type msgServer struct {
Keeper
}
// NewMsgServerImpl returns a new msg server instance
func NewMsgServerImpl(keeper Keeper) types.MsgServer {
return msgServer{Keeper: keeper}
}
func (s msgServer) UpdateGovernanceKey(c context.Context, req *types.UpdateGovernanceKeyRequest) (*types.UpdateGovernanceKeyResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
if _, ok := s.getGovAccount(ctx, req.GovernanceKey.Address().Bytes()); ok {
return nil, fmt.Errorf("account is already registered with a role")
}
s.setGovernanceKey(ctx, req.GovernanceKey)
// delete the existing governance account address
s.deleteGovAccount(ctx, req.Sender)
s.setGovAccount(ctx, types.NewGovAccount(req.GovernanceKey.Address().Bytes(), exported.ROLE_ACCESS_CONTROL))
return &types.UpdateGovernanceKeyResponse{}, nil
}
// RegisterController handles register a controller account
func (s msgServer) RegisterController(c context.Context, req *types.RegisterControllerRequest) (*types.RegisterControllerResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
if _, ok := s.getGovAccount(ctx, req.Controller); ok {
return nil, fmt.Errorf("account is already registered with a role")
}
s.setGovAccount(ctx, types.NewGovAccount(req.Controller, exported.ROLE_CHAIN_MANAGEMENT))
return &types.RegisterControllerResponse{}, nil
}
// DeregisterController handles delete a controller account
func (s msgServer) DeregisterController(c context.Context, req *types.DeregisterControllerRequest) (*types.DeregisterControllerResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
if s.GetRole(ctx, req.Controller) == exported.ROLE_CHAIN_MANAGEMENT {
s.deleteGovAccount(ctx, req.Controller)
}
return &types.DeregisterControllerResponse{}, nil
}