package server import ( "GoMembership/internal/controllers" "GoMembership/internal/database" "GoMembership/internal/middlewares" "GoMembership/internal/repositories" "GoMembership/internal/routes" "GoMembership/internal/services" "GoMembership/pkg/logger" "net/http" "github.com/gorilla/mux" ) func Run() { db := database.Connect() defer db.Close() userRepo := repositories.NewUserRepository(db) userService := services.NewUserService(userRepo) userController := controllers.NewUserController(userService) router := mux.NewRouter() // router.Handle("/csrf-token", middlewares.GenerateCSRFTokenHandler()).Methods("GET") // Apply CSRF middleware // router.Use(middlewares.CSRFMiddleware) router.Use(middlewares.LoggerMiddleware) routes.RegisterRoutes(router, userController) // create subrouter for teh authenticated area /account // also pthprefix matches everything below /account // accountRouter := router.PathPrefix("/account").Subrouter() // accountRouter.Use(middlewares.AuthMiddleware) logger.Info.Println("Starting server on :8080") if err := http.ListenAndServe(":8080", router); err != nil { logger.Error.Fatalf("could not start server: %v", err) } }