mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-03 18:22:57 +00:00
32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|