mzinga
Version:
Node, React and MongoDB Headless CMS and Application Framework
40 lines (39 loc) • 3.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "authenticateLocalStrategy", {
enumerable: true,
get: function() {
return authenticateLocalStrategy;
}
});
const _crypto = /*#__PURE__*/ _interop_require_default(require("crypto"));
const _scmp = /*#__PURE__*/ _interop_require_default(require("scmp"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const authenticateLocalStrategy = async ({ doc, password })=>{
try {
const { hash, salt } = doc;
if (typeof salt === 'string' && typeof hash === 'string') {
const res = await new Promise((resolve, reject)=>{
_crypto.default.pbkdf2(password, salt, 25000, 512, 'sha256', (e, hashBuffer)=>{
if (e) reject(null);
if ((0, _scmp.default)(hashBuffer, Buffer.from(hash, 'hex'))) {
resolve(doc);
} else {
reject(null);
}
});
});
return res;
}
return null;
} catch (err) {
return null;
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoL3N0cmF0ZWdpZXMvbG9jYWwvYXV0aGVudGljYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJ1xuaW1wb3J0IHNjbXAgZnJvbSAnc2NtcCdcblxuaW1wb3J0IHR5cGUgeyBUeXBlV2l0aElEIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuXG50eXBlIERvYyA9IFR5cGVXaXRoSUQgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG50eXBlIEFyZ3MgPSB7XG4gIGRvYzogRG9jXG4gIHBhc3N3b3JkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGF1dGhlbnRpY2F0ZUxvY2FsU3RyYXRlZ3kgPSBhc3luYyAoeyBkb2MsIHBhc3N3b3JkIH06IEFyZ3MpOiBQcm9taXNlPERvYyB8IG51bGw+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IGhhc2gsIHNhbHQgfSA9IGRvY1xuXG4gICAgaWYgKHR5cGVvZiBzYWx0ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgaGFzaCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IG5ldyBQcm9taXNlPERvYyB8IG51bGw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY3J5cHRvLnBia2RmMihwYXNzd29yZCwgc2FsdCwgMjUwMDAsIDUxMiwgJ3NoYTI1NicsIChlLCBoYXNoQnVmZmVyKSA9PiB7XG4gICAgICAgICAgaWYgKGUpIHJlamVjdChudWxsKVxuXG4gICAgICAgICAgaWYgKHNjbXAoaGFzaEJ1ZmZlciwgQnVmZmVyLmZyb20oaGFzaCwgJ2hleCcpKSkge1xuICAgICAgICAgICAgcmVzb2x2ZShkb2MpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChudWxsKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiByZXNcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG4iXSwibmFtZXMiOlsiYXV0aGVudGljYXRlTG9jYWxTdHJhdGVneSIsImRvYyIsInBhc3N3b3JkIiwiaGFzaCIsInNhbHQiLCJyZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImNyeXB0byIsInBia2RmMiIsImUiLCJoYXNoQnVmZmVyIiwic2NtcCIsIkJ1ZmZlciIsImZyb20iLCJlcnIiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFZYUE7OztlQUFBQTs7OytEQVpNOzZEQUNGOzs7Ozs7QUFXVixNQUFNQSw0QkFBNEIsT0FBTyxFQUFFQyxHQUFHLEVBQUVDLFFBQVEsRUFBUTtJQUNyRSxJQUFJO1FBQ0YsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRSxHQUFHSDtRQUV2QixJQUFJLE9BQU9HLFNBQVMsWUFBWSxPQUFPRCxTQUFTLFVBQVU7WUFDeEQsTUFBTUUsTUFBTSxNQUFNLElBQUlDLFFBQW9CLENBQUNDLFNBQVNDO2dCQUNsREMsZUFBTSxDQUFDQyxNQUFNLENBQUNSLFVBQVVFLE1BQU0sT0FBTyxLQUFLLFVBQVUsQ0FBQ08sR0FBR0M7b0JBQ3RELElBQUlELEdBQUdILE9BQU87b0JBRWQsSUFBSUssSUFBQUEsYUFBSSxFQUFDRCxZQUFZRSxPQUFPQyxJQUFJLENBQUNaLE1BQU0sU0FBUzt3QkFDOUNJLFFBQVFOO29CQUNWLE9BQU87d0JBQ0xPLE9BQU87b0JBQ1Q7Z0JBQ0Y7WUFDRjtZQUVBLE9BQU9IO1FBQ1Q7UUFFQSxPQUFPO0lBQ1QsRUFBRSxPQUFPVyxLQUFLO1FBQ1osT0FBTztJQUNUO0FBQ0YifQ==