summaryrefslogtreecommitdiffstats
path: root/internal/admin
Commit message (Collapse)AuthorAgeFilesLines
* refactor: convert admin handlers to Gin context-based signaturesivar13 days2-64/+232
| | | | | | | | | | | | | | | | | - Remove old ServeHTTP method (no longer needed with Gin routing) - Update all 6 handler methods to use *gin.Context instead of http.ResponseWriter, *http.Request - Convert handler signatures: handleList, handleNew, handleNewPost, handleEdit, handleDelete - Remove render() helper (use c.HTML() directly) - Update renderError() to accept gin.Context instead of http.ResponseWriter - Update postFromForm() to extract form data from gin.Context using c.PostForm() - Update main.go to use adminSrv.NewServer() and adminSrv.Engine() - All handlers now use Gin methods: c.HTML(), c.PostForm(), c.Param(), c.Redirect() - Path parameters now extracted via c.Param("slug") instead of function arguments - HTTP status codes and error handling fully migrated to Gin patterns Build verified: go build ./cmd/nebbet succeeds Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
* refactor: implement auth middleware for Ginivar13 days1-41/+30
| | | | | | | | | | | | | | | | Replace the old checkAuth() method with a Gin middleware function that validates Basic Auth credentials. The authMiddleware() now handles authentication at the middleware level rather than per-handler, supporting graceful degradation when no auth file is configured. The middleware: - Skips auth if AuthFile is empty or doesn't exist - Extracts Basic Auth credentials from the request - Verifies credentials using the auth package - Returns 401 with WWW-Authenticate header on failure - Calls c.Next() to pass control to handlers on success Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
* refactor: add Gin routing infrastructure with NewServer constructorivar13 days1-183/+85
|
* Fault if not able to authenticate userivar2026-03-311-6/+6
|
* Add post management admin UI and switch to modernc.org/sqliteClaude2026-03-311-0/+476
- Replace custom CGO sqlite driver with modernc.org/sqlite (registered as "sqlite3"); a local compat shim under compat/sqlite/ provides the same import path and WAL-mode behaviour using system libsqlite3 while network access is unavailable — swapping to the real pure-Go package later only requires removing the replace directive and running go get. - Add internal/admin/server.go: HTTP handler for /admin/ that serves a server-side-rendered post management UI (list, new, edit, delete). Posts are stored as Markdown files under content/posts/ and rebuilt via the existing Builder after every write. Basic auth is checked against the .passwords file when it exists. - Add cmd/nebbet/main.go: unified CLI with build, watch, serve (HTTP server with admin + file server + watch), and user subcommands. - Update builder.BuildAll to skip content/admin/ — admin pages are served dynamically and must never appear in the static output directory. - Mark content/admin/index.md as draft so the old static placeholder is not built even if the admin skip logic is bypassed. - Fix .gitignore: use /nebbet (root-only) so the pattern no longer accidentally ignores the cmd/nebbet/ source directory. https://claude.ai/code/session_01WLuSGxJhNs2cFM2zJzSsTx