diff --git a/surveys.go b/surveys.go index 63e514f..d5091f5 100644 --- a/surveys.go +++ b/surveys.go @@ -52,6 +52,7 @@ func declareAPISurveysRoutes(router *gin.RouterGroup) { surveysRoutes := router.Group("/surveys/:sid") surveysRoutes.Use(surveyHandler) + surveysRoutes.Use(surveyUserAccessHandler) surveysRoutes.GET("", func(c *gin.Context) { u := c.MustGet("LoggedUser").(*User) @@ -198,6 +199,20 @@ func surveyHandler(c *gin.Context) { } } +func surveyUserAccessHandler(c *gin.Context) { + u := c.MustGet("LoggedUser").(*User) + w := c.MustGet("survey").(*Survey) + + if u.IsAdmin { + c.Next() + } else if w.Shown && (w.Group == "" || strings.Contains(u.Groups, ","+w.Group+",")) { + c.Next() + } else { + c.AbortWithStatusJSON(http.StatusNotFound, gin.H{"errmsg": "Survey not found."}) + return + } +} + type Survey struct { Id int64 `json:"id"` Title string `json:"title"` diff --git a/ui/src/components/WorkRepository.svelte b/ui/src/components/WorkRepository.svelte index 682f3a6..d376fd8 100644 --- a/ui/src/components/WorkRepository.svelte +++ b/ui/src/components/WorkRepository.svelte @@ -82,17 +82,20 @@ {#each repos as repo (repo.id)}
+ Vous pouvez ajouter un webhook sur les Tag push events afin d'automatiser la récupération de votre travail. Dans les paramètres de votre dépôt sur GitLab, faite pointer un webhook sur https://lessons.nemunai.re/api/callbacks/trigger.json
avec le secret ci-dessous.
+