summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2020-12-17 07:57:32 +0000
committerGitHub <noreply@github.com>2020-12-17 02:57:32 -0500
commit5e09de174c69c77babf7366cbbb17d59cb3102f0 (patch)
treeb25dd01ea6f804c6f5f6319a32ccaaa1ff2e6dc3
parentc57e1f2653904fa6eb428d87d64918453533557c (diff)
downloadgitea-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.go41
-rw-r--r--docs/content/doc/usage/command-line.en-us.md5
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