50 lines
1.7 KiB
Go
50 lines
1.7 KiB
Go
package server
|
|
|
|
import (
|
|
"GoMembership/internal/config"
|
|
"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() {
|
|
cfg := config.LoadConfig()
|
|
logger.Info.Printf("Config: %v", cfg)
|
|
db := database.Connect(cfg.DB)
|
|
defer db.Close()
|
|
|
|
emailService := services.NewEmailService(cfg.SMTP.Host, cfg.SMTP.Port, cfg.SMTP.User, cfg.SMTP.Password, cfg.SMTP.AdminEmail)
|
|
consentRepo := repositories.NewConsentRepository(db)
|
|
consentService := services.NewConsentService(consentRepo)
|
|
bankAccountRepo := repositories.NewBankAccountRepository(db)
|
|
bankAccountService := services.NewBankAccountService(bankAccountRepo)
|
|
userRepo := repositories.NewUserRepository(db)
|
|
userService := services.NewUserService(userRepo)
|
|
userController := controllers.NewUserController(userService, emailService, consentService, bankAccountService)
|
|
|
|
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)
|
|
}
|
|
}
|