UNPKG

13 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = exports.AuthServerModule = void 0;
9
10var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
12var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
14var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
16var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
18var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
20var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
21
22var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
24var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
26var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
28var _err = _interopRequireDefault(require("@lskjs/err"));
29
30var _module = _interopRequireDefault(require("@lskjs/module"));
31
32var _asyncMapValues = _interopRequireDefault(require("@lskjs/utils/asyncMapValues"));
33
34var _importFn = _interopRequireDefault(require("@lskjs/utils/importFn"));
35
36var _forEach = _interopRequireDefault(require("lodash/forEach"));
37
38var _get3 = _interopRequireDefault(require("lodash/get"));
39
40var _passport = require("passport");
41
42var _strategies = _interopRequireDefault(require("./strategies"));
43
44var _createHelpers = _interopRequireDefault(require("./utils/createHelpers"));
45
46var _excluded = ["provider", "type"];
47
48function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
49
50function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
51
52var AuthServerModule = /*#__PURE__*/function (_Module) {
53 (0, _inherits2["default"])(AuthServerModule, _Module);
54
55 var _super = _createSuper(AuthServerModule);
56
57 function AuthServerModule() {
58 (0, _classCallCheck2["default"])(this, AuthServerModule);
59 return _super.apply(this, arguments);
60 }
61
62 (0, _createClass2["default"])(AuthServerModule, [{
63 key: "getStrategies",
64 value: function getStrategies() {
65 return _strategies["default"];
66 }
67 }, {
68 key: "getPassportStrategy",
69 value: function getPassportStrategy(passport) {
70 var strategy = this.strategies[passport.provider];
71
72 if (!strategy) {
73 this.log.error('AuthModule !strategy');
74 }
75
76 return strategy;
77 }
78 }, {
79 key: "updatePassportTokens",
80 value: function () {
81 var _updatePassportTokens = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(passport) {
82 var strategy,
83 _len,
84 args,
85 _key,
86 _args = arguments;
87
88 return _regenerator["default"].wrap(function _callee$(_context) {
89 while (1) {
90 switch (_context.prev = _context.next) {
91 case 0:
92 strategy = this.getPassportStrategy(passport);
93
94 for (_len = _args.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
95 args[_key - 1] = _args[_key];
96 }
97
98 _context.next = 4;
99 return strategy.updateTokens.apply(strategy, [passport].concat(args));
100
101 case 4:
102 case "end":
103 return _context.stop();
104 }
105 }
106 }, _callee, this);
107 }));
108
109 function updatePassportTokens(_x) {
110 return _updatePassportTokens.apply(this, arguments);
111 }
112
113 return updatePassportTokens;
114 }()
115 }, {
116 key: "updatePassportData",
117 value: function () {
118 var _updatePassportData = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(passport) {
119 var strategy;
120 return _regenerator["default"].wrap(function _callee2$(_context2) {
121 while (1) {
122 switch (_context2.prev = _context2.next) {
123 case 0:
124 strategy = this.getPassportStrategy(passport);
125
126 if (strategy) {
127 _context2.next = 3;
128 break;
129 }
130
131 return _context2.abrupt("return");
132
133 case 3:
134 _context2.next = 5;
135 return strategy.updateTokens(passport);
136
137 case 5:
138 _context2.next = 7;
139 return strategy.updatePassport({
140 passport: passport
141 });
142
143 case 7:
144 case "end":
145 return _context2.stop();
146 }
147 }
148 }, _callee2, this);
149 }));
150
151 function updatePassportData(_x2) {
152 return _updatePassportData.apply(this, arguments);
153 }
154
155 return updatePassportData;
156 }()
157 }, {
158 key: "init",
159 value: function () {
160 var _init = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
161 var _this = this;
162
163 var providers;
164 return _regenerator["default"].wrap(function _callee4$(_context4) {
165 while (1) {
166 switch (_context4.prev = _context4.next) {
167 case 0:
168 _context4.next = 2;
169 return (0, _get2["default"])((0, _getPrototypeOf2["default"])(AuthServerModule.prototype), "init", this).call(this);
170
171 case 2:
172 if (!this.config.socials) this.config.socials = {}; // this.models = this.getModels();
173
174 this.helpers = (0, _createHelpers["default"])({
175 app: this.app
176 }); // TODO: потом надо будет по другому кидать app, а еще лучше вообще не кидать
177
178 this.strategyProviders = this.getStrategies();
179 this.strategies = {};
180 this.passportService = new _passport.Passport();
181 providers = (0, _get3["default"])(this, 'config.providers', {}); // console.log({ providers });
182
183 _context4.next = 10;
184 return (0, _asyncMapValues["default"])(providers, /*#__PURE__*/function () {
185 var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(config) {
186 var provider, type, strategyConfig, StrategyProvider, strategy;
187 return _regenerator["default"].wrap(function _callee3$(_context3) {
188 while (1) {
189 switch (_context3.prev = _context3.next) {
190 case 0:
191 provider = config.provider, type = config.type, strategyConfig = (0, _objectWithoutProperties2["default"])(config, _excluded);
192 _context3.next = 3;
193 return (0, _importFn["default"])(_this.strategyProviders[type]);
194
195 case 3:
196 StrategyProvider = _context3.sent;
197
198 if (StrategyProvider) {
199 _context3.next = 6;
200 break;
201 }
202
203 return _context3.abrupt("return");
204
205 case 6:
206 strategy = new StrategyProvider({
207 __parent: _this,
208 app: _this.app,
209 provider: provider,
210 type: type,
211 config: strategyConfig
212 }); // console.log({strategy});
213
214 if (strategy) {
215 _context3.next = 9;
216 break;
217 }
218
219 return _context3.abrupt("return");
220
221 case 9:
222 _this.strategies[provider] = strategy;
223
224 case 10:
225 case "end":
226 return _context3.stop();
227 }
228 }
229 }, _callee3);
230 }));
231
232 return function (_x3) {
233 return _ref.apply(this, arguments);
234 };
235 }());
236
237 case 10:
238 case "end":
239 return _context4.stop();
240 }
241 }
242 }, _callee4, this);
243 }));
244
245 function init() {
246 return _init.apply(this, arguments);
247 }
248
249 return init;
250 }()
251 }, {
252 key: "getAuthSession",
253 value: function () {
254 var _getAuthSession = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(req) {
255 var _req$data, _req$data2, _req$data2$session;
256
257 var userId, UserModel, user, token;
258 return _regenerator["default"].wrap(function _callee5$(_context5) {
259 while (1) {
260 switch (_context5.prev = _context5.next) {
261 case 0:
262 if ((_req$data = req.data) !== null && _req$data !== void 0 && _req$data.__init && (_req$data2 = req.data) !== null && _req$data2 !== void 0 && (_req$data2$session = _req$data2.session) !== null && _req$data2$session !== void 0 && _req$data2$session.user) {
263 req.user = req.data.session.user;
264 }
265
266 userId = req.user && req.user._id;
267
268 if (userId) {
269 _context5.next = 4;
270 break;
271 }
272
273 return _context5.abrupt("return", {});
274
275 case 4:
276 _context5.next = 6;
277 return this.app.module('models.UserModel');
278
279 case 6:
280 UserModel = _context5.sent;
281 _context5.next = 9;
282 return UserModel.findOne({
283 _id: userId
284 });
285
286 case 9:
287 user = _context5.sent;
288
289 if (user) {
290 _context5.next = 12;
291 break;
292 }
293
294 throw new _err["default"]('auth.userNotFound', {
295 status: 404
296 });
297
298 case 12:
299 token = this.helpers.generateAuthToken(user);
300 _context5.t0 = userId;
301 _context5.t1 = token;
302 _context5.next = 17;
303 return UserModel.prepare(user, {
304 req: req,
305 view: 'extended'
306 });
307
308 case 17:
309 _context5.t2 = _context5.sent;
310 return _context5.abrupt("return", {
311 _id: _context5.t0,
312 token: _context5.t1,
313 user: _context5.t2
314 });
315
316 case 19:
317 case "end":
318 return _context5.stop();
319 }
320 }
321 }, _callee5, this);
322 }));
323
324 function getAuthSession(_x4) {
325 return _getAuthSession.apply(this, arguments);
326 }
327
328 return getAuthSession;
329 }()
330 }, {
331 key: "run",
332 value: function () {
333 var _run = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
334 var _this2 = this;
335
336 return _regenerator["default"].wrap(function _callee6$(_context6) {
337 while (1) {
338 switch (_context6.prev = _context6.next) {
339 case 0:
340 this.log.debug('strategies', Object.keys(this.strategies));
341 (0, _forEach["default"])(this.strategies || [], function (strategy) {
342 _this2.passportService.use(strategy.getPassportStrategy());
343 });
344
345 case 2:
346 case "end":
347 return _context6.stop();
348 }
349 }
350 }, _callee6, this);
351 }));
352
353 function run() {
354 return _run.apply(this, arguments);
355 }
356
357 return run;
358 }()
359 }]);
360 return AuthServerModule;
361}(_module["default"]);
362
363exports.AuthServerModule = AuthServerModule;
364var _default = AuthServerModule;
365exports["default"] = _default;
366//# sourceMappingURL=AuthServerModule.js.map
\No newline at end of file