Skip to content

Commit

Permalink
grafana-cli: Add ability to read password from stdin to reset admin p…
Browse files Browse the repository at this point in the history
…assword (#26016)

* grafana-cli: Add ability to read password from stdin to reset admin password

Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
  • Loading branch information
nabokihms and aknuds1 committed Jul 2, 2020
1 parent 66a00ee commit 3720c25
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
7 changes: 7 additions & 0 deletions pkg/cmd/grafana-cli/commands/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,13 @@ var adminCommands = []*cli.Command{
Name: "reset-admin-password",
Usage: "reset-admin-password <new password>",
Action: runDbCommand(resetPasswordCommand),
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "password-from-stdin",
Usage: "Read the password from stdin",
Value: false,
},
},
},
{
Name: "data-migration",
Expand Down
19 changes: 18 additions & 1 deletion pkg/cmd/grafana-cli/commands/reset_password_command.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package commands

import (
"bufio"
"fmt"
"os"

"github.com/fatih/color"
"github.com/grafana/grafana/pkg/bus"
Expand All @@ -16,7 +18,22 @@ import (
const AdminUserId = 1

func resetPasswordCommand(c utils.CommandLine, sqlStore *sqlstore.SqlStore) error {
newPassword := c.Args().First()
newPassword := ""

if c.Bool("password-from-stdin") {
logger.Infof("New Password: ")

scanner := bufio.NewScanner(os.Stdin)
if ok := scanner.Scan(); !ok {
if err := scanner.Err(); err != nil {
return fmt.Errorf("can't read password from stdin: %w", err)
}
return fmt.Errorf("can't read password from stdin")
}
newPassword = scanner.Text()
} else {
newPassword = c.Args().First()
}

password := models.Password(newPassword)
if password.IsWeak() {
Expand Down

0 comments on commit 3720c25

Please sign in to comment.