feat(security): add JWT startup guard, configurable CORS, and externalize DB credentials
- Add check_jwt_secret() that refuses default JWT secret when APP_ENV != development - Make CORS origins configurable via CORS_ORIGINS env var (comma-separated) - Replace hardcoded postgres credentials in docker-compose.yml with env var references - Add APP_ENV and cors_origins to config.py - Update .env.example with all required variables and documentation - Add tests for JWT startup guard and CORS configuration Closes leeworks-agents/SPARC#4 Closes leeworks-agents/SPARC#5 Closes leeworks-agents/SPARC#6 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+30
-9
@@ -1,21 +1,42 @@
|
||||
# SPARC Configuration
|
||||
|
||||
# ---- Application Environment ----
|
||||
# Set to "production" or "staging" in deployed environments.
|
||||
# The API will refuse to start with the default JWT secret unless APP_ENV=development.
|
||||
APP_ENV=development
|
||||
|
||||
# ---- API Keys ----
|
||||
|
||||
# SerpAPI key for patent search
|
||||
API_KEY=your_serpapi_key_here
|
||||
|
||||
# OpenRouter API key for LLM analysis
|
||||
OPENROUTER_API_KEY=your_openrouter_key_here
|
||||
|
||||
# Database configuration
|
||||
# All messages are stored in the database for persistence and caching
|
||||
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/sparc
|
||||
# ---- Database ----
|
||||
|
||||
# Cache configuration
|
||||
# When USE_CACHE=true: check database for cached responses before making API calls
|
||||
# When USE_CACHE=false: always make fresh API calls (still stores results in database)
|
||||
# Default: true
|
||||
USE_CACHE=true
|
||||
# PostgreSQL credentials (used by docker-compose)
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=change-me-to-a-secure-password
|
||||
POSTGRES_DB=sparc
|
||||
|
||||
# JWT Secret for authentication
|
||||
# Full database URL (must match the credentials above)
|
||||
DATABASE_URL=postgresql://postgres:change-me-to-a-secure-password@localhost:5432/sparc
|
||||
|
||||
# ---- Authentication ----
|
||||
|
||||
# JWT Secret for signing tokens
|
||||
# IMPORTANT: Change this to a secure random string in production
|
||||
JWT_SECRET=your-secure-jwt-secret-change-in-production
|
||||
|
||||
# ---- CORS ----
|
||||
|
||||
# Comma-separated list of allowed origins for CORS
|
||||
# Defaults to http://localhost:3000,http://localhost:5173 when unset
|
||||
# CORS_ORIGINS=https://sparc.example.com,https://app.example.com
|
||||
|
||||
# ---- Cache ----
|
||||
|
||||
# When USE_CACHE=true: check database for cached responses before making API calls
|
||||
# When USE_CACHE=false: always make fresh API calls (still stores results in database)
|
||||
USE_CACHE=true
|
||||
|
||||
Reference in New Issue
Block a user