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