reset_password.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package cli // import "miniflux.app/v2/internal/cli"
  4. import (
  5. "errors"
  6. "fmt"
  7. "miniflux.app/v2/internal/model"
  8. "miniflux.app/v2/internal/storage"
  9. "miniflux.app/v2/internal/validator"
  10. )
  11. func resetPassword(store *storage.Storage) {
  12. username, password := askCredentials()
  13. user, err := store.UserByUsername(username)
  14. if err != nil {
  15. printErrorAndExit(err)
  16. }
  17. if user == nil {
  18. printErrorAndExit(errors.New("user not found"))
  19. }
  20. userModificationRequest := &model.UserModificationRequest{
  21. Password: &password,
  22. }
  23. if validationErr := validator.ValidateUserModification(store, user.ID, userModificationRequest); validationErr != nil {
  24. printErrorAndExit(validationErr.Error())
  25. }
  26. user.Password = password
  27. if err := store.UpdateUser(user); err != nil {
  28. printErrorAndExit(err)
  29. }
  30. if err := store.RemoveUserWebSessionsExcept(user.ID, ""); err != nil {
  31. printErrorAndExit(err)
  32. }
  33. fmt.Println("Password changed!")
  34. }