support add user by cli
This commit is contained in:
@@ -15,6 +15,38 @@ var UserData = &cli.Command{
|
|||||||
Name: "userdata",
|
Name: "userdata",
|
||||||
Usage: "lab user data maintenance",
|
Usage: "lab user data maintenance",
|
||||||
Subcommands: []*cli.Command{
|
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",
|
Name: "user-get",
|
||||||
Usage: "Get specified user info",
|
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 {
|
func getUserInfo(c *cli.Context) error {
|
||||||
_, err := initializeSystem(c)
|
_, err := initializeSystem(c)
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/mayswind/lab/pkg/log"
|
"github.com/mayswind/lab/pkg/log"
|
||||||
"github.com/mayswind/lab/pkg/models"
|
"github.com/mayswind/lab/pkg/models"
|
||||||
"github.com/mayswind/lab/pkg/services"
|
"github.com/mayswind/lab/pkg/services"
|
||||||
|
"github.com/mayswind/lab/pkg/validators"
|
||||||
)
|
)
|
||||||
|
|
||||||
const pageCountForGettingTransactions = 1000
|
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
|
// GetUserByUsername returns user by user name
|
||||||
func (a *UserDataCli) GetUserByUsername(c *cli.Context, username string) (*models.User, error) {
|
func (a *UserDataCli) GetUserByUsername(c *cli.Context, username string) (*models.User, error) {
|
||||||
if username == "" {
|
if username == "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user