code.gitea.io/gitea@v1.21.7/routers/web/admin/hooks.go (about)

     1  // Copyright 2018 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package admin
     5  
     6  import (
     7  	"net/http"
     8  
     9  	"code.gitea.io/gitea/models/webhook"
    10  	"code.gitea.io/gitea/modules/base"
    11  	"code.gitea.io/gitea/modules/context"
    12  	"code.gitea.io/gitea/modules/setting"
    13  	"code.gitea.io/gitea/modules/util"
    14  )
    15  
    16  const (
    17  	// tplAdminHooks template path to render hook settings
    18  	tplAdminHooks base.TplName = "admin/hooks"
    19  )
    20  
    21  // DefaultOrSystemWebhooks renders both admin default and system webhook list pages
    22  func DefaultOrSystemWebhooks(ctx *context.Context) {
    23  	var err error
    24  
    25  	ctx.Data["Title"] = ctx.Tr("admin.hooks")
    26  	ctx.Data["PageIsAdminSystemHooks"] = true
    27  	ctx.Data["PageIsAdminDefaultHooks"] = true
    28  
    29  	def := make(map[string]any, len(ctx.Data))
    30  	sys := make(map[string]any, len(ctx.Data))
    31  	for k, v := range ctx.Data {
    32  		def[k] = v
    33  		sys[k] = v
    34  	}
    35  
    36  	sys["Title"] = ctx.Tr("admin.systemhooks")
    37  	sys["Description"] = ctx.Tr("admin.systemhooks.desc")
    38  	sys["Webhooks"], err = webhook.GetSystemWebhooks(ctx, util.OptionalBoolNone)
    39  	sys["BaseLink"] = setting.AppSubURL + "/admin/hooks"
    40  	sys["BaseLinkNew"] = setting.AppSubURL + "/admin/system-hooks"
    41  	if err != nil {
    42  		ctx.ServerError("GetWebhooksAdmin", err)
    43  		return
    44  	}
    45  
    46  	def["Title"] = ctx.Tr("admin.defaulthooks")
    47  	def["Description"] = ctx.Tr("admin.defaulthooks.desc")
    48  	def["Webhooks"], err = webhook.GetDefaultWebhooks(ctx)
    49  	def["BaseLink"] = setting.AppSubURL + "/admin/hooks"
    50  	def["BaseLinkNew"] = setting.AppSubURL + "/admin/default-hooks"
    51  	if err != nil {
    52  		ctx.ServerError("GetWebhooksAdmin", err)
    53  		return
    54  	}
    55  
    56  	ctx.Data["DefaultWebhooks"] = def
    57  	ctx.Data["SystemWebhooks"] = sys
    58  
    59  	ctx.HTML(http.StatusOK, tplAdminHooks)
    60  }
    61  
    62  // DeleteDefaultOrSystemWebhook handler to delete an admin-defined system or default webhook
    63  func DeleteDefaultOrSystemWebhook(ctx *context.Context) {
    64  	if err := webhook.DeleteDefaultSystemWebhook(ctx, ctx.FormInt64("id")); err != nil {
    65  		ctx.Flash.Error("DeleteDefaultWebhook: " + err.Error())
    66  	} else {
    67  		ctx.Flash.Success(ctx.Tr("repo.settings.webhook_deletion_success"))
    68  	}
    69  
    70  	ctx.JSONRedirect(setting.AppSubURL + "/admin/hooks")
    71  }