]> source.dussan.org Git - gitea.git/commitdiff
fix label of --id in admin delete user (#14005)
authorzeripath <art27@cantab.net>
Thu, 17 Dec 2020 07:57:32 +0000 (07:57 +0000)
committerGitHub <noreply@github.com>
Thu, 17 Dec 2020 07:57:32 +0000 (02:57 -0500)
* fix label of --id in admin delete user

This pr fixes the label descriptor of `gitea admin delete user`
but also adds a `--username` option.

Fix #13995

Signed-off-by: Andrew Thornton <art27@cantab.net>
* fix-spacing

Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add delete email support

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
cmd/admin.go
docs/content/doc/usage/command-line.en-us.md

index 6b8c26fc0cd6f36ce357f4fae15230dfe071608f..25faaae188610c831941017590409674c32fb9d0 100644 (file)
@@ -10,6 +10,7 @@ import (
        "errors"
        "fmt"
        "os"
+       "strings"
        "text/tabwriter"
 
        "code.gitea.io/gitea/models"
@@ -125,9 +126,22 @@ var (
        }
 
        microcmdUserDelete = cli.Command{
-               Name:   "delete",
-               Usage:  "Delete specific user",
-               Flags:  []cli.Flag{idFlag},
+               Name:  "delete",
+               Usage: "Delete specific user by id, name or email",
+               Flags: []cli.Flag{
+                       cli.Int64Flag{
+                               Name:  "id",
+                               Usage: "ID of user of the user to delete",
+                       },
+                       cli.StringFlag{
+                               Name:  "username,u",
+                               Usage: "Username of the user to delete",
+                       },
+                       cli.StringFlag{
+                               Name:  "email,e",
+                               Usage: "Email of the user to delete",
+                       },
+               },
                Action: runDeleteUser,
        }
 
@@ -463,18 +477,33 @@ func runListUsers(c *cli.Context) error {
 }
 
 func runDeleteUser(c *cli.Context) error {
-       if !c.IsSet("id") {
-               return fmt.Errorf("--id flag is missing")
+       if !c.IsSet("id") && !c.IsSet("username") && !c.IsSet("email") {
+               return fmt.Errorf("You must provide the id, username or email of a user to delete")
        }
 
        if err := initDB(); err != nil {
                return err
        }
 
-       user, err := models.GetUserByID(c.Int64("id"))
+       var err error
+       var user *models.User
+       if c.IsSet("email") {
+               user, err = models.GetUserByEmail(c.String("email"))
+       } else if c.IsSet("username") {
+               user, err = models.GetUserByName(c.String("username"))
+       } else {
+               user, err = models.GetUserByID(c.Int64("id"))
+       }
        if err != nil {
                return err
        }
+       if c.IsSet("username") && user.LowerName != strings.ToLower(strings.TrimSpace(c.String("username"))) {
+               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"))
+       }
+
+       if c.IsSet("id") && user.ID != c.Int64("id") {
+               return fmt.Errorf("The user %s does not match the provided id %d", user.Name, c.Int64("id"))
+       }
 
        return models.DeleteUser(user)
 }
index adaf3ea0d558ef3d4e66b30bccc5e7be52bcc008..a09d5dde7377fbebb9eba8b2d167adfc772737d8 100644 (file)
@@ -69,7 +69,10 @@ Admin operations:
         - `gitea admin user list`
     - `delete`:
       - Options:
-        - `--id`: ID of user to be deleted. Required.
+        - `--email`: Email of the user to be deleted.
+        - `--username`: Username of user to be deleted.
+        - `--id`: ID of user to be deleted.
+        - One of `--id`, `--username` or `--email` is required. If more than one is provided then all have to match.
       - Examples:
         - `gitea admin user delete --id 1`
     - `create`: - Options: - `--name value`: Username. Required. As of gitea 1.9.0, use the `--username` flag instead. - `--username value`: Username. Required. New in gitea 1.9.0. - `--password value`: Password. Required. - `--email value`: Email. Required. - `--admin`: If provided, this makes the user an admin. Optional. - `--access-token`: If provided, an access token will be created for the user. Optional. (default: false). - `--must-change-password`: If provided, the created user will be required to choose a newer password after