Commit graph

116 commits

Author SHA1 Message Date
copilot-swe-agent[bot]
4c040f2c58
fix(security): validate session tokens against database
- Add sessions table to store session tokens with expiration
- Create Session domain model and SessionRepository trait
- Implement SqlSessionRepository for session persistence
- Update is_authenticated() to validate tokens against database
- Sessions expire after 30 days
- Session tokens hashed with SHA-256 before storage
- Delete sessions from database on logout
- Update all page handlers to properly validate sessions

This prevents session hijacking by ensuring only valid, unexpired
tokens stored in the database can authenticate requests.

Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:48 +00:00
copilot-swe-agent[bot]
e6811d45ad
feat(frontend): add login page and session-based authentication
- Add tower and tower-cookies dependencies for session management
- Create login page template with username/password form
- Implement /login and /logout routes with cookie-based sessions
- Update navigation bar to show Login/Logout based on auth state
- Add is_authenticated field to all page templates
- Hide create/update/delete UI controls when unauthenticated
- Session tokens stored in secure HttpOnly cookies with SameSite=Lax
- Password verification uses constant-time comparison via Argon2

Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:47 +00:00
copilot-swe-agent[bot]
0e35d18a21
fix(client): use request() helper for all client methods to include auth token
Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:13 +00:00
copilot-swe-agent[bot]
97aaf9311d
fix(api): use TokenResponse DTO to exclude sensitive token_hash field
Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:12 +00:00
copilot-swe-agent[bot]
5c05f35a59
fix(auth): make AuthenticatedUser extractor perform authentication directly
Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:12 +00:00
copilot-swe-agent[bot]
5f4cbf5294
fix(auth): enforce authentication on write operations and fix CLI token auth
Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:11 +00:00
copilot-swe-agent[bot]
6d0ee869f7
feat(api): add authentication middleware and token management routes
Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:10 +00:00
copilot-swe-agent[bot]
0b9cfefce5
feat(cli): add token management commands
Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:09 +00:00
copilot-swe-agent[bot]
d96f2c27e0
feat(auth): add password hashing, token generation, and admin bootstrap
Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:28:03 +00:00
copilot-swe-agent[bot]
ca5d25ea10
feat(domain): add auth database schema and domain models
Co-authored-by: jnsgruk <668505+jnsgruk@users.noreply.github.com>
2025-11-25 16:27:51 +00:00
Jon Seager
4f69d20bb1
feat: add pagination/infinite scroll to timeline 2025-11-24 21:45:59 +00:00
Jon Seager
8a445c4212
test: add some unit tests for datastar helpers 2025-11-24 18:06:43 +00:00
Jon Seager
228306487e
refactor(roasts): simplify tasting note parsing 2025-11-24 11:44:17 +00:00
Jon Seager
fb9fb6cc23
refactor(roasts): require roast metadata 2025-11-24 11:44:16 +00:00
Jon Seager
90390c17ba
refactor(routes): share pagination helpers 2025-11-24 11:44:15 +00:00
Jon Seager
3241f3c961
feat: bootstrap brewlog platform 2025-11-24 11:44:12 +00:00