package ginserver import ( "mangezmieux-backend/internal/injector" "time" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) var ( routerInjectorKey = "ROUTER" SecuredRouterInjectorKey = "SECURED_ROUTER" UnsecuredRouterInjectorKey = "UNSECURED_ROUTER" ) func Setup(inj *injector.Injector) { gin.SetMode(gin.ReleaseMode) router := gin.New() router.HandleMethodNotAllowed = true router.Use(cors.New(cors.Config{ AllowOrigins: []string{"http://localhost:3000/", "http://localhost:3000"}, AllowMethods: []string{"*"}, AllowHeaders: []string{"*"}, ExposeHeaders: []string{"*"}, AllowCredentials: true, MaxAge: 12 * time.Hour, })) router.Use(gin.Recovery()) router.Use(GetLoggerMiddleware()) router.Use(GetHTTPLoggerMiddleware()) public := router.Group("") inj.Set(UnsecuredRouterInjectorKey, public) authMiddleware := injector.Get[gin.HandlerFunc](inj, "AuthenticationMiddleware") securedUserRoute := public.Group("/api/v1") securedUserRoute.Use(authMiddleware) inj.Set(SecuredRouterInjectorKey, securedUserRoute) inj.Set(routerInjectorKey, router) }