gitea源码

admin_user_list.go 1.2KB

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