UNPKG

@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
"use strict"; 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