|
56 | 56 | microcmdUserList,
|
57 | 57 | microcmdUserChangePassword,
|
58 | 58 | microcmdUserDelete,
|
| 59 | + microcmdUserGenerateAccessToken, |
59 | 60 | },
|
60 | 61 | }
|
61 | 62 |
|
@@ -154,6 +155,27 @@ var (
|
154 | 155 | Action: runDeleteUser,
|
155 | 156 | }
|
156 | 157 |
|
| 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 | + |
157 | 179 | subcmdRepoSyncReleases = cli.Command{
|
158 | 180 | Name: "repo-sync-releases",
|
159 | 181 | Usage: "Synchronize repository releases with tags",
|
@@ -641,6 +663,41 @@ func runDeleteUser(c *cli.Context) error {
|
641 | 663 | return user_service.DeleteUser(user)
|
642 | 664 | }
|
643 | 665 |
|
| 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 | + |
644 | 701 | func runRepoSyncReleases(_ *cli.Context) error {
|
645 | 702 | ctx, cancel := installSignals()
|
646 | 703 | defer cancel()
|
|
0 commit comments