feat: start users import
License: MIT Signed-off-by: Henrique Dias <hacdias@gmail.com>
This commit is contained in:
parent
f0c19e89e6
commit
ac12619d20
45
cmd/users_import.go
Normal file
45
cmd/users_import.go
Normal file
@ -0,0 +1,45 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/filebrowser/filebrowser/v2/users"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func init() {
|
||||
usersCmd.AddCommand(usersImportCmd)
|
||||
usersImportCmd.Flags().Bool("overwrite", false, "overwrite existing users,")
|
||||
}
|
||||
|
||||
var usersImportCmd = &cobra.Command{
|
||||
Use: "import <filename>",
|
||||
Short: "Import users from a file.",
|
||||
Args: cobra.ExactArgs(1),
|
||||
Run: python(func(cmd *cobra.Command, args []string, d pythonData) {
|
||||
fd, err := os.Open(args[0])
|
||||
checkErr(err)
|
||||
defer fd.Close()
|
||||
|
||||
list := []users.User{}
|
||||
err = json.NewDecoder(fd).Decode(&list)
|
||||
checkErr(err)
|
||||
|
||||
overwrite := mustGetBool(cmd, "overwrite")
|
||||
|
||||
for _, user := range list {
|
||||
// TODO: check for ID/Username conflicts too.
|
||||
_, err := d.store.Users.Get("", user.ID)
|
||||
if err == nil && !overwrite {
|
||||
checkErr(errors.New("user " + strconv.Itoa(int(user.ID)) + " is already registred"))
|
||||
}
|
||||
|
||||
err = d.store.Users.Save(&user)
|
||||
checkErr(err)
|
||||
}
|
||||
|
||||
}, pythonConfig{}),
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user