Skip to content

Commit 3c15bbc

Browse files
author
abstrct
committed
Guild Management and Permissions refactoring
1 parent 0ba5a51 commit 3c15bbc

19 files changed

Lines changed: 115 additions & 307 deletions

x/structs/keeper/guild_cache.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ func (cache *GuildCache) SetOwner(owner string) {
356356
}
357357

358358

359-
func (cache *GuildCache) SetJoinInfusionMinimumBypassByRequest(level types.guildJoinBypassLevel) {
359+
func (cache *GuildCache) SetJoinInfusionMinimumBypassByRequest(level types.GuildJoinBypassLevel) {
360360
if (!cache.GuildLoaded) {
361361
cache.LoadGuild()
362362
}
@@ -365,7 +365,7 @@ func (cache *GuildCache) SetJoinInfusionMinimumBypassByRequest(level types.guild
365365
}
366366

367367

368-
func (cache *GuildCache) SetJoinInfusionMinimumBypassByInvite(level types.guildJoinBypassLevel) {
368+
func (cache *GuildCache) SetJoinInfusionMinimumBypassByInvite(level types.GuildJoinBypassLevel) {
369369
if (!cache.GuildLoaded) {
370370
cache.LoadGuild()
371371
}

x/structs/keeper/msg_server_guild_update_entry_substation_id.go

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,36 +21,34 @@ func (k msgServer) GuildUpdateEntrySubstationId(goCtx context.Context, msg *type
2121
return &types.MsgGuildUpdateResponse{}, types.NewPlayerRequiredError(msg.Creator, "guild_update_entry_substation")
2222
}
2323

24-
guild, guildFound := k.GetGuild(ctx, msg.GuildId)
25-
if (!guildFound) {
24+
guild := cc.GetGuild(msg.GuildId)
25+
if guild.CheckGuild() != nil {
2626
return &types.MsgGuildUpdateResponse{}, types.NewObjectNotFoundError("guild", msg.GuildId)
2727
}
2828

29-
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.PlayerId)
29+
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.GetPlayerId())
3030
addressPermissionId := GetAddressPermissionIDBytes(msg.Creator)
3131

32-
if (!k.PermissionHasOneOf(ctx, guildObjectPermissionId, types.PermissionUpdate)) {
33-
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.PlayerId, "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
32+
if (!cc.PermissionHasOneOf(guildObjectPermissionId, types.PermissionUpdate)) {
33+
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.GetPlayerId(), "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
3434
}
3535

3636
// Make sure the address calling this has Associate permissions
37-
if (!k.PermissionHasOneOf(ctx, addressPermissionId, types.PermissionAssets)) {
37+
if (!cc.PermissionHasOneOf(addressPermissionId, types.PermissionAssets)) {
3838
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("address", msg.Creator, "", "", uint64(types.PermissionAssets), "guild_management")
3939
}
4040

4141
if (msg.EntrySubstationId != "") {
4242

43-
substationObjectPermissionId := GetObjectPermissionIDBytes(msg.EntrySubstationId, player.PlayerId)
43+
substationObjectPermissionId := GetObjectPermissionIDBytes(msg.EntrySubstationId, player.GetPlayerId())
4444

4545
// check that the calling player has substation permissions
46-
if (!k.PermissionHasOneOf(ctx, substationObjectPermissionId, types.PermissionGrid)) {
47-
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.PlayerId, "substation", msg.EntrySubstationId, uint64(types.PermissionGrid), "substation_connect")
46+
if (!cc.PermissionHasOneOf(substationObjectPermissionId, types.PermissionGrid)) {
47+
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.GetPlayerId(), "substation", msg.EntrySubstationId, uint64(types.PermissionGrid), "substation_connect")
4848
}
49+
4950
guild.SetEntrySubstationId(msg.EntrySubstationId)
5051
}
5152

52-
k.SetGuild(ctx, guild)
53-
54-
5553
return &types.MsgGuildUpdateResponse{}, nil
5654
}

x/structs/keeper/msg_server_guild_update_join_infusion_minimum.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,26 @@ func (k msgServer) GuildUpdateJoinInfusionMinimum(goCtx context.Context, msg *ty
2121
return &types.MsgGuildUpdateResponse{}, types.NewPlayerRequiredError(msg.Creator, "guild_update_join_infusion_minimum")
2222
}
2323

24-
guild, guildFound := k.GetGuild(ctx, msg.GuildId)
25-
if (!guildFound) {
24+
guild := cc.GetGuild(msg.GuildId)
25+
if guild.CheckGuild() != nil {
2626
return &types.MsgGuildUpdateResponse{}, types.NewObjectNotFoundError("guild", msg.GuildId)
2727
}
2828

29-
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.PlayerId)
29+
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.GetPlayerId())
3030
addressPermissionId := GetAddressPermissionIDBytes(msg.Creator)
3131

32-
if (!k.PermissionHasOneOf(ctx, guildObjectPermissionId, types.PermissionUpdate)) {
33-
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.PlayerId, "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
32+
if (!cc.PermissionHasOneOf(guildObjectPermissionId, types.PermissionUpdate)) {
33+
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.GetPlayerId(), "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
3434
}
3535

3636
// Make sure the address calling this has Associate permissions
37-
if (!k.PermissionHasOneOf(ctx, addressPermissionId, types.PermissionAssets)) {
37+
if (!cc.PermissionHasOneOf(addressPermissionId, types.PermissionAssets)) {
3838
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("address", msg.Creator, "", "", uint64(types.PermissionAssets), "guild_management")
3939
}
4040

41-
if (msg.JoinInfusionMinimum != guild.JoinInfusionMinimum) {
42-
guild.JoinInfusionMinimum = msg.JoinInfusionMinimum
43-
k.SetGuild(ctx, guild)
41+
if (msg.JoinInfusionMinimum != guild.GetGuild().JoinInfusionMinimum) {
42+
guild.SetJoinInfusionMinimum(msg.JoinInfusionMinimum)
4443
}
4544

46-
4745
return &types.MsgGuildUpdateResponse{}, nil
4846
}

x/structs/keeper/msg_server_guild_update_join_infusion_minimum_bypass_by_invite.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,25 @@ func (k msgServer) GuildUpdateJoinInfusionMinimumBypassByInvite(goCtx context.Co
2121
return &types.MsgGuildUpdateResponse{}, types.NewPlayerRequiredError(msg.Creator, "guild_update_join_bypass_invite")
2222
}
2323

24-
guild, guildFound := k.GetGuild(ctx, msg.GuildId)
25-
if (!guildFound) {
24+
guild := cc.GetGuild(msg.GuildId)
25+
if guild.CheckGuild() != nil {
2626
return &types.MsgGuildUpdateResponse{}, types.NewObjectNotFoundError("guild", msg.GuildId)
2727
}
2828

29-
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.PlayerId)
29+
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.GetPlayerId())
3030
addressPermissionId := GetAddressPermissionIDBytes(msg.Creator)
3131

32-
if (!k.PermissionHasOneOf(ctx, guildObjectPermissionId, types.PermissionUpdate)) {
33-
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.PlayerId, "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
32+
if (!cc.PermissionHasOneOf(guildObjectPermissionId, types.PermissionUpdate)) {
33+
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.GetPlayerId(), "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
3434
}
3535

3636
// Make sure the address calling this has Associate permissions
37-
if (!k.PermissionHasOneOf(ctx, addressPermissionId, types.PermissionAssets)) {
37+
if (!cc.PermissionHasOneOf(addressPermissionId, types.PermissionAssets)) {
3838
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("address", msg.Creator, "", "", uint64(types.PermissionAssets), "guild_management")
3939
}
4040

41-
if (msg.GuildJoinBypassLevel != guild.JoinInfusionMinimumBypassByInvite) {
42-
guild.JoinInfusionMinimumBypassByInvite = msg.GuildJoinBypassLevel
43-
k.SetGuild(ctx, guild)
41+
if (msg.GuildJoinBypassLevel != guild.GetGuild().JoinInfusionMinimumBypassByInvite) {
42+
guild.SetJoinInfusionMinimumBypassByInvite(msg.GuildJoinBypassLevel)
4443
}
4544

4645
return &types.MsgGuildUpdateResponse{}, nil

x/structs/keeper/msg_server_guild_update_join_infusion_minimum_bypass_by_request.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,25 @@ func (k msgServer) GuildUpdateJoinInfusionMinimumBypassByRequest(goCtx context.C
2121
return &types.MsgGuildUpdateResponse{}, types.NewPlayerRequiredError(msg.Creator, "guild_update_join_bypass_request")
2222
}
2323

24-
guild, guildFound := k.GetGuild(ctx, msg.GuildId)
25-
if (!guildFound) {
24+
guild := cc.GetGuild(msg.GuildId)
25+
if guild.CheckGuild() != nil {
2626
return &types.MsgGuildUpdateResponse{}, types.NewObjectNotFoundError("guild", msg.GuildId)
2727
}
2828

29-
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.PlayerId)
29+
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.GetPlayerId())
3030
addressPermissionId := GetAddressPermissionIDBytes(msg.Creator)
3131

32-
if (!k.PermissionHasOneOf(ctx, guildObjectPermissionId, types.PermissionUpdate)) {
33-
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.PlayerId, "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
32+
if (!cc.PermissionHasOneOf(guildObjectPermissionId, types.PermissionUpdate)) {
33+
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.GetPlayerId(), "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
3434
}
3535

3636
// Make sure the address calling this has Associate permissions
37-
if (!k.PermissionHasOneOf(ctx, addressPermissionId, types.PermissionAssets)) {
37+
if (!cc.PermissionHasOneOf(addressPermissionId, types.PermissionAssets)) {
3838
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("address", msg.Creator, "", "", uint64(types.PermissionAssets), "guild_management")
3939
}
4040

41-
if (msg.GuildJoinBypassLevel != guild.JoinInfusionMinimumBypassByRequest) {
42-
guild.JoinInfusionMinimumBypassByRequest = msg.GuildJoinBypassLevel
43-
k.SetGuild(ctx, guild)
41+
if (msg.GuildJoinBypassLevel != guild.GetGuild().JoinInfusionMinimumBypassByRequest) {
42+
guild.SetJoinInfusionMinimumBypassByRequest(msg.GuildJoinBypassLevel)
4443
}
4544

4645
return &types.MsgGuildUpdateResponse{}, nil

x/structs/keeper/msg_server_guild_update_owner_id.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,30 +22,29 @@ func (k msgServer) GuildUpdateOwnerId(goCtx context.Context, msg *types.MsgGuild
2222
return &types.MsgGuildUpdateResponse{}, types.NewPlayerRequiredError(msg.Creator, "guild_update_owner")
2323
}
2424

25-
guild, guildFound := k.GetGuild(ctx, msg.GuildId)
26-
if !guildFound {
25+
guild := cc.GetGuild(msg.GuildId)
26+
if guild.CheckGuild() != nil {
2727
return &types.MsgGuildUpdateResponse{}, types.NewObjectNotFoundError("guild", msg.GuildId)
2828
}
2929

30-
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.PlayerId)
30+
guildObjectPermissionId := GetObjectPermissionIDBytes(msg.GuildId, player.GetPlayerId())
3131
addressPermissionId := GetAddressPermissionIDBytes(msg.Creator)
3232

33-
if !k.PermissionHasOneOf(ctx, guildObjectPermissionId, types.PermissionUpdate) {
34-
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.PlayerId, "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
33+
if !cc.PermissionHasOneOf(guildObjectPermissionId, types.PermissionUpdate) {
34+
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("player", player.GetPlayerId(), "guild", msg.GuildId, uint64(types.PermissionUpdate), "guild_update")
3535
}
3636

3737
// Make sure the address calling this has Associate permissions
38-
if !k.PermissionHasOneOf(ctx, addressPermissionId, types.PermissionAssets) {
38+
if !cc.PermissionHasOneOf(addressPermissionId, types.PermissionAssets) {
3939
return &types.MsgGuildUpdateResponse{}, types.NewPermissionError("address", msg.Creator, "", "", uint64(types.PermissionAssets), "guild_management")
4040
}
4141

42-
if guild.Owner != msg.Owner {
43-
_, err = cc.GetPlayer(msg.Owner)
44-
if err != nil {
42+
if guild.GetGuild().Owner != msg.Owner {
43+
newOwner, _ := cc.GetPlayer(msg.Owner)
44+
if newOwner.CheckPlayer() != nil {
4545
return &types.MsgGuildUpdateResponse{}, types.NewObjectNotFoundError("player", msg.Owner)
4646
}
4747
guild.SetOwner(msg.Owner)
48-
k.SetGuild(ctx, guild)
4948
}
5049

5150
return &types.MsgGuildUpdateResponse{}, nil

x/structs/keeper/msg_server_permission_grant_on_address.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ func (k msgServer) PermissionGrantOnAddress(goCtx context.Context, msg *types.Ms
1111
ctx := sdk.UnwrapSDKContext(goCtx)
1212
cc := k.NewCurrentContext(ctx)
1313
defer cc.CommitAll()
14-
_ = cc
1514

1615
// Add an Active Address record to the
1716
// indexer for UI requirements
@@ -23,29 +22,30 @@ func (k msgServer) PermissionGrantOnAddress(goCtx context.Context, msg *types.Ms
2322
return &types.MsgPermissionResponse{}, types.NewParameterValidationError("permissions", 0, "below_minimum").WithRange(1, 0)
2423
}
2524

26-
player, playerFound := k.GetPlayerFromIndex(ctx, k.GetPlayerIndexFromAddress(ctx, msg.Creator))
27-
if (!playerFound) {
28-
return nil, err
25+
player, _ := cc.GetPlayerByAddress(msg.Creator)
26+
err = player.CheckPlayer()
27+
if err != nil {
28+
return &types.MsgPermissionResponse{}, err
2929
}
3030

31-
targetPlayer, targetPlayerFound := k.GetPlayerFromIndex(ctx, k.GetPlayerIndexFromAddress(ctx, msg.Address))
32-
if (!targetPlayerFound) {
33-
return nil, err
31+
targetPlayer, _ := cc.GetPlayerByAddress(msg.Address)
32+
err = targetPlayer.CheckPlayer()
33+
if err != nil {
34+
return &types.MsgPermissionResponse{}, err
3435
}
3536

36-
if (targetPlayer.Id != player.Id) {
37-
return nil, err // Can only set address permissions on your own player
37+
if (targetPlayer.GetPlayerId() != player.GetPlayerId()) {
38+
return &types.MsgPermissionResponse{}, types.NewObjectNotFoundError("player", targetPlayer.GetPlayerId()) // Can only set address permissions on your own player
3839
}
3940

40-
4141
// Make sure the calling address has enough permissions to apply to another address
4242
addressPermissionId := GetAddressPermissionIDBytes(msg.Creator)
43-
if (!k.PermissionHasAll(ctx, addressPermissionId, types.Permission(msg.Permissions) | types.Permissions)) {
43+
if (!cc.PermissionHasAll(addressPermissionId, types.Permission(msg.Permissions) | types.Permissions)) {
4444
return &types.MsgPermissionResponse{}, types.NewPermissionError("address", msg.Creator, "", "", uint64(msg.Permissions), "permission_grant")
4545
}
4646

4747
targetAddressPermissionId := GetAddressPermissionIDBytes(msg.Address)
48-
k.PermissionAdd(ctx, targetAddressPermissionId, types.Permission(msg.Permissions))
48+
cc.PermissionAdd(targetAddressPermissionId, types.Permission(msg.Permissions))
4949

5050
return &types.MsgPermissionResponse{}, nil
5151
}

x/structs/keeper/msg_server_permission_grant_on_object.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ func (k msgServer) PermissionGrantOnObject(goCtx context.Context, msg *types.Msg
1111
ctx := sdk.UnwrapSDKContext(goCtx)
1212
cc := k.NewCurrentContext(ctx)
1313
defer cc.CommitAll()
14-
_ = cc
1514

1615
// Add an Active Address record to the
1716
// indexer for UI requirements
@@ -23,32 +22,32 @@ func (k msgServer) PermissionGrantOnObject(goCtx context.Context, msg *types.Msg
2322
return &types.MsgPermissionResponse{}, types.NewParameterValidationError("permissions", 0, "below_minimum").WithRange(1, 0)
2423
}
2524

26-
player, playerFound := k.GetPlayerFromIndex(ctx, k.GetPlayerIndexFromAddress(ctx, msg.Creator))
27-
if (!playerFound) {
28-
return nil, err
25+
player, err := cc.GetPlayerByAddress(msg.Creator)
26+
if err != nil {
27+
return &types.MsgPermissionResponse{}, err
2928
}
3029

31-
if (player.Id != msg.PlayerId) {
32-
_, targetPlayerFound := k.GetPlayer(ctx, msg.PlayerId)
33-
if (!targetPlayerFound) {
34-
return nil, err
30+
if (player.GetPlayerId() != msg.PlayerId) {
31+
_, err = cc.GetPlayer(msg.PlayerId)
32+
if err != nil {
33+
return &types.MsgPermissionResponse{}, err
3534
}
3635
}
3736

3837
addressPermissionId := GetAddressPermissionIDBytes(msg.Creator)
3938
// Make sure the address calling this has the Permissions permission for editing permissions
40-
if (!k.PermissionHasOneOf(ctx, addressPermissionId, types.Permissions)) {
39+
if (!cc.PermissionHasOneOf(addressPermissionId, types.Permissions)) {
4140
return &types.MsgPermissionResponse{}, types.NewPermissionError("address", msg.Creator, "", "", uint64(types.Permissions), "permission_edit")
4241
}
4342

4443
// Make sure the calling player has the same permissions that are being applied to the other player
45-
playerPermissionId := GetObjectPermissionIDBytes(msg.ObjectId, player.Id)
46-
if (!k.PermissionHasAll(ctx, playerPermissionId, types.Permission(msg.Permissions))) {
47-
return &types.MsgPermissionResponse{}, types.NewPermissionError("player", player.Id, "object", msg.ObjectId, uint64(msg.Permissions), "permission_grant")
44+
playerPermissionId := GetObjectPermissionIDBytes(msg.ObjectId, player.GetPlayerId())
45+
if (!cc.PermissionHasAll(playerPermissionId, types.Permission(msg.Permissions))) {
46+
return &types.MsgPermissionResponse{}, types.NewPermissionError("player", player.GetPlayerId(), "object", msg.ObjectId, uint64(msg.Permissions), "permission_grant")
4847
}
4948

5049
targetPlayerPermissionId := GetObjectPermissionIDBytes(msg.ObjectId, msg.PlayerId)
51-
k.PermissionAdd(ctx, targetPlayerPermissionId, types.Permission(msg.Permissions))
50+
cc.PermissionAdd(targetPlayerPermissionId, types.Permission(msg.Permissions))
5251

5352
return &types.MsgPermissionResponse{}, nil
5453
}

x/structs/keeper/msg_server_permission_revoke_on_address.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,36 @@ func (k msgServer) PermissionRevokeOnAddress(goCtx context.Context, msg *types.M
1111
ctx := sdk.UnwrapSDKContext(goCtx)
1212
cc := k.NewCurrentContext(ctx)
1313
defer cc.CommitAll()
14-
_ = cc
1514

1615
// Add an Active Address record to the
1716
// indexer for UI requirements
1817
k.AddressEmitActivity(ctx, msg.Creator)
1918

2019
var err error
2120

22-
player, playerFound := k.GetPlayerFromIndex(ctx, k.GetPlayerIndexFromAddress(ctx, msg.Creator))
23-
if (!playerFound) {
24-
return nil, err
21+
player, err := cc.GetPlayerByAddress(msg.Creator)
22+
if err != nil {
23+
return &types.MsgPermissionResponse{}, err
2524
}
2625

27-
targetPlayer, targetPlayerFound := k.GetPlayerFromIndex(ctx, k.GetPlayerIndexFromAddress(ctx, msg.Address))
28-
if (!targetPlayerFound) {
29-
return nil, err
26+
targetPlayer, err := cc.GetPlayerByAddress(msg.Address)
27+
if err != nil {
28+
return &types.MsgPermissionResponse{}, err
3029
}
3130

32-
if (targetPlayer.Id != player.Id) {
33-
return nil, err // Can only set address permissions on your own player
31+
if (targetPlayer.GetPlayerId() != player.GetPlayerId()) {
32+
return &types.MsgPermissionResponse{}, types.NewObjectNotFoundError("player", targetPlayer.GetPlayerId()) // Can only set address permissions on your own player
3433
}
3534

3635

3736
// Make sure the calling address has enough permissions to apply to another address
3837
addressPermissionId := GetAddressPermissionIDBytes(msg.Creator)
39-
if (!k.PermissionHasAll(ctx, addressPermissionId, types.Permission(msg.Permissions) | types.Permissions)) {
38+
if (!cc.PermissionHasAll(addressPermissionId, types.Permission(msg.Permissions) | types.Permissions)) {
4039
return &types.MsgPermissionResponse{}, types.NewPermissionError("address", msg.Creator, "", "", uint64(msg.Permissions), "permission_revoke")
4140
}
4241

4342
targetAddressPermissionId := GetAddressPermissionIDBytes(msg.Address)
44-
k.PermissionRemove(ctx, targetAddressPermissionId, types.Permission(msg.Permissions))
43+
cc.PermissionRemove(targetAddressPermissionId, types.Permission(msg.Permissions))
4544

4645
return &types.MsgPermissionResponse{}, nil
4746
}

0 commit comments

Comments
 (0)