@tree-house/authentication
Version:
Tree House Authentication
28 lines (27 loc) • 1.11 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.verifyToken = exports.generateQrCode = exports.generate2FAKey = void 0;
const speakeasy_1 = __importDefault(require("speakeasy"));
const qrcode_1 = __importDefault(require("qrcode"));
function generate2FAKey(options) {
return speakeasy_1.default.generateSecret(options);
}
exports.generate2FAKey = generate2FAKey;
function generateQrCode(options) {
return new Promise((resolve, reject) => {
const key = generate2FAKey(options);
qrcode_1.default.toDataURL(key.otpauth_url, {}, (error, imageData) => {
if (error)
return reject(error);
return resolve({ imageData, secret: key.base32, url: key.otpauth_url });
});
});
}
exports.generateQrCode = generateQrCode;
function verifyToken(secret, token) {
return speakeasy_1.default.totp.verify({ secret, token, encoding: 'base32' });
}
exports.verifyToken = verifyToken;