summaryrefslogtreecommitdiff
path: root/issues/task_002_add_authentication.md
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-01-20 15:25:00 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-01-20 15:25:00 -1000
commitd799d4d04cc18654de5864a458668ff073e26284 (patch)
treec47ce10b1eb72bc6886768afaae201a4a33151b8 /issues/task_002_add_authentication.md
parent991cce6e7ed77cc164df04457942a14da1e50039 (diff)
Add task tracking issues
Document completed and planned tasks: - Obsidian removal (completed) - Authentication implementation (completed) - VPS deployment preparation (planned) - API sync optimization research Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'issues/task_002_add_authentication.md')
-rw-r--r--issues/task_002_add_authentication.md36
1 files changed, 36 insertions, 0 deletions
diff --git a/issues/task_002_add_authentication.md b/issues/task_002_add_authentication.md
new file mode 100644
index 0000000..018fff0
--- /dev/null
+++ b/issues/task_002_add_authentication.md
@@ -0,0 +1,36 @@
+# Task: Add Authentication
+
+## Goal
+Implement session-based authentication to secure the application for public deployment.
+
+## Plan
+
+1. **Dependencies:**
+ * Add `github.com/alexedwards/scs/v2` (Session management).
+ * Add `github.com/alexedwards/scs/sqlite3store` (SQLite store for sessions).
+ * Add `golang.org/x/crypto/bcrypt` (Password hashing).
+
+2. **Database Schema:**
+ * Create migration `migrations/003_add_auth.sql`.
+ * Create `users` table (`id`, `username`, `password_hash`).
+ * Create `sessions` table (required by `scs` SQLite store).
+
+3. **Core Logic (`internal/auth`):**
+ * Create `AuthService` to handle login, logout, and password verification.
+ * Implement `User` model.
+
+4. **Configuration:**
+ * Update `Config` to include `SessionSecret` (for cookie encryption, if needed, though `scs` handles this well).
+
+5. **Handlers & Middleware:**
+ * Initialize `SessionManager` in `main.go`.
+ * Create `LoginHandler` (GET/POST).
+ * Create `LogoutHandler` (POST).
+ * Create `AuthMiddleware` to protect routes.
+
+6. **UI:**
+ * Create `web/templates/login.html`.
+ * Update `web/templates/base.html` (or similar) to show Logout button when logged in.
+
+7. **Seed Data:**
+ * Create a CLI command or startup check to ensure a default admin user exists (or provide instructions to create one).