fix: Add trailing slash to SITE_URL and enhance debug logging (v0.9.1)
Fix 1: SITE_URL trailing slash normalization - IndieLogin.com requires client_id URLs to have trailing slash for root domains - Added automatic normalization in load_config() after env loading - Added secondary normalization after config overrides (for test compatibility) - Fixes "client_id is not registered" authentication errors - Updated redirect_uri construction to avoid double slashes Fix 2: Enhanced httpx debug logging - Added detailed request logging before token exchange POST - Added detailed response logging after token exchange POST - Shows exact HTTP method, URL, headers, and body for troubleshooting - All sensitive data (tokens, verifiers) automatically redacted - Supplements existing _log_http_request/_log_http_response helpers Version: 0.9.1 (PATCH - bug fixes) - Updated __version__ in starpunk/__init__.py - Added CHANGELOG entry for v0.9.1 Tests: 486/514 passing (28 pre-existing failures from v0.8.0) - No new test failures introduced - Trailing slash normalization verified in config - Debug logging outputs verified Related: IndieLogin.com authentication flow Following: docs/standards/git-branching-strategy.md Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,10 @@ def load_config(app, config_override=None):
|
||||
load_dotenv()
|
||||
|
||||
# Site configuration
|
||||
app.config["SITE_URL"] = os.getenv("SITE_URL", "http://localhost:5000")
|
||||
# IndieWeb/OAuth specs require trailing slash for root URLs used as client_id
|
||||
# See: https://indielogin.com/ OAuth client requirements
|
||||
site_url = os.getenv("SITE_URL", "http://localhost:5000")
|
||||
app.config["SITE_URL"] = site_url if site_url.endswith('/') else site_url + '/'
|
||||
app.config["SITE_NAME"] = os.getenv("SITE_NAME", "StarPunk")
|
||||
app.config["SITE_AUTHOR"] = os.getenv("SITE_AUTHOR", "Unknown")
|
||||
app.config["SITE_DESCRIPTION"] = os.getenv(
|
||||
@@ -73,6 +76,11 @@ def load_config(app, config_override=None):
|
||||
if config_override:
|
||||
app.config.update(config_override)
|
||||
|
||||
# Normalize SITE_URL trailing slash (in case override provided URL without slash)
|
||||
if "SITE_URL" in app.config:
|
||||
site_url = app.config["SITE_URL"]
|
||||
app.config["SITE_URL"] = site_url if site_url.endswith('/') else site_url + '/'
|
||||
|
||||
# Convert path strings to Path objects (in case overrides provided strings)
|
||||
if isinstance(app.config["DATA_PATH"], str):
|
||||
app.config["DATA_PATH"] = Path(app.config["DATA_PATH"])
|
||||
|
||||
Reference in New Issue
Block a user