aboutsummaryrefslogtreecommitdiffhomepage
path: root/cli
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2018-01-02 22:18:24 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2018-01-02 22:18:24 -0800
commit0394c1a2b2db8a42f181769a4af818b637846206 (patch)
tree7e28c19a78bf6e08ba0070e7a9cbea21362a0c37 /cli
parent320d1b016747ba4501da9417d9ce5f99368a5768 (diff)
Add command to reset user password
Diffstat (limited to 'cli')
-rw-r--r--cli/ask_credentials.go27
-rw-r--r--cli/cli.go6
-rw-r--r--cli/create_admin.go26
-rw-r--r--cli/reset_password.go39
4 files changed, 76 insertions, 22 deletions
diff --git a/cli/ask_credentials.go b/cli/ask_credentials.go
new file mode 100644
index 0000000..3755f43
--- /dev/null
+++ b/cli/ask_credentials.go
@@ -0,0 +1,27 @@
+// 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"
+
+ "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))
+}
diff --git a/cli/cli.go b/cli/cli.go
index 67131e6..d3abdcf 100644
--- a/cli/cli.go
+++ b/cli/cli.go
@@ -21,6 +21,7 @@ func Parse() {
flagMigrate := flag.Bool("migrate", false, "Migrate database schema")
flagFlushSessions := flag.Bool("flush-sessions", false, "Flush all sessions (disconnect users)")
flagCreateAdmin := flag.Bool("create-admin", false, "Create admin user")
+ flagResetPassword := flag.Bool("reset-password", false, "Reset user password")
flag.Parse()
cfg := config.NewConfig()
@@ -54,5 +55,10 @@ func Parse() {
return
}
+ if *flagResetPassword {
+ resetPassword(store)
+ return
+ }
+
daemon.Run(cfg, store)
}
diff --git a/cli/create_admin.go b/cli/create_admin.go
index 9af8df3..fc6eb6e 100644
--- a/cli/create_admin.go
+++ b/cli/create_admin.go
@@ -5,36 +5,18 @@
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,
- }
+ user := model.NewUser()
+ user.Username = os.Getenv("ADMIN_USERNAME")
+ user.Password = os.Getenv("ADMIN_PASSWORD")
+ user.IsAdmin = true
if user.Username == "" || user.Password == "" {
user.Username, user.Password = askCredentials()
diff --git a/cli/reset_password.go b/cli/reset_password.go
new file mode 100644
index 0000000..05a9b51
--- /dev/null
+++ b/cli/reset_password.go
@@ -0,0 +1,39 @@
+// 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 (
+ "fmt"
+ "os"
+
+ "github.com/miniflux/miniflux/storage"
+)
+
+func resetPassword(store *storage.Storage) {
+ username, password := askCredentials()
+ user, err := store.UserByUsername(username)
+ if err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+
+ if user == nil {
+ fmt.Println("User not found!")
+ os.Exit(1)
+ }
+
+ user.Password = password
+ if err := user.ValidatePassword(); err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+
+ if err := store.UpdateUser(user); err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+
+ fmt.Println("Password changed!")
+}