create_admin.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. "fmt"
  6. "os"
  7. "miniflux.app/v2/internal/config"
  8. "miniflux.app/v2/internal/logger"
  9. "miniflux.app/v2/internal/model"
  10. "miniflux.app/v2/internal/storage"
  11. "miniflux.app/v2/internal/validator"
  12. )
  13. func createAdmin(store *storage.Storage) {
  14. userCreationRequest := &model.UserCreationRequest{
  15. Username: config.Opts.AdminUsername(),
  16. Password: config.Opts.AdminPassword(),
  17. IsAdmin: true,
  18. }
  19. if userCreationRequest.Username == "" || userCreationRequest.Password == "" {
  20. userCreationRequest.Username, userCreationRequest.Password = askCredentials()
  21. }
  22. if store.UserExists(userCreationRequest.Username) {
  23. logger.Info(`User %q already exists, skipping creation`, userCreationRequest.Username)
  24. return
  25. }
  26. if validationErr := validator.ValidateUserCreationWithPassword(store, userCreationRequest); validationErr != nil {
  27. fmt.Fprintf(os.Stderr, "%s\n", validationErr)
  28. os.Exit(1)
  29. }
  30. if _, err := store.CreateUser(userCreationRequest); err != nil {
  31. fmt.Fprintf(os.Stderr, "%v\n", err)
  32. os.Exit(1)
  33. }
  34. }