Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

admin_user_delete.go 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package cmd
  4. import (
  5. "fmt"
  6. "strings"
  7. user_model "code.gitea.io/gitea/models/user"
  8. "code.gitea.io/gitea/modules/storage"
  9. user_service "code.gitea.io/gitea/services/user"
  10. "github.com/urfave/cli"
  11. )
  12. var microcmdUserDelete = cli.Command{
  13. Name: "delete",
  14. Usage: "Delete specific user by id, name or email",
  15. Flags: []cli.Flag{
  16. cli.Int64Flag{
  17. Name: "id",
  18. Usage: "ID of user of the user to delete",
  19. },
  20. cli.StringFlag{
  21. Name: "username,u",
  22. Usage: "Username of the user to delete",
  23. },
  24. cli.StringFlag{
  25. Name: "email,e",
  26. Usage: "Email of the user to delete",
  27. },
  28. cli.BoolFlag{
  29. Name: "purge",
  30. Usage: "Purge user, all their repositories, organizations and comments",
  31. },
  32. },
  33. Action: runDeleteUser,
  34. }
  35. func runDeleteUser(c *cli.Context) error {
  36. if !c.IsSet("id") && !c.IsSet("username") && !c.IsSet("email") {
  37. return fmt.Errorf("You must provide the id, username or email of a user to delete")
  38. }
  39. ctx, cancel := installSignals()
  40. defer cancel()
  41. if err := initDB(ctx); err != nil {
  42. return err
  43. }
  44. if err := storage.Init(); err != nil {
  45. return err
  46. }
  47. var err error
  48. var user *user_model.User
  49. if c.IsSet("email") {
  50. user, err = user_model.GetUserByEmail(ctx, c.String("email"))
  51. } else if c.IsSet("username") {
  52. user, err = user_model.GetUserByName(ctx, c.String("username"))
  53. } else {
  54. user, err = user_model.GetUserByID(ctx, c.Int64("id"))
  55. }
  56. if err != nil {
  57. return err
  58. }
  59. if c.IsSet("username") && user.LowerName != strings.ToLower(strings.TrimSpace(c.String("username"))) {
  60. return fmt.Errorf("The user %s who has email %s does not match the provided username %s", user.Name, c.String("email"), c.String("username"))
  61. }
  62. if c.IsSet("id") && user.ID != c.Int64("id") {
  63. return fmt.Errorf("The user %s does not match the provided id %d", user.Name, c.Int64("id"))
  64. }
  65. return user_service.DeleteUser(ctx, user, c.Bool("purge"))
  66. }