Skip to content

Commit 251772d

Browse files
committed
Add a "admin user generate-access-token" subcommand
Fixes #17721
1 parent f34151b commit 251772d

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

cmd/admin.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ var (
5353
microcmdUserList,
5454
microcmdUserChangePassword,
5555
microcmdUserDelete,
56+
microcmdUserGenerateAccessToken,
5657
},
5758
}
5859

@@ -151,6 +152,27 @@ var (
151152
Action: runDeleteUser,
152153
}
153154

155+
microcmdUserGenerateAccessToken = cli.Command{
156+
Name: "generate-access-token",
157+
Usage: "Generate a access token for a specific user",
158+
Flags: []cli.Flag{
159+
cli.StringFlag{
160+
Name: "username,u",
161+
Usage: "Username",
162+
},
163+
cli.StringFlag{
164+
Name: "token-name,t",
165+
Usage: "Token name",
166+
Value: "gitea-admin",
167+
},
168+
cli.BoolFlag{
169+
Name: "raw",
170+
Usage: "Display only the token value",
171+
},
172+
},
173+
Action: runGenerateAccessToken,
174+
}
175+
154176
subcmdRepoSyncReleases = cli.Command{
155177
Name: "repo-sync-releases",
156178
Usage: "Synchronize repository releases with tags",
@@ -538,6 +560,42 @@ func runDeleteUser(c *cli.Context) error {
538560
return user_service.DeleteUser(user)
539561
}
540562

563+
func runGenerateAccessToken(c *cli.Context) error {
564+
if !c.IsSet("username") {
565+
return fmt.Errorf("You must provide the username to generate a token for them")
566+
}
567+
568+
ctx, cancel := installSignals()
569+
defer cancel()
570+
571+
if err := initDB(ctx); err != nil {
572+
return err
573+
}
574+
575+
user, err := models.GetUserByName(c.String("username"))
576+
if err != nil {
577+
return err
578+
}
579+
580+
t := &models.AccessToken{
581+
Name: c.String("token-name"),
582+
UID: user.ID,
583+
}
584+
585+
if err := models.NewAccessToken(t); err != nil {
586+
return err
587+
}
588+
589+
if c.Bool("raw") {
590+
fmt.Printf("%s\n", t.Token)
591+
} else {
592+
fmt.Printf("Access token was successfully created... %s\n", t.Token)
593+
}
594+
595+
return nil
596+
597+
}
598+
541599
func runRepoSyncReleases(_ *cli.Context) error {
542600
ctx, cancel := installSignals()
543601
defer cancel()

0 commit comments

Comments
 (0)