From 320d1b016747ba4501da9417d9ce5f99368a5768 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Tue, 2 Jan 2018 22:04:48 -0800 Subject: Refactor packages to have more idiomatic code base --- cli/create_admin.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 cli/create_admin.go (limited to 'cli/create_admin.go') diff --git a/cli/create_admin.go b/cli/create_admin.go new file mode 100644 index 0000000..9af8df3 --- /dev/null +++ b/cli/create_admin.go @@ -0,0 +1,52 @@ +// Copyright 2018 Frédéric Guillot. All rights reserved. +// Use of this source code is governed by the Apache 2.0 +// license that can be found in the LICENSE file. + +package cli + +import ( + "bufio" + "fmt" + "os" + "strings" + + "github.com/miniflux/miniflux/model" + "github.com/miniflux/miniflux/storage" + + "golang.org/x/crypto/ssh/terminal" +) + +func askCredentials() (string, string) { + reader := bufio.NewReader(os.Stdin) + + fmt.Print("Enter Username: ") + username, _ := reader.ReadString('\n') + + fmt.Print("Enter Password: ") + bytePassword, _ := terminal.ReadPassword(0) + + fmt.Printf("\n") + return strings.TrimSpace(username), strings.TrimSpace(string(bytePassword)) +} + +func createAdmin(store *storage.Storage) { + user := &model.User{ + Username: os.Getenv("ADMIN_USERNAME"), + Password: os.Getenv("ADMIN_PASSWORD"), + IsAdmin: true, + } + + if user.Username == "" || user.Password == "" { + user.Username, user.Password = askCredentials() + } + + if err := user.ValidateUserCreation(); err != nil { + fmt.Println(err) + os.Exit(1) + } + + if err := store.CreateUser(user); err != nil { + fmt.Println(err) + os.Exit(1) + } +} -- cgit v1.2.3