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

app.go 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. api "code.gitea.io/gitea/modules/structs"
  8. "code.gitea.io/gitea/models"
  9. "code.gitea.io/gitea/modules/context"
  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. if tokens[i].Name == "drone" {
  35. tokens[i].Name = "drone-legacy-use-oauth2-instead"
  36. }
  37. apiTokens[i] = &api.AccessToken{
  38. ID: tokens[i].ID,
  39. Name: tokens[i].Name,
  40. TokenLastEight: tokens[i].TokenLastEight,
  41. }
  42. }
  43. ctx.JSON(200, &apiTokens)
  44. }
  45. // CreateAccessToken create access tokens
  46. func CreateAccessToken(ctx *context.APIContext, form api.CreateAccessTokenOption) {
  47. // swagger:operation POST /users/{username}/tokens user userCreateToken
  48. // ---
  49. // summary: Create an access token
  50. // consumes:
  51. // - application/json
  52. // produces:
  53. // - application/json
  54. // parameters:
  55. // - name: username
  56. // in: path
  57. // description: username of user
  58. // type: string
  59. // required: true
  60. // - name: accessToken
  61. // in: body
  62. // schema:
  63. // type: object
  64. // required:
  65. // - name
  66. // properties:
  67. // name:
  68. // type: string
  69. // responses:
  70. // "200":
  71. // "$ref": "#/responses/AccessToken"
  72. t := &models.AccessToken{
  73. UID: ctx.User.ID,
  74. Name: form.Name,
  75. }
  76. if t.Name == "drone" {
  77. t.Name = "drone-legacy-use-oauth2-instead"
  78. }
  79. if err := models.NewAccessToken(t); err != nil {
  80. ctx.Error(500, "NewAccessToken", err)
  81. return
  82. }
  83. ctx.JSON(201, &api.AccessToken{
  84. Name: t.Name,
  85. Token: t.Token,
  86. ID: t.ID,
  87. TokenLastEight: t.TokenLastEight,
  88. })
  89. }
  90. // DeleteAccessToken delete access tokens
  91. func DeleteAccessToken(ctx *context.APIContext) {
  92. // swagger:operation DELETE /users/{username}/tokens/{token} user userDeleteAccessToken
  93. // ---
  94. // summary: delete an access token
  95. // produces:
  96. // - application/json
  97. // parameters:
  98. // - name: username
  99. // in: path
  100. // description: username of user
  101. // type: string
  102. // required: true
  103. // - name: token
  104. // in: path
  105. // description: token to be deleted
  106. // type: integer
  107. // format: int64
  108. // required: true
  109. // responses:
  110. // "204":
  111. // "$ref": "#/responses/empty"
  112. tokenID := ctx.ParamsInt64(":id")
  113. if err := models.DeleteAccessTokenByID(tokenID, ctx.User.ID); err != nil {
  114. if models.IsErrAccessTokenNotExist(err) {
  115. ctx.NotFound()
  116. } else {
  117. ctx.Error(500, "DeleteAccessTokenByID", err)
  118. }
  119. return
  120. }
  121. ctx.Status(204)
  122. }