in packages/better-auth/src/utils/get-request-ip.ts [4:33]
export function getIp(
req: Request | Headers,
options: BetterAuthOptions,
): string | null {
if (options.advanced?.ipAddress?.disableIpTracking) {
return null;
}
const testIP = "127.0.0.1";
if (isTest) {
return testIP;
}
const headers = "headers" in req ? req.headers : req;
const defaultHeaders = ["x-forwarded-for"];
const ipHeaders =
options.advanced?.ipAddress?.ipAddressHeaders || defaultHeaders;
for (const key of ipHeaders) {
const value = "get" in headers ? headers.get(key) : headers[key];
if (typeof value === "string") {
const ip = value.split(",")[0].trim();
if (isValidIP(ip)) {
return ip;
}
}
}
return null;
}