From 251772d1cd893c4dab3f256139d777e4350f1a35 Mon Sep 17 00:00:00 2001 From: Michael Scherer Date: Thu, 18 Nov 2021 23:29:39 +0100 Subject: [PATCH 1/4] Add a "admin user generate-access-token" subcommand Fixes #17721 --- cmd/admin.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/cmd/admin.go b/cmd/admin.go index 27089a17c4969..3dfd93be45f2d 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -53,6 +53,7 @@ var ( microcmdUserList, microcmdUserChangePassword, microcmdUserDelete, + microcmdUserGenerateAccessToken, }, } @@ -151,6 +152,27 @@ var ( Action: runDeleteUser, } + microcmdUserGenerateAccessToken = cli.Command{ + Name: "generate-access-token", + Usage: "Generate a access token for a specific user", + Flags: []cli.Flag{ + cli.StringFlag{ + Name: "username,u", + Usage: "Username", + }, + cli.StringFlag{ + Name: "token-name,t", + Usage: "Token name", + Value: "gitea-admin", + }, + cli.BoolFlag{ + Name: "raw", + Usage: "Display only the token value", + }, + }, + Action: runGenerateAccessToken, + } + subcmdRepoSyncReleases = cli.Command{ Name: "repo-sync-releases", Usage: "Synchronize repository releases with tags", @@ -538,6 +560,42 @@ func runDeleteUser(c *cli.Context) error { return user_service.DeleteUser(user) } +func runGenerateAccessToken(c *cli.Context) error { + if !c.IsSet("username") { + return fmt.Errorf("You must provide the username to generate a token for them") + } + + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + + user, err := models.GetUserByName(c.String("username")) + if err != nil { + return err + } + + t := &models.AccessToken{ + Name: c.String("token-name"), + UID: user.ID, + } + + if err := models.NewAccessToken(t); err != nil { + return err + } + + if c.Bool("raw") { + fmt.Printf("%s\n", t.Token) + } else { + fmt.Printf("Access token was successfully created... %s\n", t.Token) + } + + return nil + +} + func runRepoSyncReleases(_ *cli.Context) error { ctx, cancel := installSignals() defer cancel() From 4b69ff86fbacd736bd49276edd9e5bd7c7fecb32 Mon Sep 17 00:00:00 2001 From: mscherer Date: Mon, 22 Nov 2021 15:48:10 +0100 Subject: [PATCH 2/4] Update cmd/admin.go Co-authored-by: wxiaoguang --- cmd/admin.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cmd/admin.go b/cmd/admin.go index 3dfd93be45f2d..d0bef76cd8678 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -593,7 +593,6 @@ func runGenerateAccessToken(c *cli.Context) error { } return nil - } func runRepoSyncReleases(_ *cli.Context) error { From 96a980eee6f674c3301bfcbe07f3ccd783b8cc5a Mon Sep 17 00:00:00 2001 From: mscherer Date: Mon, 22 Nov 2021 15:48:15 +0100 Subject: [PATCH 3/4] Update cmd/admin.go Co-authored-by: wxiaoguang --- cmd/admin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/admin.go b/cmd/admin.go index d0bef76cd8678..a2b3ffa8fd8ce 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -589,7 +589,7 @@ func runGenerateAccessToken(c *cli.Context) error { if c.Bool("raw") { fmt.Printf("%s\n", t.Token) } else { - fmt.Printf("Access token was successfully created... %s\n", t.Token) + fmt.Printf("Access token was successfully created: %s\n", t.Token) } return nil From 290ebc46a89b83935b212e60e9c4c59dc4dec8ef Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Fri, 4 Mar 2022 19:26:11 +0000 Subject: [PATCH 4/4] update code Signed-off-by: Andrew Thornton --- cmd/admin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/admin.go b/cmd/admin.go index 9eafff920f899..70d44c39e047d 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -675,7 +675,7 @@ func runGenerateAccessToken(c *cli.Context) error { return err } - user, err := models.GetUserByName(c.String("username")) + user, err := user_model.GetUserByName(c.String("username")) if err != nil { return err }