2 Commits

Author SHA1 Message Date
Renovate Bot
b900fcff11 chore(deps): update dependency @tanstack/react-query to v5.97.0
All checks were successful
CI / backend-tests (pull_request) Successful in 29s
CI / frontend-tests (pull_request) Successful in 27s
2026-04-09 09:02:46 +00:00
d8fec0e5d7 fix:add debugging endpoint for auth issues
All checks were successful
CI / backend-tests (push) Successful in 30s
CI / frontend-tests (push) Successful in 28s
2026-03-22 12:15:25 +01:00
4 changed files with 57 additions and 11 deletions

View File

@@ -1,6 +1,10 @@
from fastapi import APIRouter
import urllib.request
from fastapi import APIRouter, Request
from sqlalchemy import text
from app.core.auth import _build_jwks_url, _extract_token, _get_jwks_client
from app.core.config import settings
from app.core.database import async_session
router = APIRouter(tags=["health"])
@@ -23,3 +27,45 @@ async def health_check():
async def root():
"""Root endpoint."""
return {"message": "Nuzlocke Tracker API", "docs": "/docs"}
@router.get("/auth-debug")
async def auth_debug(request: Request):
"""Temporary diagnostic endpoint for auth debugging."""
result: dict = {}
# Config
result["supabase_url"] = settings.supabase_url
result["has_jwt_secret"] = bool(settings.supabase_jwt_secret)
result["jwks_url"] = (
_build_jwks_url(settings.supabase_url) if settings.supabase_url else None
)
# JWKS fetch
jwks_url = result["jwks_url"]
if jwks_url:
try:
with urllib.request.urlopen(jwks_url, timeout=5) as resp:
result["jwks_status"] = resp.status
result["jwks_body"] = resp.read().decode()
except Exception as e:
result["jwks_fetch_error"] = str(e)
# JWKS client
client = _get_jwks_client()
result["jwks_client_exists"] = client is not None
# Token info (header only, no secrets)
token = _extract_token(request)
if token:
import jwt
try:
header = jwt.get_unverified_header(token)
result["token_header"] = header
except Exception as e:
result["token_header_error"] = str(e)
else:
result["token"] = "not provided"
return result

View File

@@ -90,7 +90,7 @@ def _verify_jwt(token: str) -> dict | None:
except PyJWKSetError as e:
logger.warning("JWKS set error: %s", e)
else:
logger.debug("No JWKS client available (SUPABASE_URL not set?)")
logger.warning("No JWKS client available (SUPABASE_URL not set?)")
return _verify_jwt_hs256(token)

View File

@@ -13,7 +13,7 @@
"@dnd-kit/utilities": "3.2.2",
"@supabase/supabase-js": "^2.99.3",
"@tailwindcss/typography": "^0.5.19",
"@tanstack/react-query": "5.94.5",
"@tanstack/react-query": "5.97.0",
"react": "19.2.4",
"react-dom": "19.2.4",
"react-markdown": "^10.1.0",
@@ -1817,9 +1817,9 @@
}
},
"node_modules/@tanstack/query-core": {
"version": "5.94.5",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.94.5.tgz",
"integrity": "sha512-Vx1JJiBURW/wdNGP45afjrqn0LfxYwL7K/bSrQvNRtyLGF1bxQPgUXCpzscG29e+UeFOh9hz1KOVala0N+bZiA==",
"version": "5.97.0",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.97.0.tgz",
"integrity": "sha512-QdpLP5VzVMgo4VtaPppRA2W04UFjIqX+bxke/ZJhE5cfd5UPkRzqIAJQt9uXkQJjqE8LBOMbKv7f8HCsZltXlg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -1827,12 +1827,12 @@
}
},
"node_modules/@tanstack/react-query": {
"version": "5.94.5",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.94.5.tgz",
"integrity": "sha512-1wmrxKFkor+q8l+ygdHmv0Sq5g84Q3p4xvuJ7AdSIAhQQ7udOt+ZSZ19g1Jea3mHqtlTslLGJsmC4vHFgP0P3A==",
"version": "5.97.0",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.97.0.tgz",
"integrity": "sha512-y4So4eGcQoK2WVMAcDNZE9ofB/p5v1OlKvtc1F3uqHwrtifobT7q+ZnXk2mRkc8E84HKYSlAE9z6HXl2V0+ySQ==",
"license": "MIT",
"dependencies": {
"@tanstack/query-core": "5.94.5"
"@tanstack/query-core": "5.97.0"
},
"funding": {
"type": "github",

View File

@@ -21,7 +21,7 @@
"@dnd-kit/utilities": "3.2.2",
"@supabase/supabase-js": "^2.99.3",
"@tailwindcss/typography": "^0.5.19",
"@tanstack/react-query": "5.94.5",
"@tanstack/react-query": "5.97.0",
"react": "19.2.4",
"react-dom": "19.2.4",
"react-markdown": "^10.1.0",