fix(auth): remove hardcoded JWT secret fallback (GHSA-4gxj-hw3c-3x2x) (#814)
* fix(auth): remove hardcoded JWT secret fallback, fail fast on unset/compromised Addresses GHSA-4gxj-hw3c-3x2x. The JWT signing secret had a hardcoded fallback matching the value shipped in .env.example, so any deployment without JWT_SECRET explicitly set signed tokens with a publicly known value. A second copy of the same fallback lived in the TOTP service. - backend/app/auth/utils.py: introduce _load_jwt_secret() that raises RuntimeError at import time if JWT_SECRET is unset or equals the known-compromised default disclosed in the advisory. - backend/app/auth/services/totp.py: remove the duplicate fallback and derive the TOTP Fernet fallback key from AuthHandler.secret. - .env.example: replace the published secret with REPLACE_ME and point operators at `openssl rand -base64 32`. SSO state signing (app/auth/services/sso.py) reads AuthHandler().secret and inherits the validation with no code change. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * precommit-fixes --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>