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