83 lines
1.8 KiB
Go
83 lines
1.8 KiB
Go
package server
|
|
|
|
import (
|
|
"database/sql"
|
|
"net/http"
|
|
|
|
"projectreshoot/config"
|
|
"projectreshoot/handlers"
|
|
"projectreshoot/middleware"
|
|
"projectreshoot/view/page"
|
|
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
// Add all the handled routes to the mux
|
|
func addRoutes(
|
|
mux *http.ServeMux,
|
|
logger *zerolog.Logger,
|
|
config *config.Config,
|
|
conn *sql.DB,
|
|
) {
|
|
// Health check
|
|
mux.HandleFunc("GET /healthz", func(http.ResponseWriter, *http.Request) {})
|
|
|
|
// Static files
|
|
mux.Handle("GET /static/", http.StripPrefix("/static/", handlers.HandleStatic()))
|
|
|
|
// Index page and unhandled catchall (404)
|
|
mux.Handle("GET /", handlers.HandleRoot())
|
|
|
|
// Static content, unprotected pages
|
|
mux.Handle("GET /about", handlers.HandlePage(page.About()))
|
|
|
|
// Login page and handlers
|
|
mux.Handle("GET /login",
|
|
middleware.RequiresLogout(
|
|
handlers.HandleLoginPage(config.TrustedHost),
|
|
))
|
|
mux.Handle("POST /login",
|
|
middleware.RequiresLogout(
|
|
handlers.HandleLoginRequest(
|
|
config,
|
|
logger,
|
|
conn,
|
|
)))
|
|
|
|
// Register page and handlers
|
|
mux.Handle("GET /register",
|
|
middleware.RequiresLogout(
|
|
handlers.HandleRegisterPage(config.TrustedHost),
|
|
))
|
|
mux.Handle("POST /register",
|
|
middleware.RequiresLogout(
|
|
handlers.HandleRegisterRequest(
|
|
config,
|
|
logger,
|
|
conn,
|
|
)))
|
|
|
|
// Logout
|
|
mux.Handle("POST /logout", handlers.HandleLogout(config, logger, conn))
|
|
|
|
// Profile page
|
|
mux.Handle("GET /profile",
|
|
middleware.RequiresLogin(
|
|
handlers.HandleProfilePage(),
|
|
))
|
|
|
|
// Account page
|
|
mux.Handle("GET /account",
|
|
middleware.RequiresLogin(
|
|
handlers.HandleAccountPage(),
|
|
))
|
|
mux.Handle("POST /account-select-page",
|
|
middleware.RequiresLogin(
|
|
handlers.HandleAccountSubpage(),
|
|
))
|
|
mux.Handle("POST /change-username",
|
|
middleware.RequiresLogin(
|
|
handlers.HandleChangeUsername(logger, conn),
|
|
))
|
|
}
|