Fix IP address not being set on sessions from localhost
The extractClientIP() function only checked proxy headers (X-Forwarded-For, CF-Connecting-IP, etc.) which don't exist when running locally without a proxy. Changes: - Add clientIP field to APIContext - Use Bun's server.requestIP() to get client IP from direct socket connection - Update getGeoInfo() to accept fallback IP parameter - Pass context.clientIP to getGeoInfo() in auth procedures Now sessions will have IP address set even for local development (::1 or 127.0.0.1). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -126,9 +126,16 @@ export const lookupGeoFromIP = (
|
||||
/**
|
||||
* Extract geolocation info from request headers.
|
||||
* Uses Cloudflare headers when available, falls back to GeoIP database lookup.
|
||||
*
|
||||
* @param headers - Request headers to extract proxy IP headers from
|
||||
* @param fallbackIP - Optional fallback IP from direct socket connection (e.g., from Bun's server.requestIP)
|
||||
*/
|
||||
export const getGeoInfo = (headers: Headers): GeoInfo => {
|
||||
const ip = extractClientIP(headers);
|
||||
export const getGeoInfo = (
|
||||
headers: Headers,
|
||||
fallbackIP?: string | null,
|
||||
): GeoInfo => {
|
||||
// Try proxy headers first, then fall back to direct connection IP
|
||||
const ip = extractClientIP(headers) ?? fallbackIP ?? null;
|
||||
|
||||
// Try Cloudflare geo headers first
|
||||
const cfCountry = headers.get("CF-IPCountry");
|
||||
|
||||
Reference in New Issue
Block a user