Prechádzať zdrojové kódy

feat(cli): adds command to reset admin password

closes #5479
bergquist 9 rokov pred
rodič
commit
96e8ecfa7b

+ 4 - 0
build.go

@@ -73,6 +73,10 @@ func main() {
 		case "setup":
 			setup()
 
+    case "build-cli":
+      clean()
+      build("grafana-cli", "./pkg/cmd/grafana-cli", []string{})
+
 		case "build":
 			clean()
 			for _, binary := range binaries {

+ 3 - 2
pkg/api/user.go

@@ -157,8 +157,9 @@ func ChangeUserPassword(c *middleware.Context, cmd m.ChangeUserPasswordCommand)
 		return ApiError(401, "Invalid old password", nil)
 	}
 
-	if len(cmd.NewPassword) < 4 {
-		return ApiError(400, "New password too short", nil)
+	password := m.Password(cmd.NewPassword)
+	if password.IsWeak() {
+		return ApiError(400, "New password is too short", nil)
 	}
 
 	cmd.UserId = c.UserId

+ 6 - 6
pkg/cmd/grafana-cli/commands/commands.go

@@ -90,10 +90,10 @@ var pluginCommands = []cli.Command{
 	},
 }
 
-var userCommands = []cli.Command{
+var adminCommands = []cli.Command{
 	{
-		Name:   "reset-admin",
-		Usage:  "reset-admin <new password>",
+		Name:   "reset-admin-password",
+		Usage:  "reset-admin-password <new password>",
 		Action: runDbCommand(resetPasswordCommand),
 	},
 }
@@ -105,8 +105,8 @@ var Commands = []cli.Command{
 		Subcommands: pluginCommands,
 	},
 	{
-		Name:        "user",
-		Usage:       "",
-		Subcommands: userCommands,
+		Name:        "admin",
+		Usage:       "Grafana admin commands",
+		Subcommands: adminCommands,
 	},
 }

+ 4 - 2
pkg/cmd/grafana-cli/commands/reset_password_command.go

@@ -15,8 +15,9 @@ const AdminUserId = 1
 func resetPasswordCommand(c CommandLine) error {
 	newPassword := c.Args().First()
 
-	if len(newPassword) < 4 {
-		return fmt.Errorf("New password too short")
+	password := models.Password(newPassword)
+	if password.IsWeak() {
+		return fmt.Errorf("New password is too short")
 	}
 
 	userQuery := models.GetUserByIdQuery{Id: AdminUserId}
@@ -36,6 +37,7 @@ func resetPasswordCommand(c CommandLine) error {
 		return fmt.Errorf("Failed to update user password")
 	}
 
+	logger.Infof("\n")
 	logger.Infof("Admin password changed successfully %s", color.GreenString("✔"))
 
 	return nil

+ 6 - 0
pkg/models/user.go

@@ -10,6 +10,12 @@ var (
 	ErrUserNotFound = errors.New("User not found")
 )
 
+type Password string
+
+func (p Password) IsWeak() bool {
+	return len(p) <= 4
+}
+
 type User struct {
 	Id            int64
 	Version       int