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:
@@ -39,7 +39,7 @@ const rpName = Bun.env.RP_NAME ?? DEFAULT_RP_NAME;
|
||||
|
||||
Bun.serve({
|
||||
port,
|
||||
async fetch(request) {
|
||||
async fetch(request, server) {
|
||||
const url = new URL(request.url);
|
||||
|
||||
if (url.pathname.startsWith("/api/v1/rpc")) {
|
||||
@@ -50,6 +50,10 @@ Bun.serve({
|
||||
// Create response headers for setting cookies
|
||||
const resHeaders = new Headers();
|
||||
|
||||
// Get client IP from Bun's server (fallback for when no proxy headers)
|
||||
const socketInfo = server.requestIP(request);
|
||||
const clientIP = socketInfo?.address ?? null;
|
||||
|
||||
const context: APIContext = {
|
||||
db,
|
||||
origin,
|
||||
@@ -57,6 +61,7 @@ Bun.serve({
|
||||
rpName,
|
||||
reqHeaders: request.headers,
|
||||
resHeaders,
|
||||
clientIP,
|
||||
};
|
||||
|
||||
const { response } = await handler.handle(request, {
|
||||
|
||||
Reference in New Issue
Block a user