veza/veza-backend-api/internal/api/education/routes.go
2025-12-03 20:29:37 +01:00

54 lines
2.1 KiB
Go

package education
import (
"veza-backend-api/internal/middleware"
"github.com/gin-gonic/gin"
)
// SetupRoutes configure les routes d'éducation
func SetupRoutes(router *gin.RouterGroup, handler *Handler, jwtSecret string, authMiddleware *middleware.AuthMiddleware) { // Added authMiddleware parameter
// Groupe de routes pour l'éducation
edu := router.Group("/education")
{
// Routes des cours
courses := edu.Group("/courses")
courses.Use(authMiddleware.RequireAuth()) // Changed to authMiddleware.RequireAuth()
{
courses.POST("/create", handler.CreateCourse)
courses.GET("/list", handler.ListCourses)
courses.GET("/:course_id", handler.GetCourse)
courses.PUT("/:course_id", handler.UpdateCourse)
courses.DELETE("/:course_id", handler.DeleteCourse)
courses.POST("/:course_id/lessons", handler.AddLesson)
courses.POST("/:course_id/lessons/:lesson_id/exercises", handler.AddExercise)
courses.GET("/:course_id/progress", handler.GetUserProgress)
courses.PUT("/:course_id/progress", handler.UpdateUserProgress)
courses.POST("/:course_id/certificate", handler.IssueCertificate)
}
// Routes des tutoriels
tutorials := edu.Group("/tutorials")
{
// Routes publiques (sans authentification)
tutorials.GET("/list", handler.ListTutorials)
tutorials.GET("/search", handler.SearchTutorials)
tutorials.GET("/:tutorial_id", handler.GetTutorial)
tutorials.GET("/:tutorial_id/steps", handler.GetTutorialSteps)
tutorials.GET("/:tutorial_id/comments", handler.GetTutorialComments)
tutorials.POST("/:tutorial_id/like", handler.LikeTutorial)
tutorials.POST("/:tutorial_id/dislike", handler.DislikeTutorial)
// Routes protégées (avec authentification)
protected := tutorials.Group("")
protected.Use(authMiddleware.RequireAuth()) // Changed to authMiddleware.RequireAuth()
{
protected.POST("/create", handler.CreateTutorial)
protected.PUT("/:tutorial_id", handler.UpdateTutorial)
protected.DELETE("/:tutorial_id", handler.DeleteTutorial)
protected.POST("/:tutorial_id/steps", handler.AddTutorialStep)
protected.POST("/:tutorial_id/comments", handler.AddTutorialComment)
}
}
}
}