auth-center
Version:
auth center with TOTP
50 lines (41 loc) • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _nodemailer = _interopRequireDefault(require("nodemailer"));
var _lodash = _interopRequireDefault(require("lodash.template"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _default(app, options = {}) {
const templates = options.templates || {};
const transport = _nodemailer.default.createTransport(options);
Object.keys(templates).forEach(k => {
templates[k].title = (0, _lodash.default)(templates[k].subject, {
interpolate: /{{([\s\S]+?)}}/g
});
templates[k].render = (0, _lodash.default)(templates[k].html, {
interpolate: /{{([\s\S]+?)}}/g
});
});
app.use(async function mailHandler(ctx, next) {
ctx.sendMail = (to, key, data, files) => new Promise((resolve, reject) => {
const tpl = templates[key];
transport.sendMail({
from: options.from,
to: to,
attachments: files,
subject: tpl.title(data),
html: tpl.render(data)
}, err => {
if (err) {
console.error(err);
reject(new Error('Send failed'));
} else {
resolve();
}
});
});
await next();
});
}
module.exports = exports.default;