Backend: - Nouveau module auth.py avec JWT et password handling - Endpoint /api/auth/login (public) - Endpoint /api/auth/me (protégé) - TOUS les endpoints API protégés par require_auth - Variables env: ADMIN_EMAIL, ADMIN_PASSWORD, JWT_SECRET_KEY - Dependencies: python-jose, passlib Frontend: - Page de login (/login) - AuthGuard component pour redirection automatique - Axios interceptor: ajoute JWT token à chaque requête - Gestion erreur 401: redirect automatique vers /login - Bouton logout dans header - Token stocké dans localStorage Configuration: - .env.example mis à jour avec variables auth - Credentials admin configurables via env Sécurité: - Aucun endpoint public (sauf /api/auth/login et /health) - JWT expiration configurable (24h par défaut) - Password en clair dans env (à améliorer avec hash en prod) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
31 lines
1006 B
Plaintext
31 lines
1006 B
Plaintext
# Database
|
|
DATABASE_URL=postgresql://audio_user:audio_password@localhost:5432/audio_classifier
|
|
POSTGRES_USER=audio_user
|
|
POSTGRES_PASSWORD=audio_password
|
|
POSTGRES_DB=audio_classifier
|
|
|
|
# Backend API
|
|
# Use "*" to allow all origins (recommended for development/local deployment)
|
|
# Or specify comma-separated URLs for production: http://yourdomain.com,https://yourdomain.com
|
|
CORS_ORIGINS=*
|
|
API_HOST=0.0.0.0
|
|
API_PORT=8000
|
|
|
|
# Audio Analysis Configuration
|
|
ANALYSIS_USE_CLAP=false
|
|
ANALYSIS_NUM_WORKERS=4
|
|
ESSENTIA_MODELS_PATH=/app/models
|
|
AUDIO_LIBRARY_PATH=/path/to/your/audio/library
|
|
|
|
# Authentication
|
|
ADMIN_EMAIL=admin@example.com
|
|
ADMIN_PASSWORD=changeme
|
|
JWT_SECRET_KEY=your-super-secret-jwt-key-change-this-in-production
|
|
JWT_EXPIRATION_HOURS=24
|
|
|
|
# Frontend
|
|
# API URL accessed by the browser (use port 8001 since backend is mapped to 8001)
|
|
# For production on a remote server, set this to your server's public URL
|
|
# Example: NEXT_PUBLIC_API_URL=http://yourserver.com:8001
|
|
NEXT_PUBLIC_API_URL=http://localhost:8001
|