func ChangeUserPassword(c *middleware.Context, cmd m.ChangeUserPasswordCommand) Response { if setting.LdapEnabled || setting.AuthProxyEnabled { return ApiError(400, "Not allowed to change password when LDAP or Auth Proxy is enabled", nil) } userQuery := m.GetUserByIdQuery{Id: c.UserId} if err := bus.Dispatch(&userQuery); err != nil { return ApiError(500, "Could not read user from database", err) } passwordHashed := util.EncodePassword(cmd.OldPassword, userQuery.Result.Salt) if passwordHashed != userQuery.Result.Password { return ApiError(401, "Invalid old password", nil) } password := m.Password(cmd.NewPassword) if password.IsWeak() { return ApiError(400, "New password is too short", nil) } cmd.UserId = c.UserId cmd.NewPassword = util.EncodePassword(cmd.NewPassword, userQuery.Result.Salt) if err := bus.Dispatch(&cmd); err != nil { return ApiError(500, "Failed to change user password", err) } return ApiSuccess("User password changed") }
func resetPasswordCommand(c CommandLine) error { newPassword := c.Args().First() password := models.Password(newPassword) if password.IsWeak() { return fmt.Errorf("New password is too short") } userQuery := models.GetUserByIdQuery{Id: AdminUserId} if err := bus.Dispatch(&userQuery); err != nil { return fmt.Errorf("Could not read user from database. Error: %v", err) } passwordHashed := util.EncodePassword(newPassword, userQuery.Result.Salt) cmd := models.ChangeUserPasswordCommand{ UserId: AdminUserId, NewPassword: passwordHashed, } if err := bus.Dispatch(&cmd); err != nil { return fmt.Errorf("Failed to update user password") } logger.Infof("\n") logger.Infof("Admin password changed successfully %s", color.GreenString("✔")) return nil }