|
53 | 53 | microcmdUserList,
|
54 | 54 | microcmdUserChangePassword,
|
55 | 55 | microcmdUserDelete,
|
| 56 | + microcmdUserGenerateAccessToken, |
56 | 57 | },
|
57 | 58 | }
|
58 | 59 |
|
@@ -151,6 +152,27 @@ var (
|
151 | 152 | Action: runDeleteUser,
|
152 | 153 | }
|
153 | 154 |
|
| 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 | + |
154 | 176 | subcmdRepoSyncReleases = cli.Command{
|
155 | 177 | Name: "repo-sync-releases",
|
156 | 178 | Usage: "Synchronize repository releases with tags",
|
@@ -538,6 +560,42 @@ func runDeleteUser(c *cli.Context) error {
|
538 | 560 | return user_service.DeleteUser(user)
|
539 | 561 | }
|
540 | 562 |
|
| 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 | + |
541 | 599 | func runRepoSyncReleases(_ *cli.Context) error {
|
542 | 600 | ctx, cancel := installSignals()
|
543 | 601 | defer cancel()
|
|
0 commit comments