summaryrefslogtreecommitdiffstats
path: root/routers/admin/hooks.go
diff options
context:
space:
mode:
authorJames Lakin <jamesorlakin@users.noreply.github.com>2020-03-08 22:08:05 +0000
committerGitHub <noreply@github.com>2020-03-09 00:08:05 +0200
commita9f4489bbcb7b406721582bfc3bbd7e7c7f2a04f (patch)
tree23ec6f541ffbdecb932a124c8f029a07f89bf204 /routers/admin/hooks.go
parentb8551f8532ef7b98cdd8522440b3ff20f39b49f5 (diff)
downloadgitea-a9f4489bbcb7b406721582bfc3bbd7e7c7f2a04f.tar.gz
gitea-a9f4489bbcb7b406721582bfc3bbd7e7c7f2a04f.zip
System-wide webhooks (#10546)
* Create system webhook column (and migration) * Create system webhook DB methods Based on the default webhook ones * Modify router to handle system webhooks and default ones * Remove old unused admin nav template * Adjust orgRepoCtx to differentiate system and default webhook URLs * Assign IsSystemWebhook when creating webhooks * Correctly use booleans for IsSystemWebhook * Use system webhooks when preparing webhooks for payload * Add UI and locale changes * Use router params to differentiate admin hook pages * Fix deleting admin webhooks and rename method * Add clarity to webhook docs * Revert "Remove old unused admin nav template" This reverts commit 191a20a7389fe5f6256b0ad6aafd04b9b0e295c5. * Rename WebHooksNewPost to GiteaHooksNewPost for clarity * Reintroduce blank line lost during merge conflict Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: Lauris BH <lauris@nix.lv>
Diffstat (limited to 'routers/admin/hooks.go')
-rw-r--r--routers/admin/hooks.go49
1 files changed, 34 insertions, 15 deletions
diff --git a/routers/admin/hooks.go b/routers/admin/hooks.go
index b80ed3cc3c..4697c4d933 100644
--- a/routers/admin/hooks.go
+++ b/routers/admin/hooks.go
@@ -12,20 +12,32 @@ import (
)
const (
- // tplAdminHooks template path for render hook settings
+ // tplAdminHooks template path to render hook settings
tplAdminHooks base.TplName = "admin/hooks"
)
-// DefaultWebhooks render admin-default webhook list page
-func DefaultWebhooks(ctx *context.Context) {
- ctx.Data["Title"] = ctx.Tr("admin.hooks")
- ctx.Data["PageIsAdminHooks"] = true
- ctx.Data["BaseLink"] = setting.AppSubURL + "/admin/hooks"
- ctx.Data["Description"] = ctx.Tr("admin.hooks.desc")
+// DefaultOrSystemWebhooks renders both admin default and system webhook list pages
+func DefaultOrSystemWebhooks(ctx *context.Context) {
+ var ws []*models.Webhook
+ var err error
+
+ // Are we looking at default webhooks?
+ if ctx.Params(":configType") == "hooks" {
+ ctx.Data["Title"] = ctx.Tr("admin.hooks")
+ ctx.Data["Description"] = ctx.Tr("admin.hooks.desc")
+ ctx.Data["PageIsAdminHooks"] = true
+ ctx.Data["BaseLink"] = setting.AppSubURL + "/admin/hooks"
+ ws, err = models.GetDefaultWebhooks()
+ } else {
+ ctx.Data["Title"] = ctx.Tr("admin.systemhooks")
+ ctx.Data["Description"] = ctx.Tr("admin.systemhooks.desc")
+ ctx.Data["PageIsAdminSystemHooks"] = true
+ ctx.Data["BaseLink"] = setting.AppSubURL + "/admin/system-hooks"
+ ws, err = models.GetSystemWebhooks()
+ }
- ws, err := models.GetDefaultWebhooks()
if err != nil {
- ctx.ServerError("GetWebhooksDefaults", err)
+ ctx.ServerError("GetWebhooksAdmin", err)
return
}
@@ -33,15 +45,22 @@ func DefaultWebhooks(ctx *context.Context) {
ctx.HTML(200, tplAdminHooks)
}
-// DeleteDefaultWebhook response for delete admin-default webhook
-func DeleteDefaultWebhook(ctx *context.Context) {
- if err := models.DeleteDefaultWebhook(ctx.QueryInt64("id")); err != nil {
+// DeleteDefaultOrSystemWebhook handler to delete an admin-defined system or default webhook
+func DeleteDefaultOrSystemWebhook(ctx *context.Context) {
+ if err := models.DeleteDefaultSystemWebhook(ctx.QueryInt64("id")); err != nil {
ctx.Flash.Error("DeleteDefaultWebhook: " + err.Error())
} else {
ctx.Flash.Success(ctx.Tr("repo.settings.webhook_deletion_success"))
}
- ctx.JSON(200, map[string]interface{}{
- "redirect": setting.AppSubURL + "/admin/hooks",
- })
+ // Are we looking at default webhooks?
+ if ctx.Params(":configType") == "hooks" {
+ ctx.JSON(200, map[string]interface{}{
+ "redirect": setting.AppSubURL + "/admin/hooks",
+ })
+ } else {
+ ctx.JSON(200, map[string]interface{}{
+ "redirect": setting.AppSubURL + "/admin/system-hooks",
+ })
+ }
}