diff --git a/backend/cmd/api/main.go b/backend/cmd/api/main.go index 4f6fab5..036c15c 100644 --- a/backend/cmd/api/main.go +++ b/backend/cmd/api/main.go @@ -3,6 +3,7 @@ package main import ( "log" + "photum-backend/docs" "photum-backend/internal/anos_formaturas" "photum-backend/internal/auth" "photum-backend/internal/config" @@ -13,6 +14,9 @@ import ( "photum-backend/internal/profissionais" "photum-backend/internal/tipos_eventos" "photum-backend/internal/tipos_servicos" + "strings" + + "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" @@ -68,7 +72,21 @@ func main() { r := gin.Default() + // CORS Middleware + configCors := cors.DefaultConfig() + if cfg.CorsAllowedOrigins == "*" { + configCors.AllowAllOrigins = true + } else { + configCors.AllowOrigins = strings.Split(cfg.CorsAllowedOrigins, ",") + } + configCors.AllowHeaders = []string{"Origin", "Content-Length", "Content-Type", "Authorization"} + r.Use(cors.New(configCors)) + // Swagger + // Dynamically update Swagger Info + docs.SwaggerInfo.Host = cfg.SwaggerHost + docs.SwaggerInfo.Schemes = []string{"https", "http"} + r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) // Public Routes @@ -140,6 +158,7 @@ func main() { api.POST("/tipos-eventos/precos", tiposEventosHandler.SetPrice) } + log.Printf("Swagger Host Configured: %s", cfg.SwaggerHost) log.Printf("Server running on port %s", cfg.AppPort) r.Run(":" + cfg.AppPort) } diff --git a/backend/go.mod b/backend/go.mod index 74d8849..3acf5e2 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -22,6 +22,7 @@ require ( github.com/cloudwego/base64x v0.1.6 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/gabriel-vasile/mimetype v1.4.11 // indirect + github.com/gin-contrib/cors v1.7.6 // indirect github.com/gin-contrib/sse v1.1.0 // indirect github.com/go-openapi/jsonpointer v0.22.3 // indirect github.com/go-openapi/jsonreference v0.21.3 // indirect diff --git a/backend/go.sum b/backend/go.sum index 24d39fe..8baa216 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -32,6 +32,8 @@ github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/gabriel-vasile/mimetype v1.4.11 h1:AQvxbp830wPhHTqc1u7nzoLT+ZFxGY7emj5DR5DYFik= github.com/gabriel-vasile/mimetype v1.4.11/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s= +github.com/gin-contrib/cors v1.7.6 h1:3gQ8GMzs1Ylpf70y8bMw4fVpycXIeX1ZemuSQIsnQQY= +github.com/gin-contrib/cors v1.7.6/go.mod h1:Ulcl+xN4jel9t1Ry8vqph23a60FwH9xVLd+3ykmTjOk= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= diff --git a/backend/internal/config/config.go b/backend/internal/config/config.go index 06a821c..aba1311 100644 --- a/backend/internal/config/config.go +++ b/backend/internal/config/config.go @@ -16,6 +16,8 @@ type Config struct { JwtRefreshSecret string JwtAccessTTLMinutes int JwtRefreshTTLDays int + CorsAllowedOrigins string + SwaggerHost string } func LoadConfig() *Config { @@ -32,6 +34,8 @@ func LoadConfig() *Config { JwtRefreshSecret: getEnv("JWT_REFRESH_SECRET", "refresh_secret"), JwtAccessTTLMinutes: getEnvAsInt("JWT_ACCESS_TTL_MINUTES", 15), JwtRefreshTTLDays: getEnvAsInt("JWT_REFRESH_TTL_DAYS", 30), + CorsAllowedOrigins: getEnv("CORS_ALLOWED_ORIGINS", "*"), + SwaggerHost: getEnv("SWAGGER_HOST", "localhost:8080"), } }