2023-04-28 03:08:47 +03:00
// Copyright 2022 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package setting
import (
"errors"
"net/http"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting"
shared "code.gitea.io/gitea/routers/web/shared/secrets"
2023-09-29 18:46:07 +03:00
shared_user "code.gitea.io/gitea/routers/web/shared/user"
2023-04-28 03:08:47 +03:00
)
const (
// TODO: Separate secrets from runners when layout is ready
tplRepoSecrets base . TplName = "repo/settings/actions"
tplOrgSecrets base . TplName = "org/settings/actions"
tplUserSecrets base . TplName = "user/settings/actions"
)
type secretsCtx struct {
OwnerID int64
RepoID int64
IsRepo bool
IsOrg bool
IsUser bool
SecretsTemplate base . TplName
RedirectLink string
}
func getSecretsCtx ( ctx * context . Context ) ( * secretsCtx , error ) {
if ctx . Data [ "PageIsRepoSettings" ] == true {
return & secretsCtx {
OwnerID : 0 ,
RepoID : ctx . Repo . Repository . ID ,
IsRepo : true ,
SecretsTemplate : tplRepoSecrets ,
RedirectLink : ctx . Repo . RepoLink + "/settings/actions/secrets" ,
} , nil
}
if ctx . Data [ "PageIsOrgSettings" ] == true {
2023-09-29 18:46:07 +03:00
err := shared_user . LoadHeaderCount ( ctx )
if err != nil {
ctx . ServerError ( "LoadHeaderCount" , err )
return nil , nil
}
2023-04-28 03:08:47 +03:00
return & secretsCtx {
OwnerID : ctx . ContextUser . ID ,
RepoID : 0 ,
IsOrg : true ,
SecretsTemplate : tplOrgSecrets ,
RedirectLink : ctx . Org . OrgLink + "/settings/actions/secrets" ,
} , nil
}
if ctx . Data [ "PageIsUserSettings" ] == true {
return & secretsCtx {
OwnerID : ctx . Doer . ID ,
RepoID : 0 ,
IsUser : true ,
SecretsTemplate : tplUserSecrets ,
RedirectLink : setting . AppSubURL + "/user/settings/actions/secrets" ,
} , nil
}
return nil , errors . New ( "unable to set Secrets context" )
}
func Secrets ( ctx * context . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "actions.actions" )
ctx . Data [ "PageType" ] = "secrets"
ctx . Data [ "PageIsSharedSettingsSecrets" ] = true
sCtx , err := getSecretsCtx ( ctx )
if err != nil {
ctx . ServerError ( "getSecretsCtx" , err )
return
}
if sCtx . IsRepo {
ctx . Data [ "DisableSSH" ] = setting . SSH . Disabled
}
shared . SetSecretsContext ( ctx , sCtx . OwnerID , sCtx . RepoID )
if ctx . Written ( ) {
return
}
ctx . HTML ( http . StatusOK , sCtx . SecretsTemplate )
}
func SecretsPost ( ctx * context . Context ) {
sCtx , err := getSecretsCtx ( ctx )
if err != nil {
ctx . ServerError ( "getSecretsCtx" , err )
return
}
2023-06-21 01:54:15 +03:00
if ctx . HasError ( ) {
ctx . JSONError ( ctx . GetErrMsg ( ) )
return
}
2023-04-28 03:08:47 +03:00
shared . PerformSecretsPost (
ctx ,
sCtx . OwnerID ,
sCtx . RepoID ,
sCtx . RedirectLink ,
)
}
func SecretsDelete ( ctx * context . Context ) {
sCtx , err := getSecretsCtx ( ctx )
if err != nil {
ctx . ServerError ( "getSecretsCtx" , err )
return
}
shared . PerformSecretsDelete (
ctx ,
sCtx . OwnerID ,
sCtx . RepoID ,
sCtx . RedirectLink ,
)
}