From 6c471b5ec1c7498ff5b347e6d83af4efb970bccc Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 6 Mar 2023 18:46:41 +0100 Subject: [PATCH] Add links to the forge --- ui/src/routes/works/[wid]/+page.svelte | 2 +- works.go | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ui/src/routes/works/[wid]/+page.svelte b/ui/src/routes/works/[wid]/+page.svelte index fc50a8f..67b99f5 100644 --- a/ui/src/routes/works/[wid]/+page.svelte +++ b/ui/src/routes/works/[wid]/+page.svelte @@ -262,7 +262,7 @@ {#await my_submission}
{:then submission} - {submission.commit} ({submission.tag}) (taille : {submission.size} o, date : ) + {submission.commit} ({submission.tag}) (taille : {submission.size} o, date : ) {:catch} - {/await} diff --git a/works.go b/works.go index 26cb887..38dc914 100644 --- a/works.go +++ b/works.go @@ -370,6 +370,26 @@ func declareAPIAuthWorksRoutes(router *gin.RouterGroup) { }) // Grades related to works + worksRoutes.GET("/forge/*path", func(c *gin.Context) { + w := c.MustGet("work").(*Work) + + var u *User + if user, ok := c.Get("user"); ok { + u = user.(*User) + } else { + u = c.MustGet("LoggedUser").(*User) + } + + repo, err := u.getRepositoryByWork(w.Id) + if err != nil { + log.Printf("Unable to getRepositoryByWork(uid=%d, wid=%d): %s", u.Id, w.Id, err.Error()) + c.AbortWithStatusJSON(http.StatusNotFound, gin.H{"errmsg": "Unable to find a corresponding repository."}) + return + } + + c.Redirect(http.StatusFound, strings.TrimSuffix(strings.Replace(strings.Replace(repo.URI, ":", "/", 1), "git@", "https://", 1), ".git")+c.Param("path")) + }) + worksRoutes.GET("/score", func(c *gin.Context) { u := c.MustGet("LoggedUser").(*User) w := c.MustGet("work").(*Work)