UNPKG

5.07 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = createHelpers;
9
10var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
12var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
14var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
16var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
18var _env = require("@lskjs/env");
19
20var _err = _interopRequireDefault(require("@lskjs/err"));
21
22var _bcryptjs = _interopRequireDefault(require("bcryptjs"));
23
24var _bluebird = _interopRequireDefault(require("bluebird"));
25
26var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken"));
27
28var _get = _interopRequireDefault(require("lodash/get"));
29
30var _excluded = ["secret"];
31
32function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
34function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
36var bcryptGenSalt = _bluebird["default"].promisify(_bcryptjs["default"].genSalt);
37
38var bcryptHash = _bluebird["default"].promisify(_bcryptjs["default"].hash);
39
40var bcryptCompare = _bluebird["default"].promisify(_bcryptjs["default"].compare);
41
42var SALT_WORK_FACTOR = 10;
43
44function hashPassword(_x) {
45 return _hashPassword.apply(this, arguments);
46}
47
48function _hashPassword() {
49 _hashPassword = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(password) {
50 var salt;
51 return _regenerator["default"].wrap(function _callee2$(_context2) {
52 while (1) {
53 switch (_context2.prev = _context2.next) {
54 case 0:
55 _context2.next = 2;
56 return bcryptGenSalt(SALT_WORK_FACTOR);
57
58 case 2:
59 salt = _context2.sent;
60 return _context2.abrupt("return", bcryptHash(password, salt));
61
62 case 4:
63 case "end":
64 return _context2.stop();
65 }
66 }
67 }, _callee2);
68 }));
69 return _hashPassword.apply(this, arguments);
70}
71
72function createHelpers() {
73 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
74 app = _ref.app;
75
76 if (!app) throw new _err["default"]('!app');
77 var configJwt = (0, _get["default"])(app, 'config.auth.jwt', (0, _get["default"])(app, 'config.jwt', {}));
78
79 if (!configJwt.secret) {
80 app.log.error('app.config.jwt.secret IS EMPTY'); // eslint-disable-line no-console
81
82 if (!_env.isDev) {
83 throw new _err["default"]('auth.emptyJwtSecret');
84 }
85 }
86
87 var helpers = {
88 hashPassword: hashPassword,
89 setPassword: function setPassword(user, password) {
90 return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
91 return _regenerator["default"].wrap(function _callee$(_context) {
92 while (1) {
93 switch (_context.prev = _context.next) {
94 case 0:
95 _context.next = 2;
96 return hashPassword(password);
97
98 case 2:
99 user.password = _context.sent;
100
101 case 3:
102 case "end":
103 return _context.stop();
104 }
105 }
106 }, _callee);
107 }))();
108 },
109 verifyPassword: function verifyPassword(password1, password2) {
110 // console.log('verifyPassword', password1, password2);
111 if (!password1 || !password2) return false;
112 return bcryptCompare(password1, password2);
113 },
114 generateAuthToken: function generateAuthToken(_ref2) {
115 var _id = _ref2._id,
116 role = _ref2.role;
117 var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
118 var _configJwt$secret = configJwt.secret,
119 secret = _configJwt$secret === void 0 ? 'REPLACE_THIS_JS_SECRET_PLEASE' : _configJwt$secret,
120 options = (0, _objectWithoutProperties2["default"])(configJwt, _excluded); // TODO переместить в modules.auth
121
122 return _jsonwebtoken["default"].sign(_objectSpread({
123 _id: _id,
124 role: role
125 }, params), secret, options || {});
126 }
127 };
128 return helpers;
129}
130//# sourceMappingURL=createHelpers.js.map
\No newline at end of file