Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

admin_user_generate_access_token.go 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package cmd
  4. import (
  5. "fmt"
  6. auth_model "code.gitea.io/gitea/models/auth"
  7. user_model "code.gitea.io/gitea/models/user"
  8. "github.com/urfave/cli"
  9. )
  10. var microcmdUserGenerateAccessToken = cli.Command{
  11. Name: "generate-access-token",
  12. Usage: "Generate an access token for a specific user",
  13. Flags: []cli.Flag{
  14. cli.StringFlag{
  15. Name: "username,u",
  16. Usage: "Username",
  17. },
  18. cli.StringFlag{
  19. Name: "token-name,t",
  20. Usage: "Token name",
  21. Value: "gitea-admin",
  22. },
  23. cli.BoolFlag{
  24. Name: "raw",
  25. Usage: "Display only the token value",
  26. },
  27. cli.StringFlag{
  28. Name: "scopes",
  29. Value: "",
  30. Usage: "Comma separated list of scopes to apply to access token",
  31. },
  32. },
  33. Action: runGenerateAccessToken,
  34. }
  35. func runGenerateAccessToken(c *cli.Context) error {
  36. if !c.IsSet("username") {
  37. return fmt.Errorf("You must provide a username to generate a token for")
  38. }
  39. ctx, cancel := installSignals()
  40. defer cancel()
  41. if err := initDB(ctx); err != nil {
  42. return err
  43. }
  44. user, err := user_model.GetUserByName(ctx, c.String("username"))
  45. if err != nil {
  46. return err
  47. }
  48. accessTokenScope, err := auth_model.AccessTokenScope(c.String("scopes")).Normalize()
  49. if err != nil {
  50. return err
  51. }
  52. t := &auth_model.AccessToken{
  53. Name: c.String("token-name"),
  54. UID: user.ID,
  55. Scope: accessTokenScope,
  56. }
  57. if err := auth_model.NewAccessToken(t); err != nil {
  58. return err
  59. }
  60. if c.Bool("raw") {
  61. fmt.Printf("%s\n", t.Token)
  62. } else {
  63. fmt.Printf("Access token was successfully created: %s\n", t.Token)
  64. }
  65. return nil
  66. }