UNPKG

@pardnchiu/jwt-auth

Version:

A JWT authentication package providing both Access Token and Refresh Token mechanisms, featuring fingerprint recognition, Redis storage, and automatic refresh functionality.

49 lines 1.98 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = CreateFingerprint; const crypto_1 = __importDefault(require("crypto")); async function CreateFingerprint(req) { const userAgent = req.headers["user-agent"] || "Unknown"; function getOS() { switch (true) { case (/Windows/.test(userAgent)): return "Windows"; case (/Macintosh|Mac OS X/.test(userAgent)): return "MacOS"; case (/Linux/.test(userAgent)): return "Linux"; case (/Android/.test(userAgent)): return "Android"; case (/iPhone|iPad|iPod/.test(userAgent)): return "iOS"; default: return "Unknown_OS"; } } function getBrowser() { switch (true) { case (/Edge|Edg/.test(userAgent)): return "Edge"; case (/Firefox/.test(userAgent)): return "Firefox"; case (/Chrome/.test(userAgent)): return "Chrome"; case (/Safari/.test(userAgent)): return "Safari"; case (/Opera|OPR/.test(userAgent)): return "Opera"; default: return "Unknown_Browser"; } } function getDevice() { switch (true) { case (/iPad/.test(userAgent)): return "Tablet"; case (/iPhone|iPod|Android.*Mobile|BlackBerry|IEMobile|Opera Mini/.test(userAgent)): return "Mobile"; default: return "Desktop"; } } const fingerprintData = { os: getOS(), browser: getBrowser(), device: getDevice(), deviceId: req.headers["X-Device-ID"] || req.headers["x-device-id"] || req.body?.deviceId || "Unknown", }; const fp = JSON.stringify(fingerprintData); return crypto_1.default .createHash("sha256") .update(fp) .digest("hex"); } //# sourceMappingURL=CreateFingerprint.js.map