diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-01-20 15:25:00 -1000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-01-20 15:25:00 -1000 |
| commit | d799d4d04cc18654de5864a458668ff073e26284 (patch) | |
| tree | c47ce10b1eb72bc6886768afaae201a4a33151b8 /issues/task_002_add_authentication.md | |
| parent | 991cce6e7ed77cc164df04457942a14da1e50039 (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.md | 36 |
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). |
