@jovijovi/express-2fa-token
Version:
2FA token middleware for pedro.js
38 lines • 1.02 kB
JavaScript
;
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