52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
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()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
r := gin.Default()
|
|
r.Use(cors.New(configureCors())) // All origins allowed by default
|
|
r.Use(middleware.Auth())
|
|
r.GET("/books", func(c *gin.Context) {
|
|
api.GetBooksHanderl(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
|
|
}
|