diff --git a/config.yml b/config.yml index c052dcda..fa1b35a2 100644 --- a/config.yml +++ b/config.yml @@ -92,6 +92,7 @@ genesis: validators: - name: alice bonded: 5000000ubpf + home: "~/.cardchaind" app: api: address: 0.0.0.0:1317 diff --git a/x/cardchain/keeper/msg_server_change_alias.go b/x/cardchain/keeper/msg_server_change_alias.go index b1e5ed1e..bf99884f 100644 --- a/x/cardchain/keeper/msg_server_change_alias.go +++ b/x/cardchain/keeper/msg_server_change_alias.go @@ -15,6 +15,11 @@ func (k msgServer) ChangeAlias(goCtx context.Context, msg *types.MsgChangeAlias) return nil, err } + err = checkAliasLimit(msg.Alias) + if err != nil { + return nil, err + } + user.Alias = msg.Alias k.SetUserFromUser(ctx, user) diff --git a/x/cardchain/keeper/user.go b/x/cardchain/keeper/user.go index c8c87f12..9342c002 100644 --- a/x/cardchain/keeper/user.go +++ b/x/cardchain/keeper/user.go @@ -6,6 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) +const MAX_ALIAS_LEN = 25 + // User Combines types.User and it's account address for better usability type User struct { types.User @@ -33,9 +35,13 @@ func (k Keeper) InitUser(ctx sdk.Context, address sdk.AccAddress, alias string) alias = "newbie" } newUser := types.NewUser() + err := checkAliasLimit(alias) + if err != nil { + return err + } newUser.Alias = alias newUser.Cards = k.GetAllStarterCards(ctx) - err := k.MintCoinsToAddr(ctx, address, sdk.Coins{sdk.NewInt64Coin("ucredits", 10000000000)}) + err = k.MintCoinsToAddr(ctx, address, sdk.Coins{sdk.NewInt64Coin("ucredits", 10000000000)}) if err != nil { return err } @@ -107,7 +113,15 @@ func (k Keeper) GetAllUsers(ctx sdk.Context) (allUsers []*types.User, allAddress k.cdc.MustUnmarshal(iterator.Value(), &gottenUser) allUsers = append(allUsers, &gottenUser) - allAddresses = append(allAddresses, sdk.AccAddress(iterator.Key())) + allAddresses = append(allAddresses, iterator.Key()) } return } + +func checkAliasLimit(alias string) error { + if len(alias) > MAX_ALIAS_LEN { + return sdkerrors.Wrapf(types.InvalidAlias, "alias is too long (%d) maximum is %d", len(alias), MAX_ALIAS_LEN) + } + + return nil +} diff --git a/x/cardchain/types/errors.go b/x/cardchain/types/errors.go index 9fc28315..b2ed8664 100644 --- a/x/cardchain/types/errors.go +++ b/x/cardchain/types/errors.go @@ -33,4 +33,5 @@ var ( ErrWaitingForPlayers = sdkerrors.Register(ModuleName, 23, "Waiting for players") ErrUninitializedType = sdkerrors.Register(ModuleName, 24, "Type not yet initialized") ErrFinalizeSet = sdkerrors.Register(ModuleName, 25, "Set can't be finalized") + InvalidAlias = sdkerrors.Register(ModuleName, 26, "Invalid alias") )