You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

admin_user_list.go 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package cmd
  4. import (
  5. "fmt"
  6. "os"
  7. "text/tabwriter"
  8. user_model "code.gitea.io/gitea/models/user"
  9. "github.com/urfave/cli/v2"
  10. )
  11. var microcmdUserList = &cli.Command{
  12. Name: "list",
  13. Usage: "List users",
  14. Action: runListUsers,
  15. Flags: []cli.Flag{
  16. &cli.BoolFlag{
  17. Name: "admin",
  18. Usage: "List only admin users",
  19. },
  20. },
  21. }
  22. func runListUsers(c *cli.Context) error {
  23. ctx, cancel := installSignals()
  24. defer cancel()
  25. if err := initDB(ctx); err != nil {
  26. return err
  27. }
  28. users, err := user_model.GetAllUsers(ctx)
  29. if err != nil {
  30. return err
  31. }
  32. w := tabwriter.NewWriter(os.Stdout, 5, 0, 1, ' ', 0)
  33. if c.IsSet("admin") {
  34. fmt.Fprintf(w, "ID\tUsername\tEmail\tIsActive\n")
  35. for _, u := range users {
  36. if u.IsAdmin {
  37. fmt.Fprintf(w, "%d\t%s\t%s\t%t\n", u.ID, u.Name, u.Email, u.IsActive)
  38. }
  39. }
  40. } else {
  41. twofa := user_model.UserList(users).GetTwoFaStatus(ctx)
  42. fmt.Fprintf(w, "ID\tUsername\tEmail\tIsActive\tIsAdmin\t2FA\n")
  43. for _, u := range users {
  44. fmt.Fprintf(w, "%d\t%s\t%s\t%t\t%t\t%t\n", u.ID, u.Name, u.Email, u.IsActive, u.IsAdmin, twofa[u.ID])
  45. }
  46. }
  47. w.Flush()
  48. return nil
  49. }