package ginserver import ( "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "net/http" "nos-comptes/handler" "nos-comptes/internal/utils" "time" ) var ( routerInjectorKey = "ROUTER" SecuredRouterInjectorKey = "SECURED_ROUTER" UnsecuredRouterInjectorKey = "UNSECURED_ROUTER" ) func Setup(injector *utils.Injector, config *handler.Config) { gin.SetMode(gin.ReleaseMode) router := gin.New() router.HandleMethodNotAllowed = true router.Use(cors.New(cors.Config{ AllowOrigins: []string{"http://localhost:8080/", "http://localhost:8080", "http://localhost:19006"}, 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("/") public.Handle(http.MethodGet, "/_health", handler.GetHealth) injector.Set(UnsecuredRouterInjectorKey, public) securedUserRoute := public.Group("/users") securedUserRoute.Use(ValidateOAuthToken) injector.Set(SecuredRouterInjectorKey, securedUserRoute) injector.Set(routerInjectorKey, router) }