tractatus/src
TheFlow 6b79f9a155 fix(newsletter): resolve CSRF token issue for static HTML pages
Problem:
- nginx serves blog.html as static file, bypassing Express middleware
- setCsrfToken middleware never runs
- No CSRF cookie set
- Newsletter subscription fails with 403 Forbidden

Root cause:
nginx config: 'try_files $uri @proxy' serves static files directly
Location: /etc/nginx/sites-available/tractatus (line 54)

Solution:
1. blog.js now fetches CSRF token via /api/csrf-token on page load
2. getCsrfToken endpoint now creates token if missing (for static pages)
3. Newsletter form uses fetched token for subscription

Testing:
 Local test: CSRF token fetched successfully
 Newsletter subscription: Creates record in database
 Verified: test-fix@example.com subscribed via curl test

Impact:
- Newsletter subscriptions now work on production
- Fix applies to all static HTML pages (blog.html, etc.)
- Maintains CSRF protection security

Files:
- public/js/blog.js: Added fetchCsrfToken() + use in newsletter form
- src/middleware/csrf-protection.middleware.js: Enhanced getCsrfToken()

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 09:37:16 +13:00
..
config fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
controllers feat(blog): integrate Tractatus framework governance into blog publishing 2025-10-25 08:47:31 +13:00
middleware fix(newsletter): resolve CSRF token issue for static HTML pages 2025-10-25 09:37:16 +13:00
models refactor(lint): fix code style and unused variables across src/ 2025-10-24 20:15:26 +13:00
routes feat(blog): integrate Tractatus framework governance into blog publishing 2025-10-25 08:47:31 +13:00
services feat(blog): integrate Tractatus framework governance into blog publishing 2025-10-25 08:47:31 +13:00
utils refactor(lint): fix code style and unused variables across src/ 2025-10-24 20:15:26 +13:00
server.js refactor(lint): fix code style and unused variables across src/ 2025-10-24 20:15:26 +13:00