gitea源码

secrets.go 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package setting
  4. import (
  5. "errors"
  6. "net/http"
  7. user_model "code.gitea.io/gitea/models/user"
  8. "code.gitea.io/gitea/modules/setting"
  9. "code.gitea.io/gitea/modules/templates"
  10. shared "code.gitea.io/gitea/routers/web/shared/secrets"
  11. shared_user "code.gitea.io/gitea/routers/web/shared/user"
  12. "code.gitea.io/gitea/services/context"
  13. )
  14. const (
  15. // TODO: Separate secrets from runners when layout is ready
  16. tplRepoSecrets templates.TplName = "repo/settings/actions"
  17. tplOrgSecrets templates.TplName = "org/settings/actions"
  18. tplUserSecrets templates.TplName = "user/settings/actions"
  19. )
  20. type secretsCtx struct {
  21. OwnerID int64
  22. RepoID int64
  23. IsRepo bool
  24. IsOrg bool
  25. IsUser bool
  26. SecretsTemplate templates.TplName
  27. RedirectLink string
  28. }
  29. func getSecretsCtx(ctx *context.Context) (*secretsCtx, error) {
  30. if ctx.Data["PageIsRepoSettings"] == true {
  31. return &secretsCtx{
  32. OwnerID: 0,
  33. RepoID: ctx.Repo.Repository.ID,
  34. IsRepo: true,
  35. SecretsTemplate: tplRepoSecrets,
  36. RedirectLink: ctx.Repo.RepoLink + "/settings/actions/secrets",
  37. }, nil
  38. }
  39. if ctx.Data["PageIsOrgSettings"] == true {
  40. if _, err := shared_user.RenderUserOrgHeader(ctx); err != nil {
  41. ctx.ServerError("RenderUserOrgHeader", err)
  42. return nil, nil
  43. }
  44. return &secretsCtx{
  45. OwnerID: ctx.ContextUser.ID,
  46. RepoID: 0,
  47. IsOrg: true,
  48. SecretsTemplate: tplOrgSecrets,
  49. RedirectLink: ctx.Org.OrgLink + "/settings/actions/secrets",
  50. }, nil
  51. }
  52. if ctx.Data["PageIsUserSettings"] == true {
  53. return &secretsCtx{
  54. OwnerID: ctx.Doer.ID,
  55. RepoID: 0,
  56. IsUser: true,
  57. SecretsTemplate: tplUserSecrets,
  58. RedirectLink: setting.AppSubURL + "/user/settings/actions/secrets",
  59. }, nil
  60. }
  61. return nil, errors.New("unable to set Secrets context")
  62. }
  63. func Secrets(ctx *context.Context) {
  64. ctx.Data["Title"] = ctx.Tr("actions.actions")
  65. ctx.Data["PageType"] = "secrets"
  66. ctx.Data["PageIsSharedSettingsSecrets"] = true
  67. ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
  68. sCtx, err := getSecretsCtx(ctx)
  69. if err != nil {
  70. ctx.ServerError("getSecretsCtx", err)
  71. return
  72. }
  73. if sCtx.IsRepo {
  74. ctx.Data["DisableSSH"] = setting.SSH.Disabled
  75. }
  76. shared.SetSecretsContext(ctx, sCtx.OwnerID, sCtx.RepoID)
  77. if ctx.Written() {
  78. return
  79. }
  80. ctx.HTML(http.StatusOK, sCtx.SecretsTemplate)
  81. }
  82. func SecretsPost(ctx *context.Context) {
  83. sCtx, err := getSecretsCtx(ctx)
  84. if err != nil {
  85. ctx.ServerError("getSecretsCtx", err)
  86. return
  87. }
  88. if ctx.HasError() {
  89. ctx.JSONError(ctx.GetErrMsg())
  90. return
  91. }
  92. shared.PerformSecretsPost(
  93. ctx,
  94. sCtx.OwnerID,
  95. sCtx.RepoID,
  96. sCtx.RedirectLink,
  97. )
  98. }
  99. func SecretsDelete(ctx *context.Context) {
  100. sCtx, err := getSecretsCtx(ctx)
  101. if err != nil {
  102. ctx.ServerError("getSecretsCtx", err)
  103. return
  104. }
  105. shared.PerformSecretsDelete(
  106. ctx,
  107. sCtx.OwnerID,
  108. sCtx.RepoID,
  109. sCtx.RedirectLink,
  110. )
  111. }