This commit is contained in:
Tomáš Dvořák
2025-10-16 13:32:05 +02:00
commit 12cba639b9
663 changed files with 168914 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
package routes
import (
"fotbal-club/internal/controllers"
"fotbal-club/internal/middleware"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
"time"
)
func RegisterAnalyticsRoutes(router *gin.RouterGroup, db *gorm.DB) {
analyticsController := controllers.NewAnalyticsController(db)
// Public tracking endpoint (no auth, rate-limited)
router.POST("/analytics/track", middleware.RateLimit(120, time.Minute), analyticsController.TrackEvent)
// Analytics visitors endpoint (protected, used by dashboard widgets)
router.GET("/analytics/visitors", middleware.JWTAuth(db), middleware.RoleAuth("admin"), analyticsController.GetVisitors)
// Protected admin routes
admin := router.Group("/admin/analytics")
admin.Use(middleware.JWTAuth(db))
admin.Use(middleware.RoleAuth("admin"))
{
admin.GET("", analyticsController.GetAnalytics) // GET /admin/analytics (summary)
admin.GET("/overview", analyticsController.GetAnalyticsOverview)
admin.GET("/top-pages", analyticsController.GetTopPages)
admin.GET("/top-articles", analyticsController.GetTopArticles)
admin.GET("/top-interactions", analyticsController.GetTopInteractions)
}
}