create_admin.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. "log/slog"
  6. "miniflux.app/v2/internal/config"
  7. "miniflux.app/v2/internal/model"
  8. "miniflux.app/v2/internal/storage"
  9. "miniflux.app/v2/internal/validator"
  10. )
  11. func createAdmin(store *storage.Storage) {
  12. userCreationRequest := &model.UserCreationRequest{
  13. Username: config.Opts.AdminUsername(),
  14. Password: config.Opts.AdminPassword(),
  15. IsAdmin: true,
  16. }
  17. if userCreationRequest.Username == "" || userCreationRequest.Password == "" {
  18. userCreationRequest.Username, userCreationRequest.Password = askCredentials()
  19. }
  20. if store.UserExists(userCreationRequest.Username) {
  21. slog.Info("Skipping admin user creation because it already exists",
  22. slog.String("username", userCreationRequest.Username),
  23. )
  24. return
  25. }
  26. if validationErr := validator.ValidateUserCreationWithPassword(store, userCreationRequest); validationErr != nil {
  27. printErrorAndExit(validationErr.Error())
  28. }
  29. if _, err := store.CreateUser(userCreationRequest); err != nil {
  30. printErrorAndExit(err)
  31. }
  32. }