From 426df489018124ec1c7c3f2f51e59bab4c8d5b14 Mon Sep 17 00:00:00 2001 From: Ryan Chen Date: Wed, 10 Jun 2026 19:07:26 -0400 Subject: [PATCH] Require login to create events when auth is enabled Gate the home page and POST /events behind auth. Also add sqlite3 CLI to the Docker image for DB inspection, and gitignore test.db files. Co-Authored-By: Claude Fable 5 --- .gitignore | 3 +++ Dockerfile | 2 +- handlers.go | 4 ++++ main.go | 6 +++++- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8973df8..deae04b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ bbq bbq.db bbq.db-shm bbq.db-wal +test.db +test.db-shm +test.db-wal diff --git a/Dockerfile b/Dockerfile index 9cd42e9..1aea9b9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ COPY . . RUN CGO_ENABLED=1 go build -o /bbq . FROM debian:bookworm-slim -RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates sqlite3 && rm -rf /var/lib/apt/lists/* COPY --from=build /bbq /usr/local/bin/bbq VOLUME /data ENV BBQ_DB=/data/bbq.db diff --git a/handlers.go b/handlers.go index 1bc1a35..8425226 100644 --- a/handlers.go +++ b/handlers.go @@ -49,6 +49,10 @@ func randomSlug() string { // --- Home / Create Event --- func (s *Server) handleHome(w http.ResponseWriter, r *http.Request) { + if s.features.Auth && s.currentUser(r) == nil { + http.Redirect(w, r, "/login", http.StatusSeeOther) + return + } pageTmpl["home"].ExecuteTemplate(w, "layout", map[string]any{ "User": s.currentUser(r), "AuthEnabled": s.features.Auth, diff --git a/main.go b/main.go index b95db71..2af57e6 100644 --- a/main.go +++ b/main.go @@ -174,7 +174,11 @@ func main() { // Home / create event r.Get("/", srv.handleHome) - r.Post("/events", srv.handleCreateEvent) + if features.Auth { + r.With(srv.requireAuth).Post("/events", srv.handleCreateEvent) + } else { + r.Post("/events", srv.handleCreateEvent) + } // Guest event view r.Get("/e/{slug}", srv.handleEvent)