@lskjs/auth
Version:
LSK.js – auth – module for authorization by login and password and singup through social networks
97 lines (96 loc) • 4.96 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = createHelpers;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _env = require("@lskjs/env");
var _err = _interopRequireDefault(require("@lskjs/err"));
var _bcryptjs = _interopRequireDefault(require("bcryptjs"));
var _bluebird = _interopRequireDefault(require("bluebird"));
var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken"));
var _get = _interopRequireDefault(require("lodash/get"));
var _excluded = ["secret"]; // import Api from './BaseApi';
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var bcryptGenSalt = _bluebird["default"].promisify(_bcryptjs["default"].genSalt);
var bcryptHash = _bluebird["default"].promisify(_bcryptjs["default"].hash);
var bcryptCompare = _bluebird["default"].promisify(_bcryptjs["default"].compare);
var SALT_WORK_FACTOR = 10;
function hashPassword(_x) {
return _hashPassword.apply(this, arguments);
}
function _hashPassword() {
_hashPassword = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(password) {
var salt;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return bcryptGenSalt(SALT_WORK_FACTOR);
case 2:
salt = _context2.sent;
return _context2.abrupt("return", bcryptHash(password, salt));
case 4:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return _hashPassword.apply(this, arguments);
}
function createHelpers() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
app = _ref.app;
if (!app) throw new _err["default"]('!app');
var configJwt = (0, _get["default"])(app, 'config.auth.jwt', (0, _get["default"])(app, 'config.jwt', {}));
if (!configJwt.secret) {
app.log.error('app.config.jwt.secret IS EMPTY'); // eslint-disable-line no-console
if (!_env.isDev) {
throw new _err["default"]('auth.emptyJwtSecret');
}
}
var helpers = {
hashPassword: hashPassword,
setPassword: function setPassword(user, password) {
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return hashPassword(password);
case 2:
user.password = _context.sent;
case 3:
case "end":
return _context.stop();
}
}, _callee);
}))();
},
verifyPassword: function verifyPassword(password1, password2) {
// console.log('verifyPassword', password1, password2);
if (!password1 || !password2) return false;
return bcryptCompare(password1, password2);
},
generateAuthToken: function generateAuthToken(_ref2) {
var _id = _ref2._id,
role = _ref2.role;
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _configJwt$secret = configJwt.secret,
secret = _configJwt$secret === void 0 ? 'REPLACE_THIS_JS_SECRET_PLEASE' : _configJwt$secret,
options = (0, _objectWithoutProperties2["default"])(configJwt, _excluded);
// TODO переместить в modules.auth
return _jsonwebtoken["default"].sign(_objectSpread({
_id: _id,
role: role
}, params), secret, options || {});
}
};
return helpers;
}
//# sourceMappingURL=createHelpers.js.map