diff --git a/server/api/hook.go b/server/api/hook.go index fa79ff04f..427e1b983 100644 --- a/server/api/hook.go +++ b/server/api/hook.go @@ -248,7 +248,18 @@ func PostHook(c *gin.Context) { } func getRepoFromToken(store store.Store, t *token.Token) (*model.Repo, error) { - // try to get the repo by the repo-id + if t.Get("repo-forge-remote-id") != "" { + // TODO: use both the forge ID and repo forge remote ID + /*forgeID, err := strconv.ParseInt(t.Get("forge-id"), 10, 64) + if err != nil { + return nil, err + }*/ + + return store.GetRepoForgeID(model.ForgeRemoteID(t.Get("repo-forge-remote-id"))) + } + + // get the repo by the repo-id + // TODO: remove in next major repoID, err := strconv.ParseInt(t.Get("repo-id"), 10, 64) if err != nil { return nil, err diff --git a/server/api/repo.go b/server/api/repo.go index 07afd606e..e9cb9e505 100644 --- a/server/api/repo.go +++ b/server/api/repo.go @@ -95,6 +95,7 @@ func PostRepo(c *gin.Context) { repo.AllowPull = server.Config.Pipeline.DefaultAllowPullRequests repo.AllowDeploy = false repo.CancelPreviousPipelineEvents = server.Config.Pipeline.DefaultCancelPreviousPipelineEvents + repo.ForgeID = user.ForgeID // TODO: allow to use other connected forges of the user } repo.IsActive = true repo.UserID = user.ID @@ -150,7 +151,8 @@ 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)) + t.Set("repo-forge-remote-id", string(forgeRemoteID)) + t.Set("forge-id", strconv.FormatInt(repo.ForgeID, 10)) sig, err := t.Sign(repo.Hash) if err != nil { msg := "could not generate new jwt token." @@ -176,7 +178,6 @@ func PostRepo(c *gin.Context) { if enabledOnce { err = _store.UpdateRepo(repo) } else { - repo.ForgeID = user.ForgeID // TODO: allow to use other connected forges of the user err = _store.CreateRepo(repo) } if err != nil { @@ -561,7 +562,8 @@ func MoveRepo(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)) + t.Set("repo-forge-remote-id", string(repo.ForgeRemoteID)) + t.Set("forge-id", strconv.FormatInt(repo.ForgeID, 10)) sig, err := t.Sign(repo.Hash) if err != nil { c.String(http.StatusInternalServerError, err.Error()) @@ -668,7 +670,8 @@ func repairRepo(c *gin.Context, repo *model.Repo, withPerms, skipOnErr bool) { // creates the jwt token used to verify the repository t := token.New(token.HookToken) - t.Set("repo-id", strconv.FormatInt(repo.ID, 10)) + t.Set("repo-forge-remote-id", string(repo.ForgeRemoteID)) + t.Set("forge-id", strconv.FormatInt(repo.ForgeID, 10)) sig, err := t.Sign(repo.Hash) if err != nil { c.String(http.StatusInternalServerError, err.Error())