create_admin.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2018 Frédéric Guillot. All rights reserved.
  2. // Use of this source code is governed by the Apache 2.0
  3. // license that can be found in the LICENSE file.
  4. package cli
  5. import (
  6. "bufio"
  7. "fmt"
  8. "os"
  9. "strings"
  10. "github.com/miniflux/miniflux/model"
  11. "github.com/miniflux/miniflux/storage"
  12. "golang.org/x/crypto/ssh/terminal"
  13. )
  14. func askCredentials() (string, string) {
  15. reader := bufio.NewReader(os.Stdin)
  16. fmt.Print("Enter Username: ")
  17. username, _ := reader.ReadString('\n')
  18. fmt.Print("Enter Password: ")
  19. bytePassword, _ := terminal.ReadPassword(0)
  20. fmt.Printf("\n")
  21. return strings.TrimSpace(username), strings.TrimSpace(string(bytePassword))
  22. }
  23. func createAdmin(store *storage.Storage) {
  24. user := &model.User{
  25. Username: os.Getenv("ADMIN_USERNAME"),
  26. Password: os.Getenv("ADMIN_PASSWORD"),
  27. IsAdmin: true,
  28. }
  29. if user.Username == "" || user.Password == "" {
  30. user.Username, user.Password = askCredentials()
  31. }
  32. if err := user.ValidateUserCreation(); err != nil {
  33. fmt.Println(err)
  34. os.Exit(1)
  35. }
  36. if err := store.CreateUser(user); err != nil {
  37. fmt.Println(err)
  38. os.Exit(1)
  39. }
  40. }