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