support add user by cli

This commit is contained in:
MaysWind
2021-04-04 18:22:27 +08:00
parent 5c59c64e0a
commit e7b1a29297
2 changed files with 112 additions and 0 deletions
+57
View File
@@ -15,6 +15,38 @@ var UserData = &cli.Command{
Name: "userdata",
Usage: "lab user data maintenance",
Subcommands: []*cli.Command{
{
Name: "user-add",
Usage: "Add new user",
Action: addNewUser,
Flags: []cli.Flag{
&cli.StringFlag{
Name: "username",
Aliases: []string{"n"},
Usage: "New user name",
},
&cli.StringFlag{
Name: "email",
Aliases: []string{"m"},
Usage: "New user email",
},
&cli.StringFlag{
Name: "nickname",
Aliases: []string{"i"},
Usage: "New user nickname",
},
&cli.StringFlag{
Name: "password",
Aliases: []string{"p"},
Usage: "New user password",
},
&cli.StringFlag{
Name: "default-currency",
Aliases: []string{"c"},
Usage: "New user default currency",
},
},
},
{
Name: "user-get",
Usage: "Get specified user info",
@@ -88,6 +120,31 @@ var UserData = &cli.Command{
},
}
func addNewUser(c *cli.Context) error {
_, err := initializeSystem(c)
if err != nil {
return err
}
userName := c.String("username")
email := c.String("email")
nickname := c.String("nickname")
password := c.String("password")
defaultCurrency := c.String("default-currency")
user, err := clis.UserData.AddNewUser(c, userName, email, nickname, password, defaultCurrency)
if err != nil {
log.BootErrorf("[user_data.addNewUser] error occurs when adding new user")
return err
}
utils.PrintObjectFields(user)
return nil
}
func getUserInfo(c *cli.Context) error {
_, err := initializeSystem(c)
+55
View File
@@ -10,6 +10,7 @@ import (
"github.com/mayswind/lab/pkg/log"
"github.com/mayswind/lab/pkg/models"
"github.com/mayswind/lab/pkg/services"
"github.com/mayswind/lab/pkg/validators"
)
const pageCountForGettingTransactions = 1000
@@ -39,6 +40,60 @@ var (
}
)
// AddNewUser adds a new user according to specified info
func (a *UserDataCli) AddNewUser(c *cli.Context, username string, email string, nickname string, password string, defaultCurrency string) (*models.User, error) {
if username == "" {
log.BootErrorf("[user_data.AddNewUser] user name is empty")
return nil, errs.ErrUsernameIsEmpty
}
if email == "" {
log.BootErrorf("[user_data.AddNewUser] user email is empty")
return nil, errs.ErrEmailIsEmpty
}
if nickname == "" {
log.BootErrorf("[user_data.AddNewUser] user nickname is empty")
return nil, errs.ErrNicknameIsEmpty
}
if password == "" {
log.BootErrorf("[user_data.AddNewUser] user password is empty")
return nil, errs.ErrPasswordIsEmpty
}
if defaultCurrency == "" {
log.BootErrorf("[user_data.AddNewUser] user default currency is empty")
return nil, errs.ErrUserDefaultCurrencyIsEmpty
}
if _, ok := validators.AllCurrencyNames[defaultCurrency]; !ok {
log.BootErrorf("[user_data.AddNewUser] user default currency is invalid")
return nil, errs.ErrUserDefaultCurrencyIsInvalid
}
user := &models.User{
Username: username,
Email: email,
Nickname: nickname,
Password: password,
DefaultCurrency: defaultCurrency,
FirstDayOfWeek: models.WEEKDAY_SUNDAY,
TransactionEditScope: models.TRANSACTION_EDIT_SCOPE_ALL,
}
err := a.users.CreateUser(user)
if err != nil {
log.BootErrorf("[user_data.AddNewUser] failed to create user \"%s\", because %s", user.Username, err.Error())
return nil, err
}
log.BootInfof( "[user_data.AddNewUser] user \"%s\" has add successfully, uid is %d", user.Username, user.Uid)
return user, nil
}
// GetUserByUsername returns user by user name
func (a *UserDataCli) GetUserByUsername(c *cli.Context, username string) (*models.User, error) {
if username == "" {