grafana-cli: Add ability to read password from stdin to reset admin password (#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>
This commit is contained in:
Maksim Nabokikh 2020-07-02 18:29:10 +04:00 committed by GitHub
parent 66a00ee5c9
commit 3720c25638
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 1 deletions

View File

@ -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",

View File

@ -1,7 +1,9 @@
package commands
import (
"bufio"
"fmt"
"os"
"github.com/fatih/color"
"github.com/grafana/grafana/pkg/bus"
@ -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() {