UNPKG

@jovijovi/express-2fa-token

Version:

2FA token middleware for pedro.js

38 lines 1.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TwoFAToken = void 0; const process_1 = require("process"); const two_fa_js_1 = require("@jovijovi/two-fa.js"); const key = process_1.env.AUTH_2FA_KEY; const defaultHeader = 'Authorization'; const maxCodeLimit = 2; const validCode = []; const timer = setInterval(() => { if (!key) { clearInterval(timer); return; } validCode.push(two_fa_js_1.twofa.GetCode(key)); if (validCode.length > maxCodeLimit) { validCode.shift(); } }, 30 * 1000); function TwoFAToken(req, res, next) { if (!key) { next(); return; } const authCode = req.get(defaultHeader); if (validCode.length === 0) { validCode.push(two_fa_js_1.twofa.GetCode(key)); } if (!validCode.includes(authCode)) { res.status(403).send({ error: 'Forbidden', }); return; } next(); } exports.TwoFAToken = TwoFAToken; //# sourceMappingURL=token.js.map