83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"time"
|
|
"components"
|
|
//"db"
|
|
"github.com/a-h/templ"
|
|
"github.com/alexedwards/scs/v2"
|
|
)
|
|
|
|
var sessionManager *scs.SessionManager
|
|
|
|
func getHandler(w http.ResponseWriter, r *http.Request) {
|
|
component := components.Dashboard("DerGrumpf")
|
|
component.Render(r.Context(), w)
|
|
}
|
|
|
|
func postHandler(w http.ResponseWriter, r *http.Request) {
|
|
r.ParseForm()
|
|
|
|
username := r.Form["username"][0]
|
|
component := components.Dashboard(username)
|
|
component.Render(r.Context(), w)
|
|
}
|
|
|
|
func errorHandler(w http.ResponseWriter, r *http.Request, status int) {
|
|
w.WriteHeader(status)
|
|
if status == http.StatusNotFound {
|
|
component := components.NotFound()
|
|
component.Render(r.Context(), w)
|
|
}
|
|
}
|
|
|
|
func testHandler(w http.ResponseWriter, r *http.Request) {
|
|
component := components.Test()
|
|
component.Render(r.Context(), w)
|
|
}
|
|
|
|
func initMux() *http.ServeMux {
|
|
|
|
mux := http.NewServeMux()
|
|
|
|
// Index Handle
|
|
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
if r.URL.Path != "/" {
|
|
errorHandler(w, r, http.StatusNotFound)
|
|
return
|
|
}
|
|
|
|
if r.Method == http.MethodPost {
|
|
postHandler(w, r)
|
|
return
|
|
}
|
|
getHandler(w, r)
|
|
})
|
|
|
|
// File Server
|
|
mux.Handle("/assets/", http.StripPrefix("/assets/", http.FileServer(http.Dir("assets"))))
|
|
|
|
mux.HandleFunc("/test", testHandler)
|
|
|
|
return mux
|
|
}
|
|
|
|
|
|
func main() {
|
|
sessionManager := scs.New()
|
|
sessionManager.Lifetime = 24 * time.Hour
|
|
sessionManager.Cookie.Persist = false
|
|
|
|
mux := initMux()
|
|
|
|
component := components.Login()
|
|
http.Handle("/", templ.Handler(component))
|
|
|
|
fmt.Println("Listening on http://127.0.0.1:3000")
|
|
if err := http.ListenAndServe(":3000", sessionManager.LoadAndSave(mux)); err != nil {
|
|
fmt.Println("Error listening: %v", err)
|
|
}
|
|
}
|