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

applications.go 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 setting
  6. import (
  7. "net/http"
  8. "code.gitea.io/gitea/models"
  9. "code.gitea.io/gitea/models/auth"
  10. "code.gitea.io/gitea/modules/base"
  11. "code.gitea.io/gitea/modules/context"
  12. "code.gitea.io/gitea/modules/setting"
  13. "code.gitea.io/gitea/modules/web"
  14. "code.gitea.io/gitea/services/forms"
  15. )
  16. const (
  17. tplSettingsApplications base.TplName = "user/settings/applications"
  18. )
  19. // Applications render manage access token page
  20. func Applications(ctx *context.Context) {
  21. ctx.Data["Title"] = ctx.Tr("settings")
  22. ctx.Data["PageIsSettingsApplications"] = true
  23. loadApplicationsData(ctx)
  24. ctx.HTML(http.StatusOK, tplSettingsApplications)
  25. }
  26. // ApplicationsPost response for add user's access token
  27. func ApplicationsPost(ctx *context.Context) {
  28. form := web.GetForm(ctx).(*forms.NewAccessTokenForm)
  29. ctx.Data["Title"] = ctx.Tr("settings")
  30. ctx.Data["PageIsSettingsApplications"] = true
  31. if ctx.HasError() {
  32. loadApplicationsData(ctx)
  33. ctx.HTML(http.StatusOK, tplSettingsApplications)
  34. return
  35. }
  36. t := &models.AccessToken{
  37. UID: ctx.User.ID,
  38. Name: form.Name,
  39. }
  40. exist, err := models.AccessTokenByNameExists(t)
  41. if err != nil {
  42. ctx.ServerError("AccessTokenByNameExists", err)
  43. return
  44. }
  45. if exist {
  46. ctx.Flash.Error(ctx.Tr("settings.generate_token_name_duplicate", t.Name))
  47. ctx.Redirect(setting.AppSubURL + "/user/settings/applications")
  48. return
  49. }
  50. if err := models.NewAccessToken(t); err != nil {
  51. ctx.ServerError("NewAccessToken", err)
  52. return
  53. }
  54. ctx.Flash.Success(ctx.Tr("settings.generate_token_success"))
  55. ctx.Flash.Info(t.Token)
  56. ctx.Redirect(setting.AppSubURL + "/user/settings/applications")
  57. }
  58. // DeleteApplication response for delete user access token
  59. func DeleteApplication(ctx *context.Context) {
  60. if err := models.DeleteAccessTokenByID(ctx.FormInt64("id"), ctx.User.ID); err != nil {
  61. ctx.Flash.Error("DeleteAccessTokenByID: " + err.Error())
  62. } else {
  63. ctx.Flash.Success(ctx.Tr("settings.delete_token_success"))
  64. }
  65. ctx.JSON(http.StatusOK, map[string]interface{}{
  66. "redirect": setting.AppSubURL + "/user/settings/applications",
  67. })
  68. }
  69. func loadApplicationsData(ctx *context.Context) {
  70. tokens, err := models.ListAccessTokens(models.ListAccessTokensOptions{UserID: ctx.User.ID})
  71. if err != nil {
  72. ctx.ServerError("ListAccessTokens", err)
  73. return
  74. }
  75. ctx.Data["Tokens"] = tokens
  76. ctx.Data["EnableOAuth2"] = setting.OAuth2.Enable
  77. if setting.OAuth2.Enable {
  78. ctx.Data["Applications"], err = auth.GetOAuth2ApplicationsByUserID(ctx.User.ID)
  79. if err != nil {
  80. ctx.ServerError("GetOAuth2ApplicationsByUserID", err)
  81. return
  82. }
  83. ctx.Data["Grants"], err = auth.GetOAuth2GrantsByUserID(ctx.User.ID)
  84. if err != nil {
  85. ctx.ServerError("GetOAuth2GrantsByUserID", err)
  86. return
  87. }
  88. }
  89. }