From 5c59c64e0af98d701bf193b1d2e5cc4825b4025c Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 4 Apr 2021 18:13:32 +0800 Subject: [PATCH] verify currency --- pkg/api/accounts.go | 10 ++++++++++ pkg/api/users.go | 6 ++++++ pkg/errs/account.go | 21 +++++++++++---------- pkg/errs/user.go | 27 +++++++++++++++------------ src/locales/en.js | 4 ++++ src/locales/zh_Hans.js | 4 ++++ 6 files changed, 50 insertions(+), 22 deletions(-) diff --git a/pkg/api/accounts.go b/pkg/api/accounts.go index 9142d85b..4dc9a8c1 100644 --- a/pkg/api/accounts.go +++ b/pkg/api/accounts.go @@ -141,6 +141,11 @@ func (a *AccountsApi) AccountCreateHandler(c *core.Context) (interface{}, *errs. log.WarnfWithRequestId(c, "[accounts.AccountCreateHandler] account cannot have any sub accounts") return nil, errs.ErrAccountCannotHaveSubAccounts } + + if accountCreateReq.Currency == validators.ParentAccountCurrencyPlaceholder { + log.WarnfWithRequestId(c, "[accounts.AccountCreateHandler] account cannot set currency placeholder") + return nil, errs.ErrAccountCurrencyInvalid + } } else if accountCreateReq.Type == models.ACCOUNT_TYPE_MULTI_SUB_ACCOUNTS { if len(accountCreateReq.SubAccounts) < 1 { log.WarnfWithRequestId(c, "[accounts.AccountCreateHandler] account does not have any sub accounts") @@ -169,6 +174,11 @@ func (a *AccountsApi) AccountCreateHandler(c *core.Context) (interface{}, *errs. log.WarnfWithRequestId(c, "[accounts.AccountCreateHandler] sub account type invalid") return nil, errs.ErrSubAccountTypeInvalid } + + if subAccount.Currency == validators.ParentAccountCurrencyPlaceholder { + log.WarnfWithRequestId(c, "[accounts.AccountCreateHandler] sub account cannot set currency placeholder") + return nil, errs.ErrAccountCurrencyInvalid + } } } else { log.WarnfWithRequestId(c, "[accounts.AccountCreateHandler] account type invalid, type is %d", accountCreateReq.Type) diff --git a/pkg/api/users.go b/pkg/api/users.go index c0bdfc8b..03d20b53 100644 --- a/pkg/api/users.go +++ b/pkg/api/users.go @@ -10,6 +10,7 @@ import ( "github.com/mayswind/lab/pkg/models" "github.com/mayswind/lab/pkg/services" "github.com/mayswind/lab/pkg/settings" + "github.com/mayswind/lab/pkg/validators" ) // UsersApi represents user api @@ -40,6 +41,11 @@ func (a *UsersApi) UserRegisterHandler(c *core.Context) (interface{}, *errs.Erro return nil, errs.NewIncompleteOrIncorrectSubmissionError(err) } + if userRegisterReq.DefaultCurrency == validators.ParentAccountCurrencyPlaceholder { + log.WarnfWithRequestId(c, "[users.UserRegisterHandler] user default currency is invalid") + return nil, errs.ErrUserDefaultCurrencyIsInvalid + } + userRegisterReq.Username = strings.TrimSpace(userRegisterReq.Username) userRegisterReq.Email = strings.TrimSpace(userRegisterReq.Email) userRegisterReq.Nickname = strings.TrimSpace(userRegisterReq.Nickname) diff --git a/pkg/errs/account.go b/pkg/errs/account.go index 3a2c4f4e..98d4ac5d 100644 --- a/pkg/errs/account.go +++ b/pkg/errs/account.go @@ -7,14 +7,15 @@ var ( ErrAccountIdInvalid = NewNormalError(NormalSubcategoryAccount, 0, http.StatusBadRequest, "account id is invalid") ErrAccountNotFound = NewNormalError(NormalSubcategoryAccount, 1, http.StatusBadRequest, "account not found") ErrAccountTypeInvalid = NewNormalError(NormalSubcategoryAccount, 2, http.StatusBadRequest, "account type is invalid") - ErrAccountHaveNoSubAccount = NewNormalError(NormalSubcategoryAccount, 3, http.StatusBadRequest, "account must have at least one sub account") - ErrAccountCannotHaveSubAccounts = NewNormalError(NormalSubcategoryAccount, 4, http.StatusBadRequest, "account cannot have sub accounts") - ErrParentAccountCannotSetCurrency = NewNormalError(NormalSubcategoryAccount, 5, http.StatusBadRequest, "parent account cannot set currency") - ErrParentAccountCannotSetBalance = NewNormalError(NormalSubcategoryAccount, 6, http.StatusBadRequest, "parent account cannot set balance") - ErrSubAccountCategoryNotEqualsToParent = NewNormalError(NormalSubcategoryAccount, 7, http.StatusBadRequest, "sub account category not equals to parent") - ErrSubAccountTypeInvalid = NewNormalError(NormalSubcategoryAccount, 8, http.StatusBadRequest, "sub account type invalid") - ErrCannotAddOrDeleteSubAccountsWhenModify = NewNormalError(NormalSubcategoryAccount, 9, http.StatusBadRequest, "cannot add or delete sub accounts when modify account") - ErrSourceAccountNotFound = NewNormalError(NormalSubcategoryAccount, 10, http.StatusBadRequest, "source account not found") - ErrDestinationAccountNotFound = NewNormalError(NormalSubcategoryAccount, 11, http.StatusBadRequest, "destination account not found") - ErrAccountInUseCannotBeDeleted = NewNormalError(NormalSubcategoryAccount, 12, http.StatusBadRequest, "account is in use and cannot be deleted") + ErrAccountCurrencyInvalid = NewNormalError(NormalSubcategoryAccount, 3, http.StatusBadRequest, "account currency is invalid") + ErrAccountHaveNoSubAccount = NewNormalError(NormalSubcategoryAccount, 4, http.StatusBadRequest, "account must have at least one sub account") + ErrAccountCannotHaveSubAccounts = NewNormalError(NormalSubcategoryAccount, 5, http.StatusBadRequest, "account cannot have sub accounts") + ErrParentAccountCannotSetCurrency = NewNormalError(NormalSubcategoryAccount, 6, http.StatusBadRequest, "parent account cannot set currency") + ErrParentAccountCannotSetBalance = NewNormalError(NormalSubcategoryAccount, 7, http.StatusBadRequest, "parent account cannot set balance") + ErrSubAccountCategoryNotEqualsToParent = NewNormalError(NormalSubcategoryAccount, 8, http.StatusBadRequest, "sub account category not equals to parent") + ErrSubAccountTypeInvalid = NewNormalError(NormalSubcategoryAccount, 9, http.StatusBadRequest, "sub account type invalid") + ErrCannotAddOrDeleteSubAccountsWhenModify = NewNormalError(NormalSubcategoryAccount, 10, http.StatusBadRequest, "cannot add or delete sub accounts when modify account") + ErrSourceAccountNotFound = NewNormalError(NormalSubcategoryAccount, 11, http.StatusBadRequest, "source account not found") + ErrDestinationAccountNotFound = NewNormalError(NormalSubcategoryAccount, 12, http.StatusBadRequest, "destination account not found") + ErrAccountInUseCannotBeDeleted = NewNormalError(NormalSubcategoryAccount, 13, http.StatusBadRequest, "account is in use and cannot be deleted") ) diff --git a/pkg/errs/user.go b/pkg/errs/user.go index 000496dd..8fd424f0 100644 --- a/pkg/errs/user.go +++ b/pkg/errs/user.go @@ -6,16 +6,19 @@ import ( // Error codes related to users var ( - ErrLoginNameInvalid = NewNormalError(NormalSubcategoryUser, 0, http.StatusUnauthorized, "login name is invalid") - ErrLoginNameOrPasswordInvalid = NewNormalError(NormalSubcategoryUser, 1, http.StatusUnauthorized, "login name or password is invalid") - ErrLoginNameOrPasswordWrong = NewNormalError(NormalSubcategoryUser, 2, http.StatusUnauthorized, "login name or password is wrong") - ErrUserIdInvalid = NewNormalError(NormalSubcategoryUser, 3, http.StatusBadRequest, "user id is invalid") - ErrUsernameIsEmpty = NewNormalError(NormalSubcategoryUser, 4, http.StatusBadRequest, "username is empty") - ErrEmailIsEmpty = NewNormalError(NormalSubcategoryUser, 5, http.StatusBadRequest, "email is empty") - ErrPasswordIsEmpty = NewNormalError(NormalSubcategoryUser, 6, http.StatusBadRequest, "password is empty") - ErrUserNotFound = NewNormalError(NormalSubcategoryUser, 7, http.StatusBadRequest, "user not found") - ErrUserPasswordWrong = NewNormalError(NormalSubcategoryUser, 8, http.StatusBadRequest, "password is wrong") - ErrUsernameAlreadyExists = NewNormalError(NormalSubcategoryUser, 9, http.StatusBadRequest, "username already exists") - ErrUserEmailAlreadyExists = NewNormalError(NormalSubcategoryUser, 10, http.StatusBadRequest, "email already exists") - ErrUserRegistrationNotAllowed = NewNormalError(NormalSubcategoryUser, 11, http.StatusBadRequest, "user registration not allowed") + ErrLoginNameInvalid = NewNormalError(NormalSubcategoryUser, 0, http.StatusUnauthorized, "login name is invalid") + ErrLoginNameOrPasswordInvalid = NewNormalError(NormalSubcategoryUser, 1, http.StatusUnauthorized, "login name or password is invalid") + ErrLoginNameOrPasswordWrong = NewNormalError(NormalSubcategoryUser, 2, http.StatusUnauthorized, "login name or password is wrong") + ErrUserIdInvalid = NewNormalError(NormalSubcategoryUser, 3, http.StatusBadRequest, "user id is invalid") + ErrUsernameIsEmpty = NewNormalError(NormalSubcategoryUser, 4, http.StatusBadRequest, "username is empty") + ErrEmailIsEmpty = NewNormalError(NormalSubcategoryUser, 5, http.StatusBadRequest, "email is empty") + ErrNicknameIsEmpty = NewNormalError(NormalSubcategoryUser, 6, http.StatusBadRequest, "nickname is empty") + ErrPasswordIsEmpty = NewNormalError(NormalSubcategoryUser, 7, http.StatusBadRequest, "password is empty") + ErrUserDefaultCurrencyIsEmpty = NewNormalError(NormalSubcategoryUser, 8, http.StatusBadRequest, "user default currency is empty") + ErrUserDefaultCurrencyIsInvalid = NewNormalError(NormalSubcategoryUser, 9, http.StatusBadRequest, "user default currency is invalid") + ErrUserNotFound = NewNormalError(NormalSubcategoryUser, 10, http.StatusBadRequest, "user not found") + ErrUserPasswordWrong = NewNormalError(NormalSubcategoryUser, 11, http.StatusBadRequest, "password is wrong") + ErrUsernameAlreadyExists = NewNormalError(NormalSubcategoryUser, 12, http.StatusBadRequest, "username already exists") + ErrUserEmailAlreadyExists = NewNormalError(NormalSubcategoryUser, 13, http.StatusBadRequest, "email already exists") + ErrUserRegistrationNotAllowed = NewNormalError(NormalSubcategoryUser, 14, http.StatusBadRequest, "user registration not allowed") ) diff --git a/src/locales/en.js b/src/locales/en.js index 07f4c78b..01d7f2d8 100644 --- a/src/locales/en.js +++ b/src/locales/en.js @@ -495,7 +495,10 @@ export default { 'user id is invalid': 'User ID is invalid', 'username is empty': 'Username is empty', 'email is empty': 'Email is empty', + 'nickname is empty': 'Nickname is empty', 'password is empty': 'Password is empty', + 'user default currency is empty': 'User default currency is empty', + 'user default currency is invalid': 'User default currency is invalid', 'user not found': 'User not found', 'password is wrong': 'Password is wrong', 'username already exists': 'Username already exists', @@ -523,6 +526,7 @@ export default { 'account id is invalid': 'Account ID is invalid', 'account not found': 'Account is not found', 'account type is invalid': 'Account type is invalid', + 'account currency is invalid': 'Account currency is invalid', 'account must have at least one sub account': 'Account must have at least one sub account', 'account cannot have sub accounts': 'Account cannot have sub accounts', 'parent account cannot set currency': 'Parent account cannot set currency', diff --git a/src/locales/zh_Hans.js b/src/locales/zh_Hans.js index b6ebdd8f..82225046 100644 --- a/src/locales/zh_Hans.js +++ b/src/locales/zh_Hans.js @@ -495,7 +495,10 @@ export default { 'user id is invalid': '用户ID无效', 'username is empty': '用户名为空', 'email is empty': '电子邮箱为空', + 'nickname is empty': '用户昵称为空', 'password is empty': '密码为空', + 'user default currency is empty': '用户默认货币为空', + 'user default currency is invalid': '用户默认货币无效', 'user not found': '找不到该用户', 'password is wrong': '密码错误', 'username already exists': '用户名已经存在', @@ -523,6 +526,7 @@ export default { 'account id is invalid': '账户ID无效', 'account not found': '账户不存在', 'account type is invalid': '账户类型无效', + 'account currency is invalid': '账户货币无效', 'account must have at least one sub account': '账户必须包含至少一个子账户', 'account cannot have sub accounts': '账户不能包含子账户', 'parent account cannot set currency': '父账户不能设置货币',