Files
filebrowser/cmd/users_update.go
T

76 lines
1.8 KiB
Go
Raw Normal View History

2019-01-05 22:44:33 +00:00
package cmd
import (
2020-06-01 01:12:36 +02:00
"github.com/spf13/cobra"
2019-01-05 22:44:33 +00:00
"github.com/filebrowser/filebrowser/v2/settings"
"github.com/filebrowser/filebrowser/v2/users"
)
func init() {
usersCmd.AddCommand(usersUpdateCmd)
usersUpdateCmd.Flags().StringP("password", "p", "", "new password")
2019-01-06 13:21:31 +00:00
usersUpdateCmd.Flags().StringP("username", "u", "", "new username")
2019-01-08 10:50:37 +00:00
addUserFlags(usersUpdateCmd.Flags())
2019-01-05 22:44:33 +00:00
}
var usersUpdateCmd = &cobra.Command{
2019-01-06 13:21:31 +00:00
Use: "update <id|username>",
2019-01-05 22:44:33 +00:00
Short: "Updates an existing user",
Long: `Updates an existing user. Set the flags for the
options you want to change.`,
2019-01-06 13:21:31 +00:00
Args: cobra.ExactArgs(1),
2019-01-07 20:24:23 +00:00
Run: python(func(cmd *cobra.Command, args []string, d pythonData) {
2019-01-06 13:21:31 +00:00
username, id := parseUsernameOrID(args[0])
2019-01-08 14:07:55 +00:00
flags := cmd.Flags()
password := mustGetString(flags, "password")
newUsername := mustGetString(flags, "username")
2019-01-05 22:44:33 +00:00
2019-01-08 19:40:14 +01:00
var (
err error
user *users.User
)
2019-01-05 22:44:33 +00:00
if id != 0 {
user, err = d.store.Users.Get("", id)
2019-01-05 22:44:33 +00:00
} else {
user, err = d.store.Users.Get("", username)
2019-01-05 22:44:33 +00:00
}
checkErr(err)
defaults := settings.UserDefaults{
2020-11-23 19:06:37 +01:00
Scope: user.Scope,
Locale: user.Locale,
ViewMode: user.ViewMode,
SingleClick: user.SingleClick,
Perm: user.Perm,
Sorting: user.Sorting,
Commands: user.Commands,
2019-01-05 22:44:33 +00:00
}
2019-01-08 14:07:55 +00:00
getUserDefaults(flags, &defaults, false)
2019-01-05 22:44:33 +00:00
user.Scope = defaults.Scope
user.Locale = defaults.Locale
user.ViewMode = defaults.ViewMode
2020-11-23 19:06:37 +01:00
user.SingleClick = defaults.SingleClick
2019-01-05 22:44:33 +00:00
user.Perm = defaults.Perm
user.Commands = defaults.Commands
user.Sorting = defaults.Sorting
2019-01-08 14:07:55 +00:00
user.LockPassword = mustGetBool(flags, "lockPassword")
2019-01-05 22:44:33 +00:00
2019-01-06 13:21:31 +00:00
if newUsername != "" {
user.Username = newUsername
2019-01-05 22:44:33 +00:00
}
if password != "" {
user.Password, err = users.HashPwd(password)
checkErr(err)
}
2019-01-07 20:24:23 +00:00
err = d.store.Users.Update(user)
2019-01-05 22:44:33 +00:00
checkErr(err)
printUsers([]*users.User{user})
2019-01-07 20:24:23 +00:00
}, pythonConfig{}),
2019-01-05 22:44:33 +00:00
}