From 1953a0ec5af91cd35dea2a6d099dae97670bb994 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Mon, 10 Jun 2024 12:28:54 +0200 Subject: [PATCH] Fix repo creation (#3756) --- server/api/repo.go | 51 +++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/server/api/repo.go b/server/api/repo.go index eb76bf1a20..b5cefa699f 100644 --- a/server/api/repo.go +++ b/server/api/repo.go @@ -117,23 +117,6 @@ func PostRepo(c *gin.Context) { ) } - // creates the jwt token used to verify the repository - t := token.New(token.HookToken) - t.Set("repo-id", strconv.FormatInt(repo.ID, 10)) - sig, err := t.Sign(repo.Hash) - if err != nil { - msg := "could not generate new jwt token." - log.Error().Err(err).Msg(msg) - c.String(http.StatusInternalServerError, msg) - return - } - - hookURL := fmt.Sprintf( - "%s/api/hook?access_token=%s", - server.Config.Server.WebhookHost, - sig, - ) - // find org of repo var org *model.Org org, err = _store.OrgFindByName(repo.Owner) @@ -164,14 +147,6 @@ func PostRepo(c *gin.Context) { repo.OrgID = org.ID - err = _forge.Activate(c, user, repo, hookURL) - if err != nil { - msg := "could not create webhook in forge." - log.Error().Err(err).Msg(msg) - c.String(http.StatusInternalServerError, msg) - return - } - if enabledOnce { err = _store.UpdateRepo(repo) } else { @@ -184,6 +159,32 @@ func PostRepo(c *gin.Context) { c.String(http.StatusInternalServerError, msg) return } + + // creates the jwt token used to verify the repository + t := token.New(token.HookToken) + t.Set("repo-id", strconv.FormatInt(repo.ID, 10)) + sig, err := t.Sign(repo.Hash) + if err != nil { + msg := "could not generate new jwt token." + log.Error().Err(err).Msg(msg) + c.String(http.StatusInternalServerError, msg) + return + } + + hookURL := fmt.Sprintf( + "%s/api/hook?access_token=%s", + server.Config.Server.WebhookHost, + sig, + ) + + err = _forge.Activate(c, user, repo, hookURL) + if err != nil { + msg := "could not create webhook in forge." + log.Error().Err(err).Msg(msg) + c.String(http.StatusInternalServerError, msg) + return + } + repo.Perm = from.Perm repo.Perm.Synced = time.Now().Unix() repo.Perm.UserID = user.ID