package main import ( "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "git.artlef.fr/PersonalLibraryManager/internal/api" "git.artlef.fr/PersonalLibraryManager/internal/config" "git.artlef.fr/PersonalLibraryManager/internal/db" "git.artlef.fr/PersonalLibraryManager/internal/jwtauth" "git.artlef.fr/PersonalLibraryManager/internal/middleware" ) func main() { c := config.LoadConfig("plm.toml") r := setup(&c) r.Run(":" + c.Port) } func setup(config *config.Config) *gin.Engine { db := db.Initdb(config.DatabaseFilePath, config.DemoDataPath) err := jwtauth.InitKey(config.JWTKey) if err != nil { panic(err) } r := gin.Default() r.Use(cors.New(configureCors())) // All origins allowed by default r.Use(middleware.Auth()) r.GET("/mybooks", func(c *gin.Context) { api.GetMyBooksHanderl(c, db) }) r.POST("/book", func(c *gin.Context) { api.PostBookHandler(c, db) }) r.POST("/auth/signup", func(c *gin.Context) { api.PostSignupHandler(c, db) }) r.POST("/auth/login", func(c *gin.Context) { api.PostLoginHandler(c, db) }) return r } func configureCors() cors.Config { config := cors.DefaultConfig() config.AllowOrigins = []string{"http://localhost:5173"} config.AllowPrivateNetwork = true config.AllowCredentials = true config.AllowHeaders = []string{"Authorization", "Content-Type"} return config }