diff options
author | zeripath <art27@cantab.net> | 2020-12-17 07:57:32 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-17 02:57:32 -0500 |
commit | 5e09de174c69c77babf7366cbbb17d59cb3102f0 (patch) | |
tree | b25dd01ea6f804c6f5f6319a32ccaaa1ff2e6dc3 | |
parent | c57e1f2653904fa6eb428d87d64918453533557c (diff) | |
download | gitea-5e09de174c69c77babf7366cbbb17d59cb3102f0.tar.gz gitea-5e09de174c69c77babf7366cbbb17d59cb3102f0.zip |
fix label of --id in admin delete user (#14005)
* 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>
-rw-r--r-- | cmd/admin.go | 41 | ||||
-rw-r--r-- | docs/content/doc/usage/command-line.en-us.md | 5 |
2 files changed, 39 insertions, 7 deletions
diff --git a/cmd/admin.go b/cmd/admin.go index 6b8c26fc0c..25faaae188 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -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) } diff --git a/docs/content/doc/usage/command-line.en-us.md b/docs/content/doc/usage/command-line.en-us.md index adaf3ea0d5..a09d5dde73 100644 --- a/docs/content/doc/usage/command-line.en-us.md +++ b/docs/content/doc/usage/command-line.en-us.md @@ -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 |