Add some user related commands
This commit is contained in:
parent
d5a297cb86
commit
83a2d2a31f
8 changed files with 223 additions and 11 deletions
|
@ -16,6 +16,7 @@ func RootCmd() *cobra.Command {
|
|||
|
||||
cmd.AddCommand(
|
||||
ServeCmd(),
|
||||
UserCmd(),
|
||||
)
|
||||
|
||||
return cmd
|
||||
|
|
|
@ -14,14 +14,15 @@ func ServeCmd() *cobra.Command {
|
|||
return &cobra.Command{
|
||||
Use: "serve",
|
||||
Short: "Starts the craban server",
|
||||
Args: cobra.NoArgs,
|
||||
Run: serveCmdF,
|
||||
}
|
||||
}
|
||||
|
||||
func serveCmdF(cmd *cobra.Command, _ []string) {
|
||||
configPath, _ := cmd.Flags().GetString("config")
|
||||
config, _ := cmd.Flags().GetString("config")
|
||||
|
||||
srv, err := server.NewServerWithConfigPath(configPath)
|
||||
srv, err := server.NewServerWithConfigPath(config)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("cannot create server")
|
||||
os.Exit(1)
|
||||
|
|
123
server/cmd/craban/commands/user.go
Normal file
123
server/cmd/craban/commands/user.go
Normal file
|
@ -0,0 +1,123 @@
|
|||
package commands
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"git.ctrlz.es/mgdelacroix/craban/server"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func UserCmd() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "user",
|
||||
Short: "User related commands",
|
||||
}
|
||||
|
||||
cmd.AddCommand(
|
||||
CreateUserCmd(),
|
||||
ListUserCmd(),
|
||||
DeleteUserCmd(),
|
||||
)
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
func CreateUserCmd() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "create",
|
||||
Short: "Create a new user",
|
||||
Args: cobra.NoArgs,
|
||||
Run: createUserCmdF,
|
||||
}
|
||||
|
||||
cmd.Flags().StringP("username", "u", "", "the username of the new user")
|
||||
cmd.MarkFlagRequired("username")
|
||||
cmd.Flags().StringP("password", "p", "", "the password of the new user")
|
||||
cmd.MarkFlagRequired("password")
|
||||
cmd.Flags().StringP("name", "n", "", "the name of the new user")
|
||||
cmd.MarkFlagRequired("name")
|
||||
cmd.Flags().StringP("mail", "m", "", "the mail of the new user")
|
||||
cmd.MarkFlagRequired("mail")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
func ListUserCmd() *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "List the users in the system",
|
||||
Args: cobra.NoArgs,
|
||||
Run: listUserCmdF,
|
||||
}
|
||||
}
|
||||
|
||||
func DeleteUserCmd() *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "delete <username>",
|
||||
Short: "Delete a user by username",
|
||||
Args: cobra.ExactArgs(1),
|
||||
Run: deleteUserCmdF,
|
||||
}
|
||||
}
|
||||
|
||||
func createUserCmdF(cmd *cobra.Command, _ []string) {
|
||||
username, _ := cmd.Flags().GetString("username")
|
||||
password, _ := cmd.Flags().GetString("password")
|
||||
name, _ := cmd.Flags().GetString("name")
|
||||
mail, _ := cmd.Flags().GetString("mail")
|
||||
|
||||
config, _ := cmd.Flags().GetString("config")
|
||||
srv, err := server.NewServerWithConfigPath(config)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("cannot create server")
|
||||
os.Exit(1)
|
||||
}
|
||||
defer srv.Store.Close()
|
||||
|
||||
user, err := srv.App.CreateUser(username, password, name, mail)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("user couldn't be created")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
log.Info().Str("username", user.Username).Msg("user successfully created")
|
||||
}
|
||||
|
||||
func listUserCmdF(cmd *cobra.Command, _ []string) {
|
||||
config, _ := cmd.Flags().GetString("config")
|
||||
srv, err := server.NewServerWithConfigPath(config)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("cannot create server")
|
||||
os.Exit(1)
|
||||
}
|
||||
defer srv.Store.Close()
|
||||
|
||||
users, err := srv.App.ListUsers()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("cannot get user list")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
for _, user := range users {
|
||||
log.Info().Str("username", user.Username).Msg("")
|
||||
}
|
||||
}
|
||||
|
||||
func deleteUserCmdF(cmd *cobra.Command, args []string) {
|
||||
config, _ := cmd.Flags().GetString("config")
|
||||
srv, err := server.NewServerWithConfigPath(config)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("cannot create server")
|
||||
os.Exit(1)
|
||||
}
|
||||
defer srv.Store.Close()
|
||||
|
||||
if err := srv.App.DeleteUserByUsername(args[0]); err != nil {
|
||||
log.Error().Err(err).Str("username", args[0]).Msg("cannot delete user")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
log.Info().Str("username", args[0]).Msg("user successfully deleted")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue