package server import ( "backend/api" "backend/database" "backend/internal/internaljwt" "backend/utils" "os" jwtware "github.com/gofiber/contrib/jwt" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/log" "github.com/gofiber/fiber/v2/middleware/cors" ) func Configure(app *fiber.App) { utils.LoadEnv("wallet.conf") database.InitDatabase() log.SetLevel(log.LevelDebug) app.Use(cors.New(cors.Config{ AllowOrigins: "http://localhost:3000", AllowHeaders: "*", })) app.Static("/", "../frontend/build") apiGroup := app.Group("/api") apiGroup.Post("/token", api.Login) app.Use(internaljwt.JwtFromBody, jwtware.New(jwtware.Config{ SigningKey: jwtware.SigningKey{ Key: []byte(os.Getenv("JWT_SECRET_KEY")), }, ErrorHandler: func(c *fiber.Ctx, err error) error { if err.Error() == "Missing or malformed JWT" { return c.Status( fiber.StatusBadRequest, ).JSON( fiber.Map{ "status": "error", "message": "Missing or malformed JWT", "data": nil, }, ) } return c.Status( fiber.StatusUnauthorized, ).JSON( fiber.Map{ "status": "error", "message": "Invalid or expired JWT", "data": nil, "error": err.Error(), }, ) }, })) usersGroup := apiGroup.Group("/users") usersGroup.Get("/", api.GetAllUsers) usersGroup.Get("/user", api.GetUserData) operationGroup := apiGroup.Group("/operation") operationGroup.Get("/", api.GetAllOperation) categoryGroup := apiGroup.Group("/category") categoryGroup.Get("/", api.GetAllCategories) }