Skip to content

Commit

Permalink
fix update group member error
Browse files Browse the repository at this point in the history
  • Loading branch information
fynnss committed Mar 21, 2023
1 parent ae7caa1 commit cee126f
Show file tree
Hide file tree
Showing 13 changed files with 337 additions and 236 deletions.
2 changes: 1 addition & 1 deletion e2e/tests/storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ func (s *StorageTestSuite) TestCreateGroup() {
member2 := s.GenAndChargeAccounts(1, 1000000)[0]
membersToAdd := []sdk.AccAddress{member2.GetAddr()}
membersToDelete := []sdk.AccAddress{member.GetAddr()}
msgUpdateGroupMember := storagetypes.NewMsgUpdateGroupMember(owner.GetAddr(), groupName, membersToAdd, membersToDelete)
msgUpdateGroupMember := storagetypes.NewMsgUpdateGroupMember(owner.GetAddr(), owner.GetAddr(), groupName, membersToAdd, membersToDelete)
s.SendTxBlock(msgUpdateGroupMember, owner)

// 5. HeadGroupMember (delete)
Expand Down
2 changes: 1 addition & 1 deletion proto/greenfield/storage/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ service Query {

// Queries a list of ListGroup items.
rpc ListGroup(QueryListGroupRequest) returns (QueryListGroupResponse) {
option (google.api.http).get = "/bnb-chain/greenfield/storage/list_group";
option (google.api.http).get = "/bnb-chain/greenfield/storage/list_group/{group_owner}";
}

// Queries a list of HeadGroupMember items.
Expand Down
8 changes: 5 additions & 3 deletions proto/greenfield/storage/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -217,12 +217,14 @@ message MsgUpdateGroupMember {

// operator is the account address of the operator who has the UpdateGroupMember permission of the group.
string operator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// group_owner is the account address of the group owner
string group_owner = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// group_name is the name of the group which to be updated
string group_name = 2;
string group_name = 3;
// members_to_add is a list of members account address which will be add to the group
repeated string members_to_add = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
repeated string members_to_add = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// members_to_delete is a list of members account address which will be remove from the group
repeated string members_to_delete = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"];
repeated string members_to_delete = 5 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}

message MsgUpdateGroupMemberResponse {}
Expand Down
12 changes: 9 additions & 3 deletions x/permission/types/common.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 0 additions & 6 deletions x/permission/types/keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ var (
PolicyByIDPrefix = []byte{0x31}

PolicySequencePrefix = []byte{0x41}

GroupMemberPolicyPrefix = []byte{0x51}
)

func GetPolicyForAccountKey(resourceID math.Uint, resourceType resource.ResourceType, addr sdk.AccAddress) []byte {
Expand Down Expand Up @@ -87,7 +85,3 @@ func GetObjectPolicyForGroupKey(resourceID math.Uint) []byte {
func GetPolicyByIDKey(policyID math.Uint) []byte {
return append(PolicyByIDPrefix, policyID.Bytes()...)
}

func GetGroupMemberPolicyPrefix(groupID math.Uint, member sdk.AccAddress) []byte {
return append(GroupMemberPolicyPrefix, append(groupID.Bytes(), member.Bytes()...)...)
}
1 change: 1 addition & 0 deletions x/storage/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,7 @@ func CmdUpdateGroupMember() *cobra.Command {
memberAddrsToDelete = append(memberAddrsToDelete, memberAddr)
}
msg := types.NewMsgUpdateGroupMember(
clientCtx.GetFromAddress(),
clientCtx.GetFromAddress(),
argGroupName,
memberAddrsToAdd,
Expand Down
2 changes: 1 addition & 1 deletion x/storage/keeper/cross_app_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ func (app *GroupApp) handleUpdateGroupMemberSynPackage(ctx sdk.Context, header *
err = app.storageKeeper.UpdateGroupMember(
ctx,
updateGroupPackage.Operator,
groupInfo.GroupName,
groupInfo,
options,
)
if err != nil {
Expand Down
6 changes: 1 addition & 5 deletions x/storage/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -868,11 +868,7 @@ func (k Keeper) LeaveGroup(
return nil
}

func (k Keeper) UpdateGroupMember(ctx sdk.Context, operator sdk.AccAddress, groupName string, opts UpdateGroupMemberOptions) error {
groupInfo, found := k.GetGroupInfo(ctx, operator, groupName)
if !found {
return types.ErrNoSuchGroup
}
func (k Keeper) UpdateGroupMember(ctx sdk.Context, operator sdk.AccAddress, groupInfo *types.GroupInfo, opts UpdateGroupMemberOptions) error {
if groupInfo.SourceType != opts.SourceType {
return types.ErrSourceTypeMismatch
}
Expand Down
8 changes: 7 additions & 1 deletion x/storage/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,13 @@ func (k msgServer) UpdateGroupMember(goCtx context.Context, msg *types.MsgUpdate

operator := sdk.MustAccAddressFromHex(msg.Operator)

err := k.Keeper.UpdateGroupMember(ctx, operator, msg.GroupName, UpdateGroupMemberOptions{
groupOwner := sdk.MustAccAddressFromHex(msg.GroupOwner)

groupInfo, found := k.GetGroupInfo(ctx, groupOwner, msg.GroupName)
if !found {
return nil, types.ErrNoSuchGroup
}
err := k.Keeper.UpdateGroupMember(ctx, operator, groupInfo, UpdateGroupMemberOptions{
SourceType: types.SOURCE_TYPE_ORIGIN,
MembersToAdd: msg.MembersToAdd,
MembersToDelete: msg.MembersToDelete,
Expand Down
9 changes: 8 additions & 1 deletion x/storage/types/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -796,7 +796,7 @@ func (msg *MsgLeaveGroup) ValidateBasic() error {
}

func NewMsgUpdateGroupMember(
operator sdk.AccAddress, groupName string, membersToAdd []sdk.AccAddress,
operator sdk.AccAddress, groupOwner sdk.AccAddress, groupName string, membersToAdd []sdk.AccAddress,
membersToDelete []sdk.AccAddress) *MsgUpdateGroupMember {
var membersAddrToAdd, membersAddrToDelete []string
for _, member := range membersToAdd {
Expand All @@ -807,6 +807,7 @@ func NewMsgUpdateGroupMember(
}
return &MsgUpdateGroupMember{
Operator: operator.String(),
GroupOwner: groupOwner.String(),
GroupName: groupName,
MembersToAdd: membersAddrToAdd,
MembersToDelete: membersAddrToDelete,
Expand Down Expand Up @@ -844,6 +845,12 @@ func (msg *MsgUpdateGroupMember) ValidateBasic() error {
if err != nil {
return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid operator address (%s)", err)
}

_, err = sdk.AccAddressFromHexUnsafe(msg.GroupOwner)
if err != nil {
return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid group owner address (%s)", err)
}

err = s3util.CheckValidGroupName(msg.GroupName)
if err != nil {
return err
Expand Down
Loading

0 comments on commit cee126f

Please sign in to comment.