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"] = exports.AuthServerModule = void 0;
|
9 |
|
10 | var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
11 |
|
12 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
13 |
|
14 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
15 |
|
16 | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
17 |
|
18 | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
19 |
|
20 | var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
21 |
|
22 | var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
23 |
|
24 | var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
25 |
|
26 | var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
27 |
|
28 | var _err = _interopRequireDefault(require("@lskjs/err"));
|
29 |
|
30 | var _module = _interopRequireDefault(require("@lskjs/module"));
|
31 |
|
32 | var _asyncMapValues = _interopRequireDefault(require("@lskjs/utils/asyncMapValues"));
|
33 |
|
34 | var _importFn = _interopRequireDefault(require("@lskjs/utils/importFn"));
|
35 |
|
36 | var _forEach = _interopRequireDefault(require("lodash/forEach"));
|
37 |
|
38 | var _get3 = _interopRequireDefault(require("lodash/get"));
|
39 |
|
40 | var _passport = require("passport");
|
41 |
|
42 | var _strategies = _interopRequireDefault(require("./strategies"));
|
43 |
|
44 | var _createHelpers = _interopRequireDefault(require("./utils/createHelpers"));
|
45 |
|
46 | var _excluded = ["provider", "type"];
|
47 |
|
48 | function _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 |
|
50 | function _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 |
|
52 | var AuthServerModule = 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"])( _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"])( _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"])( _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 = {};
|
173 |
|
174 | this.helpers = (0, _createHelpers["default"])({
|
175 | app: this.app
|
176 | });
|
177 |
|
178 | this.strategyProviders = this.getStrategies();
|
179 | this.strategies = {};
|
180 | this.passportService = new _passport.Passport();
|
181 | providers = (0, _get3["default"])(this, 'config.providers', {});
|
182 |
|
183 | _context4.next = 10;
|
184 | return (0, _asyncMapValues["default"])(providers, function () {
|
185 | var _ref = (0, _asyncToGenerator2["default"])( _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 | });
|
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"])( _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"])( _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 |
|
363 | exports.AuthServerModule = AuthServerModule;
|
364 | var _default = AuthServerModule;
|
365 | exports["default"] = _default;
|
366 |
|
\ | No newline at end of file |