1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports["default"] = createHelpers;
|
9 |
|
10 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11 |
|
12 | var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
13 |
|
14 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
15 |
|
16 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
17 |
|
18 | var _env = require("@lskjs/env");
|
19 |
|
20 | var _err = _interopRequireDefault(require("@lskjs/err"));
|
21 |
|
22 | var _bcryptjs = _interopRequireDefault(require("bcryptjs"));
|
23 |
|
24 | var _bluebird = _interopRequireDefault(require("bluebird"));
|
25 |
|
26 | var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken"));
|
27 |
|
28 | var _get = _interopRequireDefault(require("lodash/get"));
|
29 |
|
30 | var _excluded = ["secret"];
|
31 |
|
32 | function 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 |
|
34 | function _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 |
|
36 | var bcryptGenSalt = _bluebird["default"].promisify(_bcryptjs["default"].genSalt);
|
37 |
|
38 | var bcryptHash = _bluebird["default"].promisify(_bcryptjs["default"].hash);
|
39 |
|
40 | var bcryptCompare = _bluebird["default"].promisify(_bcryptjs["default"].compare);
|
41 |
|
42 | var SALT_WORK_FACTOR = 10;
|
43 |
|
44 | function hashPassword(_x) {
|
45 | return _hashPassword.apply(this, arguments);
|
46 | }
|
47 |
|
48 | function _hashPassword() {
|
49 | _hashPassword = (0, _asyncToGenerator2["default"])( _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 |
|
72 | function 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');
|
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"])( _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 |
|
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);
|
121 |
|
122 | return _jsonwebtoken["default"].sign(_objectSpread({
|
123 | _id: _id,
|
124 | role: role
|
125 | }, params), secret, options || {});
|
126 | }
|
127 | };
|
128 | return helpers;
|
129 | }
|
130 |
|
\ | No newline at end of file |