2019-03-18 22:33:20 -04:00
// Copyright 2018 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2019-03-18 22:33:20 -04:00
package admin
import (
2021-04-05 17:30:52 +02:00
"net/http"
2021-11-10 13:13:16 +08:00
"code.gitea.io/gitea/models/webhook"
2019-03-18 22:33:20 -04:00
"code.gitea.io/gitea/modules/base"
2024-03-02 16:42:31 +01:00
"code.gitea.io/gitea/modules/optional"
2019-03-18 22:33:20 -04:00
"code.gitea.io/gitea/modules/setting"
2024-02-27 15:12:22 +08:00
"code.gitea.io/gitea/services/context"
2019-03-18 22:33:20 -04:00
)
const (
2020-03-08 22:08:05 +00:00
// tplAdminHooks template path to render hook settings
2019-03-18 22:33:20 -04:00
tplAdminHooks base . TplName = "admin/hooks"
)
2020-03-08 22:08:05 +00:00
// DefaultOrSystemWebhooks renders both admin default and system webhook list pages
func DefaultOrSystemWebhooks ( ctx * context . Context ) {
var err error
2023-02-01 19:56:10 -03:00
ctx . Data [ "Title" ] = ctx . Tr ( "admin.hooks" )
2021-01-15 01:24:03 +02:00
ctx . Data [ "PageIsAdminSystemHooks" ] = true
ctx . Data [ "PageIsAdminDefaultHooks" ] = true
2023-07-04 20:36:08 +02:00
def := make ( map [ string ] any , len ( ctx . Data ) )
sys := make ( map [ string ] any , len ( ctx . Data ) )
2021-01-15 01:24:03 +02:00
for k , v := range ctx . Data {
def [ k ] = v
sys [ k ] = v
}
sys [ "Title" ] = ctx . Tr ( "admin.systemhooks" )
sys [ "Description" ] = ctx . Tr ( "admin.systemhooks.desc" )
2024-03-02 16:42:31 +01:00
sys [ "Webhooks" ] , err = webhook . GetSystemWebhooks ( ctx , optional . None [ bool ] ( ) )
2021-01-15 01:24:03 +02:00
sys [ "BaseLink" ] = setting . AppSubURL + "/admin/hooks"
sys [ "BaseLinkNew" ] = setting . AppSubURL + "/admin/system-hooks"
if err != nil {
ctx . ServerError ( "GetWebhooksAdmin" , err )
return
2020-03-08 22:08:05 +00:00
}
2019-03-18 22:33:20 -04:00
2021-01-15 01:24:03 +02:00
def [ "Title" ] = ctx . Tr ( "admin.defaulthooks" )
def [ "Description" ] = ctx . Tr ( "admin.defaulthooks.desc" )
2022-05-20 22:08:52 +08:00
def [ "Webhooks" ] , err = webhook . GetDefaultWebhooks ( ctx )
2021-01-15 01:24:03 +02:00
def [ "BaseLink" ] = setting . AppSubURL + "/admin/hooks"
def [ "BaseLinkNew" ] = setting . AppSubURL + "/admin/default-hooks"
2019-03-18 22:33:20 -04:00
if err != nil {
2020-03-08 22:08:05 +00:00
ctx . ServerError ( "GetWebhooksAdmin" , err )
2019-03-18 22:33:20 -04:00
return
}
2021-01-15 01:24:03 +02:00
ctx . Data [ "DefaultWebhooks" ] = def
ctx . Data [ "SystemWebhooks" ] = sys
2021-04-05 17:30:52 +02:00
ctx . HTML ( http . StatusOK , tplAdminHooks )
2019-03-18 22:33:20 -04:00
}
2020-03-08 22:08:05 +00:00
// DeleteDefaultOrSystemWebhook handler to delete an admin-defined system or default webhook
func DeleteDefaultOrSystemWebhook ( ctx * context . Context ) {
2023-01-29 02:12:10 +08:00
if err := webhook . DeleteDefaultSystemWebhook ( ctx , ctx . FormInt64 ( "id" ) ) ; err != nil {
2019-03-18 22:33:20 -04:00
ctx . Flash . Error ( "DeleteDefaultWebhook: " + err . Error ( ) )
} else {
ctx . Flash . Success ( ctx . Tr ( "repo.settings.webhook_deletion_success" ) )
}
2023-07-26 14:04:01 +08:00
ctx . JSONRedirect ( setting . AppSubURL + "/admin/hooks" )
2019-03-18 22:33:20 -04:00
}