UNPKG

aegis-auth

Version:

A credentials-based auth solution for Next.js (and other Node projects) with IP rate-limiting, account lockouts, and sessions in DB.

41 lines 1.56 kB
import { UAParser } from "ua-parser-js"; import { getCsrfToken, getSessionToken } from "../cookies"; export function parseRequest(request, config) { var _a, _b, _c, _d; const getHeader = (key) => { if ("get" in request.headers && typeof request.headers.get === "function") { return request.headers.get(key); } return undefined; }; const sessionHeader = getHeader(config.session.cookieName) || ""; const csrfHeader = getHeader(config.csrf.cookieName) || ""; const sessionToken = getSessionToken({ cookieHeader: sessionHeader, config, }); const csrfToken = getCsrfToken({ cookieHeader: csrfHeader, config }); const userAgent = getHeader("user-agent"); const { ua, device, browser, os } = UAParser(userAgent); let ipAddress = undefined; const forwardedFor = getHeader("x-forwarded-for"); if (forwardedFor) { const ips = Array.isArray(forwardedFor) ? forwardedFor[0] : forwardedFor.split(",")[0]; ipAddress = ips.trim(); } else { ipAddress = (_a = getHeader("x-real-ip")) !== null && _a !== void 0 ? _a : undefined; } return { sessionToken, csrfToken, userAgent: ua, device: (_b = device.type) !== null && _b !== void 0 ? _b : "Desktop", browser: (_c = browser.name) !== null && _c !== void 0 ? _c : "Unknown", os: (_d = os.name) !== null && _d !== void 0 ? _d : "Unknown", ipAddress: ipAddress, }; } //# sourceMappingURL=request.js.map