Skip to content

Commit 4b61adf

Browse files
committed
Add delete email support
Signed-off-by: Andrew Thornton <[email protected]>
1 parent 0ef50a6 commit 4b61adf

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

cmd/admin.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"errors"
1111
"fmt"
1212
"os"
13+
"strings"
1314
"text/tabwriter"
1415

1516
"code.gitea.io/gitea/models"
@@ -126,7 +127,7 @@ var (
126127

127128
microcmdUserDelete = cli.Command{
128129
Name: "delete",
129-
Usage: "Delete specific user",
130+
Usage: "Delete specific user by id, name or email",
130131
Flags: []cli.Flag{
131132
cli.Int64Flag{
132133
Name: "id",
@@ -136,6 +137,10 @@ var (
136137
Name: "username,u",
137138
Usage: "Username of the user to delete",
138139
},
140+
cli.StringFlag{
141+
Name: "email,e",
142+
Usage: "Email of the user to delete",
143+
},
139144
},
140145
Action: runDeleteUser,
141146
}
@@ -472,8 +477,8 @@ func runListUsers(c *cli.Context) error {
472477
}
473478

474479
func runDeleteUser(c *cli.Context) error {
475-
if !c.IsSet("id") && !c.IsSet("username") {
476-
return fmt.Errorf("--id or --username missing")
480+
if !c.IsSet("id") && !c.IsSet("username") && !c.IsSet("email") {
481+
return fmt.Errorf("You must provide the id, username or email of a user to delete")
477482
}
478483

479484
if err := initDB(); err != nil {
@@ -482,14 +487,23 @@ func runDeleteUser(c *cli.Context) error {
482487

483488
var err error
484489
var user *models.User
485-
if c.IsSet("id") {
486-
user, err = models.GetUserByID(c.Int64("id"))
487-
} else {
490+
if c.IsSet("email") {
491+
user, err = models.GetUserByEmail(c.String("email"))
492+
} else if c.IsSet("username") {
488493
user, err = models.GetUserByName(c.String("username"))
494+
} else {
495+
user, err = models.GetUserByID(c.Int64("id"))
489496
}
490497
if err != nil {
491498
return err
492499
}
500+
if c.IsSet("username") && user.LowerName != strings.ToLower(strings.TrimSpace(c.String("username"))) {
501+
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"))
502+
}
503+
504+
if c.IsSet("id") && user.ID != c.Int64("id") {
505+
return fmt.Errorf("The user %s does not match the provided id %d", user.Name, c.Int64("id"))
506+
}
493507

494508
return models.DeleteUser(user)
495509
}

docs/content/doc/usage/command-line.en-us.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,10 @@ Admin operations:
6969
- `gitea admin user list`
7070
- `delete`:
7171
- Options:
72+
- `--email`: Email of the user to be deleted.
7273
- `--username`: Username of user to be deleted.
7374
- `--id`: ID of user to be deleted.
74-
- One of `--id` or `--username` is required.
75+
- One of `--id`, `--username` or `--email` is required. If more than one is provided then all have to match.
7576
- Examples:
7677
- `gitea admin user delete --id 1`
7778
- `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

0 commit comments

Comments
 (0)