Skip to content

Commit 95c8d53

Browse files
mschererwxiaoguangzeripath
authored
Add a "admin user generate-access-token" subcommand (#17722)
* Add a "admin user generate-access-token" subcommand Fixes #17721 * Update cmd/admin.go Co-authored-by: wxiaoguang <[email protected]> * Update cmd/admin.go Co-authored-by: wxiaoguang <[email protected]> * Fix code to match new interfaces Signed-off-by: Andrew Thornton <[email protected]> Co-authored-by: wxiaoguang <[email protected]> Co-authored-by: zeripath <[email protected]>
1 parent e46a8c9 commit 95c8d53

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

cmd/admin.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ var (
5656
microcmdUserList,
5757
microcmdUserChangePassword,
5858
microcmdUserDelete,
59+
microcmdUserGenerateAccessToken,
5960
},
6061
}
6162

@@ -154,6 +155,27 @@ var (
154155
Action: runDeleteUser,
155156
}
156157

158+
microcmdUserGenerateAccessToken = cli.Command{
159+
Name: "generate-access-token",
160+
Usage: "Generate a access token for a specific user",
161+
Flags: []cli.Flag{
162+
cli.StringFlag{
163+
Name: "username,u",
164+
Usage: "Username",
165+
},
166+
cli.StringFlag{
167+
Name: "token-name,t",
168+
Usage: "Token name",
169+
Value: "gitea-admin",
170+
},
171+
cli.BoolFlag{
172+
Name: "raw",
173+
Usage: "Display only the token value",
174+
},
175+
},
176+
Action: runGenerateAccessToken,
177+
}
178+
157179
subcmdRepoSyncReleases = cli.Command{
158180
Name: "repo-sync-releases",
159181
Usage: "Synchronize repository releases with tags",
@@ -641,6 +663,41 @@ func runDeleteUser(c *cli.Context) error {
641663
return user_service.DeleteUser(user)
642664
}
643665

666+
func runGenerateAccessToken(c *cli.Context) error {
667+
if !c.IsSet("username") {
668+
return fmt.Errorf("You must provide the username to generate a token for them")
669+
}
670+
671+
ctx, cancel := installSignals()
672+
defer cancel()
673+
674+
if err := initDB(ctx); err != nil {
675+
return err
676+
}
677+
678+
user, err := user_model.GetUserByName(c.String("username"))
679+
if err != nil {
680+
return err
681+
}
682+
683+
t := &models.AccessToken{
684+
Name: c.String("token-name"),
685+
UID: user.ID,
686+
}
687+
688+
if err := models.NewAccessToken(t); err != nil {
689+
return err
690+
}
691+
692+
if c.Bool("raw") {
693+
fmt.Printf("%s\n", t.Token)
694+
} else {
695+
fmt.Printf("Access token was successfully created: %s\n", t.Token)
696+
}
697+
698+
return nil
699+
}
700+
644701
func runRepoSyncReleases(_ *cli.Context) error {
645702
ctx, cancel := installSignals()
646703
defer cancel()

0 commit comments

Comments
 (0)