starting on frontend, auth finished for backend
This commit is contained in:
59
main.go
59
main.go
@@ -1,16 +1,27 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"embed"
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/asdine/storm/v3"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/middleware/basicauth"
|
||||
"github.com/gofiber/fiber/v2/middleware/filesystem"
|
||||
"github.com/gofiber/fiber/v2/middleware/logger"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed frontend/build
|
||||
frontend embed.FS
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
Config *Config
|
||||
Database *storm.DB
|
||||
@@ -20,6 +31,7 @@ type Server struct {
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
server := Server{}
|
||||
err := LoadConfig(&server)
|
||||
if err != nil {
|
||||
@@ -27,19 +39,54 @@ func main() {
|
||||
}
|
||||
fmt.Println("Server: ", server.Config)
|
||||
app := fiber.New()
|
||||
// Setup our logger
|
||||
app.Use(logger.New(logger.Config{
|
||||
Output: server.LogFile,
|
||||
TimeZone: server.Config.Timezone,
|
||||
Format: `{"logtype":"webserver", "pid":"${pid}", "requestid":"${locals:requestid}", "status":"${status}", "method":"${method}", "path":"${path}"}` + "\n",
|
||||
}))
|
||||
// Setup our basic authentication if defined
|
||||
if server.Config.Authentication.BasicAuth {
|
||||
app.Use(basicauth.New(basicauth.Config{
|
||||
Users: map[string]string{
|
||||
server.Config.Authentication.UserName: server.Config.Authentication.Password,
|
||||
},
|
||||
}))
|
||||
}
|
||||
|
||||
server.WebServer = app
|
||||
server.WebServer.Server().Logger.Printf("Webserver Started")
|
||||
app.Server().Logger.Printf("HERE!")
|
||||
defer server.LogFile.Close() // Close out our logfile when closing server.
|
||||
server.Database = SetupDatabase(&server) // Setup our database
|
||||
defer server.Database.Close()
|
||||
|
||||
server.WebServer.Get("/", func(c *fiber.Ctx) error {
|
||||
return c.SendString("Hello, World 👋 RELOADED!")
|
||||
server.Log.Info().Msg("Database and Config loaded, starting webserver...") // Send all good message
|
||||
|
||||
// Loading in the frontend files that were embedded
|
||||
reactFE, err := fs.Sub(frontend, "frontend/build")
|
||||
if err != nil {
|
||||
server.Log.Fatal().Msgf("Unable to load frontend/build: ", err)
|
||||
}
|
||||
staticFE, err := fs.Sub(frontend, "frontend/build/static")
|
||||
if err != nil {
|
||||
server.Log.Fatal().Msgf("Unable to load static files: ", err)
|
||||
}
|
||||
// serve our frontend and static files from our embed
|
||||
server.WebServer.Use("/", filesystem.New(filesystem.Config{
|
||||
Root: http.FS(reactFE),
|
||||
}))
|
||||
server.WebServer.Use("/static", filesystem.New(filesystem.Config{
|
||||
Root: http.FS(staticFE),
|
||||
PathPrefix: "static",
|
||||
}))
|
||||
|
||||
// Load in our routes
|
||||
server.WebServer.Get("/hello", func(c *fiber.Ctx) error { // Basic Hello Route
|
||||
return c.SendString("GoInventorize Backend Hello Route!")
|
||||
})
|
||||
// fmt.Println("Port listen on: ", os.Getenv("PORT"))
|
||||
// fmt.Println("Timezone is: ", os.Getenv("TZ"))
|
||||
// Location Routes
|
||||
server.WebServer.Get("/locations", server.GetAllLocationsHandler)
|
||||
server.WebServer.Post("/locations/new", server.AddNewLocationHandler)
|
||||
server.WebServer.Delete("/locations/:locID", server.DeleteLocationHandler)
|
||||
|
||||
server.WebServer.Listen(fmt.Sprintf(":%s", server.Config.Server.Port))
|
||||
}
|
||||
|
Reference in New Issue
Block a user