package main import ( "log" "net/http" "lishwist/auth" "lishwist/context" "lishwist/db" "lishwist/env" ) func main() { err := db.Open() if err != nil { log.Fatalf("Failed to open DB: %s\n", err) } err = db.Init() if err != nil { log.Fatalf("Failed to init DB: %s\n", err) } publicMux := http.NewServeMux() protectedMux := http.NewServeMux() authMiddleware := auth.NewAuthMiddleware(protectedMux, publicMux) ctx := context.Context{ Auth: authMiddleware, } publicMux.HandleFunc("GET /register", authMiddleware.Register) publicMux.HandleFunc("POST /register", authMiddleware.RegisterPost) publicMux.HandleFunc("GET /", authMiddleware.Login) publicMux.HandleFunc("POST /", authMiddleware.LoginPost) publicMux.HandleFunc("GET /list/{userReference}", ctx.PublicWishlist) publicMux.HandleFunc("GET /group/{groupReference}", ctx.PublicGroupPage) protectedMux.HandleFunc("GET /{$}", ctx.Home) protectedMux.HandleFunc("POST /{$}", ctx.HomePost) protectedMux.HandleFunc("GET /list/{userReference}", ctx.ForeignWishlist) protectedMux.HandleFunc("POST /list/{userReference}", ctx.ForeignWishlistPost) protectedMux.HandleFunc("GET /group/{groupReference}", ctx.GroupPage) protectedMux.HandleFunc("POST /logout", authMiddleware.LogoutPost) http.Handle("/", authMiddleware) err = http.ListenAndServe(":"+env.ServePort, nil) if err != nil { log.Fatalln("Failed to listen and server:", err) } }