You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

app.go 3.1 kB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. // Copyright 2014 The Gogs Authors. All rights reserved.
  2. // Copyright 2018 The Gitea Authors. All rights reserved.
  3. // Use of this source code is governed by a MIT-style
  4. // license that can be found in the LICENSE file.
  5. package user
  6. import (
  7. "code.gitea.io/gitea/models"
  8. "code.gitea.io/gitea/modules/context"
  9. api "code.gitea.io/gitea/modules/structs"
  10. )
  11. // ListAccessTokens list all the access tokens
  12. func ListAccessTokens(ctx *context.APIContext) {
  13. // swagger:operation GET /users/{username}/tokens user userGetTokens
  14. // ---
  15. // summary: List the authenticated user's access tokens
  16. // produces:
  17. // - application/json
  18. // parameters:
  19. // - name: username
  20. // in: path
  21. // description: username of user
  22. // type: string
  23. // required: true
  24. // responses:
  25. // "200":
  26. // "$ref": "#/responses/AccessTokenList"
  27. tokens, err := models.ListAccessTokens(ctx.User.ID)
  28. if err != nil {
  29. ctx.Error(500, "ListAccessTokens", err)
  30. return
  31. }
  32. apiTokens := make([]*api.AccessToken, len(tokens))
  33. for i := range tokens {
  34. apiTokens[i] = &api.AccessToken{
  35. ID: tokens[i].ID,
  36. Name: tokens[i].Name,
  37. TokenLastEight: tokens[i].TokenLastEight,
  38. }
  39. }
  40. ctx.JSON(200, &apiTokens)
  41. }
  42. // CreateAccessToken create access tokens
  43. func CreateAccessToken(ctx *context.APIContext, form api.CreateAccessTokenOption) {
  44. // swagger:operation POST /users/{username}/tokens user userCreateToken
  45. // ---
  46. // summary: Create an access token
  47. // consumes:
  48. // - application/json
  49. // produces:
  50. // - application/json
  51. // parameters:
  52. // - name: username
  53. // in: path
  54. // description: username of user
  55. // type: string
  56. // required: true
  57. // - name: accessToken
  58. // in: body
  59. // schema:
  60. // type: object
  61. // required:
  62. // - name
  63. // properties:
  64. // name:
  65. // type: string
  66. // responses:
  67. // "200":
  68. // "$ref": "#/responses/AccessToken"
  69. t := &models.AccessToken{
  70. UID: ctx.User.ID,
  71. Name: form.Name,
  72. }
  73. if err := models.NewAccessToken(t); err != nil {
  74. ctx.Error(500, "NewAccessToken", err)
  75. return
  76. }
  77. ctx.JSON(201, &api.AccessToken{
  78. Name: t.Name,
  79. Token: t.Token,
  80. ID: t.ID,
  81. TokenLastEight: t.TokenLastEight,
  82. })
  83. }
  84. // DeleteAccessToken delete access tokens
  85. func DeleteAccessToken(ctx *context.APIContext) {
  86. // swagger:operation DELETE /users/{username}/tokens/{token} user userDeleteAccessToken
  87. // ---
  88. // summary: delete an access token
  89. // produces:
  90. // - application/json
  91. // parameters:
  92. // - name: username
  93. // in: path
  94. // description: username of user
  95. // type: string
  96. // required: true
  97. // - name: token
  98. // in: path
  99. // description: token to be deleted
  100. // type: integer
  101. // format: int64
  102. // required: true
  103. // responses:
  104. // "204":
  105. // "$ref": "#/responses/empty"
  106. tokenID := ctx.ParamsInt64(":id")
  107. if err := models.DeleteAccessTokenByID(tokenID, ctx.User.ID); err != nil {
  108. if models.IsErrAccessTokenNotExist(err) {
  109. ctx.NotFound()
  110. } else {
  111. ctx.Error(500, "DeleteAccessTokenByID", err)
  112. }
  113. return
  114. }
  115. ctx.Status(204)
  116. }