Backport #28531 by @pulltheflower - Fix the bug about admin/hooks API that `GET /admin/hooks` can only fetch system_hooks, `POST /admin/hooks` can only create default_hooks. Co-authored-by: vincent <38434877+pulltheflower@users.noreply.github.com> (cherry picked from commit 3c79315cf2308e68caba5bd7f2f94aa3472d9425)
This commit is contained in:
parent
881159f593
commit
f5764bbf26
1 changed files with 17 additions and 6 deletions
|
@ -6,6 +6,7 @@ package utils
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
@ -162,6 +163,7 @@ func pullHook(events []string, event string) bool {
|
||||||
// addHook add the hook specified by `form`, `ownerID` and `repoID`. If there is
|
// addHook add the hook specified by `form`, `ownerID` and `repoID`. If there is
|
||||||
// an error, write to `ctx` accordingly. Return (webhook, ok)
|
// an error, write to `ctx` accordingly. Return (webhook, ok)
|
||||||
func addHook(ctx *context.APIContext, form *api.CreateHookOption, ownerID, repoID int64) (*webhook.Webhook, bool) {
|
func addHook(ctx *context.APIContext, form *api.CreateHookOption, ownerID, repoID int64) (*webhook.Webhook, bool) {
|
||||||
|
var isSystemWebhook bool
|
||||||
if !checkCreateHookOption(ctx, form) {
|
if !checkCreateHookOption(ctx, form) {
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
@ -169,13 +171,22 @@ func addHook(ctx *context.APIContext, form *api.CreateHookOption, ownerID, repoI
|
||||||
if len(form.Events) == 0 {
|
if len(form.Events) == 0 {
|
||||||
form.Events = []string{"push"}
|
form.Events = []string{"push"}
|
||||||
}
|
}
|
||||||
|
if form.Config["is_system_webhook"] != "" {
|
||||||
|
sw, err := strconv.ParseBool(form.Config["is_system_webhook"])
|
||||||
|
if err != nil {
|
||||||
|
ctx.Error(http.StatusUnprocessableEntity, "", "Invalid is_system_webhook value")
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
isSystemWebhook = sw
|
||||||
|
}
|
||||||
w := &webhook.Webhook{
|
w := &webhook.Webhook{
|
||||||
OwnerID: ownerID,
|
OwnerID: ownerID,
|
||||||
RepoID: repoID,
|
RepoID: repoID,
|
||||||
URL: form.Config["url"],
|
URL: form.Config["url"],
|
||||||
ContentType: webhook.ToHookContentType(form.Config["content_type"]),
|
ContentType: webhook.ToHookContentType(form.Config["content_type"]),
|
||||||
Secret: form.Config["secret"],
|
Secret: form.Config["secret"],
|
||||||
HTTPMethod: "POST",
|
HTTPMethod: "POST",
|
||||||
|
IsSystemWebhook: isSystemWebhook,
|
||||||
HookEvent: &webhook_module.HookEvent{
|
HookEvent: &webhook_module.HookEvent{
|
||||||
ChooseEvents: true,
|
ChooseEvents: true,
|
||||||
HookEvents: webhook_module.HookEvents{
|
HookEvents: webhook_module.HookEvents{
|
||||||
|
|
Loading…
Reference in a new issue