UNPKG

24.5 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _typeof = require("@babel/runtime/helpers/typeof");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports["default"] = exports.AuthClientModule = void 0;
11
12var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
14var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
16var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
18var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
19
20var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
21
22var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
23
24var _get3 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
25
26var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
27
28var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
29
30var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
31
32var _env = require("@lskjs/env");
33
34var _module = _interopRequireDefault(require("@lskjs/module"));
35
36var _jsCookie = _interopRequireDefault(require("js-cookie"));
37
38var _get4 = _interopRequireDefault(require("lodash/get"));
39
40var _LocalStorage = _interopRequireDefault(require("./Storage/LocalStorage"));
41
42var _MemoryStorage = _interopRequireDefault(require("./Storage/MemoryStorage"));
43
44var _stores = _interopRequireDefault(require("./stores"));
45
46var _excluded = ["name"];
47
48function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
49
50function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
51
52function 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; }
53
54function _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; }
55
56function _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); }; }
57
58function _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; } }
59
60// const DEBUG = __DEV__ && __STAGE__ === 'isuvorov';
61// const DEBUG = false;
62var AuthClientModule = /*#__PURE__*/function (_Module) {
63 (0, _inherits2["default"])(AuthClientModule, _Module);
64
65 var _super = _createSuper(AuthClientModule);
66
67 function AuthClientModule() {
68 var _this;
69
70 (0, _classCallCheck2["default"])(this, AuthClientModule);
71
72 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
73 args[_key] = arguments[_key];
74 }
75
76 _this = _super.call.apply(_super, [this].concat(args));
77 _this.storages = {
78 MemoryStorage: _MemoryStorage["default"],
79 LocalStorage: _LocalStorage["default"]
80 };
81 return _this;
82 }
83
84 (0, _createClass2["default"])(AuthClientModule, [{
85 key: "init",
86 value: function () {
87 var _init = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
88 var _this$storages, _this$storages2;
89
90 var AuthStore;
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 (0, _get3["default"])((0, _getPrototypeOf2["default"])(AuthClientModule.prototype), "init", this).call(this);
97
98 case 2:
99 _context.next = 4;
100 return this.module('stores.AuthStore');
101
102 case 4:
103 AuthStore = _context.sent;
104 this.store = new AuthStore();
105
106 if (!(_env.isClient && (_this$storages = this.storages) !== null && _this$storages !== void 0 && _this$storages.LocalStorage)) {
107 _context.next = 10;
108 break;
109 }
110
111 this.localStorage = new this.storages.LocalStorage({
112 // memoryState: this.app.rootState,
113 config: (0, _get4["default"])(this, 'app.config.storage', {})
114 });
115 _context.next = 10;
116 return this.localStorage.init();
117
118 case 10:
119 if (!((_this$storages2 = this.storages) !== null && _this$storages2 !== void 0 && _this$storages2.MemoryStorage)) {
120 _context.next = 14;
121 break;
122 }
123
124 this.memoryStorage = new this.storages.MemoryStorage({
125 state: this.app.rootState,
126 config: (0, _get4["default"])(this, 'app.config.storage', {})
127 });
128 _context.next = 14;
129 return this.memoryStorage.init();
130
131 case 14:
132 case "end":
133 return _context.stop();
134 }
135 }
136 }, _callee, this);
137 }));
138
139 function init() {
140 return _init.apply(this, arguments);
141 }
142
143 return init;
144 }()
145 }, {
146 key: "getModules",
147 value: function () {
148 var _getModules = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
149 return _regenerator["default"].wrap(function _callee2$(_context2) {
150 while (1) {
151 switch (_context2.prev = _context2.next) {
152 case 0:
153 _context2.t0 = _objectSpread;
154 _context2.t1 = _objectSpread;
155 _context2.t2 = {};
156 _context2.next = 5;
157 return (0, _get3["default"])((0, _getPrototypeOf2["default"])(AuthClientModule.prototype), "getModules", this).call(this);
158
159 case 5:
160 _context2.t3 = _context2.sent;
161 _context2.t4 = (0, _context2.t1)(_context2.t2, _context2.t3);
162 _context2.t5 = {};
163 _context2.t6 = {
164 stores: [function () {
165 return Promise.resolve().then(function () {
166 return _interopRequireWildcard(require('@lskjs/mobx/mobxStores'));
167 });
168 }, {
169 stores: _stores["default"]
170 }]
171 };
172 return _context2.abrupt("return", (0, _context2.t0)(_context2.t4, _context2.t5, _context2.t6));
173
174 case 10:
175 case "end":
176 return _context2.stop();
177 }
178 }
179 }, _callee2, this);
180 }));
181
182 function getModules() {
183 return _getModules.apply(this, arguments);
184 }
185
186 return getModules;
187 }()
188 }, {
189 key: "run",
190 value: function () {
191 var _run = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
192 var _this2 = this;
193
194 return _regenerator["default"].wrap(function _callee3$(_context3) {
195 while (1) {
196 switch (_context3.prev = _context3.next) {
197 case 0:
198 _context3.next = 2;
199 return (0, _get3["default"])((0, _getPrototypeOf2["default"])(AuthClientModule.prototype), "run", this).call(this);
200
201 case 2:
202 _context3.next = 4;
203 return this.loadStore();
204
205 case 4:
206 if (_env.isClient && this.store.isAuth()) {
207 setTimeout(function () {
208 _this2.updateSession();
209 }, _env.isDev ? 10000 : 1000);
210 }
211
212 case 5:
213 case "end":
214 return _context3.stop();
215 }
216 }
217 }, _callee3, this);
218 }));
219
220 function run() {
221 return _run.apply(this, arguments);
222 }
223
224 return run;
225 }()
226 }, {
227 key: "setToken",
228 value: function () {
229 var _setToken = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(token) {
230 var expires,
231 cookies,
232 api,
233 _get2,
234 _get2$name,
235 name,
236 options,
237 _args4 = arguments;
238
239 return _regenerator["default"].wrap(function _callee4$(_context4) {
240 while (1) {
241 switch (_context4.prev = _context4.next) {
242 case 0:
243 expires = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : 365;
244 cookies = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : true;
245 if (this.debug) this.log.trace('AuthClientModule.setToken', token);
246
247 if (!this.app.hasModule('api')) {
248 _context4.next = 9;
249 break;
250 }
251
252 _context4.next = 6;
253 return this.app.module('api');
254
255 case 6:
256 api = _context4.sent;
257 _context4.next = 9;
258 return api.setToken(token);
259
260 case 9:
261 if (this.app.api) this.app.api.setAuthToken(token);
262 if (this.app.apiq) this.app.apiq.setToken(token);
263 if (this.memoryStorage) this.memoryStorage.set('req.token', token);
264 _get2 = (0, _get4["default"])(this.app, 'config.jwt.cookie', {}), _get2$name = _get2.name, name = _get2$name === void 0 ? 'token' : _get2$name, options = (0, _objectWithoutProperties2["default"])(_get2, _excluded);
265 if (this.debug) this.log.trace('AuthClientModule.setToken cookie', {
266 name: name,
267 options: options,
268 token: token
269 }, _env.isClient && cookies, _env.isClient, cookies);
270
271 if (_env.isClient && cookies) {
272 if (token == null) {
273 if (this.debug) this.log.trace('cookie.remove(name, options)', name, options);
274
275 _jsCookie["default"].remove(name, options);
276 } else {
277 if (this.debug) this.log.trace('cookie.set(name, token, { expires, ...options })', name, token, _objectSpread({
278 expires: expires
279 }, options));
280
281 _jsCookie["default"].set(name, token, _objectSpread({
282 expires: expires
283 }, options));
284 }
285 }
286
287 case 15:
288 case "end":
289 return _context4.stop();
290 }
291 }
292 }, _callee4, this);
293 }));
294
295 function setToken(_x) {
296 return _setToken.apply(this, arguments);
297 }
298
299 return setToken;
300 }()
301 }, {
302 key: "loadStore",
303 value: function () {
304 var _loadStore = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
305 var state, _session2, _yield$this$store$con, _session, session;
306
307 return _regenerator["default"].wrap(function _callee5$(_context5) {
308 while (1) {
309 switch (_context5.prev = _context5.next) {
310 case 0:
311 state = {};
312
313 if (this.memoryStorage) {
314 state = _objectSpread(_objectSpread({}, state), this.memoryStorage.get('auth'));
315 }
316
317 if (this.localStorage) {
318 state = _objectSpread(_objectSpread({}, state), this.localStorage.get('auth'));
319 }
320
321 if (!(!state.session && this.memoryStorage.get('req.user'))) {
322 _context5.next = 18;
323 break;
324 }
325
326 _session2 = {
327 _id: this.memoryStorage.get('req.user._id'),
328 user: this.memoryStorage.get('req.user'),
329 token: this.memoryStorage.get('req.token')
330 };
331 state = _objectSpread(_objectSpread({}, state), {}, {
332 session: _session2,
333 sessions: [_session2]
334 });
335
336 if (!_env.isServer) {
337 _context5.next = 18;
338 break;
339 }
340
341 _context5.prev = 7;
342 _context5.next = 10;
343 return this.store.constructor.api.session({
344 __init: true,
345 session: _session2
346 });
347
348 case 10:
349 _yield$this$store$con = _context5.sent;
350 _session = _yield$this$store$con.data;
351
352 if (_session && Object.keys(_session).length > 0 && _session2._id === _session._id) {
353 state.session = _session;
354 state.sessions = [_session];
355 }
356
357 _context5.next = 18;
358 break;
359
360 case 15:
361 _context5.prev = 15;
362 _context5.t0 = _context5["catch"](7);
363 this.log.error('loadStore session', _context5.t0);
364
365 case 18:
366 if (this.debug) this.log.trace('loadStore', state);
367 this.store.setState(state);
368 session = this.store.session;
369 _context5.next = 23;
370 return this.setToken(session ? session.token : null);
371
372 case 23:
373 case "end":
374 return _context5.stop();
375 }
376 }
377 }, _callee5, this, [[7, 15]]);
378 }));
379
380 function loadStore() {
381 return _loadStore.apply(this, arguments);
382 }
383
384 return loadStore;
385 }()
386 }, {
387 key: "saveStore",
388 value: function () {
389 var _saveStore = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
390 var state, token;
391 return _regenerator["default"].wrap(function _callee6$(_context6) {
392 while (1) {
393 switch (_context6.prev = _context6.next) {
394 case 0:
395 state = this.store.getState();
396 if (this.debug) this.log.trace('saveStore', state);
397 if (this.localStorage) this.localStorage.set('auth', state);
398 if (this.memoryStorage) this.memoryStorage.set('auth', state);
399 token = state.session ? state.session.token : null;
400 _context6.next = 7;
401 return this.setToken(token);
402
403 case 7:
404 case "end":
405 return _context6.stop();
406 }
407 }
408 }, _callee6, this);
409 }));
410
411 function saveStore() {
412 return _saveStore.apply(this, arguments);
413 }
414
415 return saveStore;
416 }()
417 }, {
418 key: "isAuth",
419 value: function isAuth() {
420 return this.store.isAuth();
421 }
422 }, {
423 key: "getSession",
424 value: function getSession() {
425 return this.store.getSession();
426 }
427 }, {
428 key: "getUserId",
429 value: function getUserId() {
430 return this.store.getUserId();
431 }
432 }, {
433 key: "logout",
434 value: function () {
435 var _logout = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
436 var redirect,
437 _args7 = arguments;
438 return _regenerator["default"].wrap(function _callee7$(_context7) {
439 while (1) {
440 switch (_context7.prev = _context7.next) {
441 case 0:
442 redirect = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : true;
443 _context7.next = 3;
444 return this.store.logout();
445
446 case 3:
447 _context7.next = 5;
448 return this.saveStore();
449
450 case 5:
451 if (redirect) this.app.redirect('/');
452
453 case 6:
454 case "end":
455 return _context7.stop();
456 }
457 }
458 }, _callee7, this);
459 }));
460
461 function logout() {
462 return _logout.apply(this, arguments);
463 }
464
465 return logout;
466 }()
467 }, {
468 key: "signup",
469 value: function () {
470 var _signup = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
471 var _this$store;
472
473 var res,
474 _args8 = arguments;
475 return _regenerator["default"].wrap(function _callee8$(_context8) {
476 while (1) {
477 switch (_context8.prev = _context8.next) {
478 case 0:
479 _context8.next = 2;
480 return (_this$store = this.store).signup.apply(_this$store, _args8);
481
482 case 2:
483 res = _context8.sent;
484 _context8.next = 5;
485 return this.saveStore();
486
487 case 5:
488 return _context8.abrupt("return", res);
489
490 case 6:
491 case "end":
492 return _context8.stop();
493 }
494 }
495 }, _callee8, this);
496 }));
497
498 function signup() {
499 return _signup.apply(this, arguments);
500 }
501
502 return signup;
503 }()
504 }, {
505 key: "login",
506 value: function () {
507 var _login = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
508 var _this$log, _this$store2;
509
510 var _len2,
511 args,
512 _key2,
513 res,
514 _args9 = arguments;
515
516 return _regenerator["default"].wrap(function _callee9$(_context9) {
517 while (1) {
518 switch (_context9.prev = _context9.next) {
519 case 0:
520 for (_len2 = _args9.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
521 args[_key2] = _args9[_key2];
522 }
523
524 (_this$log = this.log).debug.apply(_this$log, ['login'].concat(args));
525
526 _context9.next = 4;
527 return (_this$store2 = this.store).login.apply(_this$store2, args);
528
529 case 4:
530 res = _context9.sent;
531 this.log.trace('login res', res);
532 _context9.next = 8;
533 return this.saveStore();
534
535 case 8:
536 return _context9.abrupt("return", res);
537
538 case 9:
539 case "end":
540 return _context9.stop();
541 }
542 }
543 }, _callee9, this);
544 }));
545
546 function login() {
547 return _login.apply(this, arguments);
548 }
549
550 return login;
551 }()
552 }, {
553 key: "updateSession",
554 value: function () {
555 var _updateSession = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
556 var _this$store3,
557 res,
558 _args10 = arguments;
559
560 return _regenerator["default"].wrap(function _callee10$(_context10) {
561 while (1) {
562 switch (_context10.prev = _context10.next) {
563 case 0:
564 _context10.prev = 0;
565 _context10.next = 3;
566 return (_this$store3 = this.store).updateSession.apply(_this$store3, _args10);
567
568 case 3:
569 res = _context10.sent;
570 _context10.next = 6;
571 return this.saveStore();
572
573 case 6:
574 return _context10.abrupt("return", res);
575
576 case 9:
577 _context10.prev = 9;
578 _context10.t0 = _context10["catch"](0);
579
580 if (!(_context10.t0.code === 'auth.userNotFound')) {
581 _context10.next = 14;
582 break;
583 }
584
585 _context10.next = 14;
586 return this.logout();
587
588 case 14:
589 throw _context10.t0;
590
591 case 15:
592 case "end":
593 return _context10.stop();
594 }
595 }
596 }, _callee10, this, [[0, 9]]);
597 }));
598
599 function updateSession() {
600 return _updateSession.apply(this, arguments);
601 }
602
603 return updateSession;
604 }()
605 }, {
606 key: "confirm",
607 value: function confirm(values) {
608 return this.app.api.fetch('/api/auth/permit/confirm', {
609 method: 'POST',
610 data: values
611 });
612 }
613 }, {
614 key: "restorePassword",
615 value: function restorePassword(_ref) {
616 var email = _ref.email;
617 return this.app.api.fetch('/api/auth/restorePassword', {
618 method: 'POST',
619 data: {
620 email: email
621 }
622 });
623 }
624 }, {
625 key: "setPassword",
626 value: function setPassword(_ref2) {
627 var permitId = _ref2.permitId,
628 code = _ref2.code,
629 password = _ref2.password;
630 return this.app.api.fetch('/api/auth/setPassword', {
631 method: 'POST',
632 data: {
633 permitId: permitId,
634 code: code,
635 password: password
636 }
637 });
638 }
639 }, {
640 key: "confirmEmail",
641 value: function confirmEmail(_ref3) {
642 var permitId = _ref3.permitId,
643 code = _ref3.code;
644 return this.app.api.fetch('/api/auth/confirmEmail', {
645 method: 'POST',
646 data: {
647 permitId: permitId,
648 code: code
649 }
650 });
651 }
652 }, {
653 key: "setData",
654 value: function setData() {
655 var _this$store4;
656
657 return (_this$store4 = this.store).setData.apply(_this$store4, arguments);
658 }
659 }, {
660 key: "loginPassport",
661 value: function loginPassport(data) {
662 return this.applyPromiseAndFetchProfile(this.app.api.authLoginPassport(data));
663 }
664 }, {
665 key: "authPassport",
666 value: function authPassport(provider) {
667 if (typeof window !== 'undefined') window.location = "/api/module/auth/".concat(provider);
668 }
669 }]);
670 return AuthClientModule;
671}(_module["default"]); // export default ctx => ({
672// init() {
673// // this.components = require('./uapp/components').default(ctx);
674// // this.socials = require('./uapp/socials').default;// (ctx);
675// // this.models = require('./uapp/models').default(ctx);
676// this.stores = require('./uapp/stores').default(ctx);
677// // this.router = require('./uapp/router').default;
678// },
679// // getStores
680// });
681
682
683exports.AuthClientModule = AuthClientModule;
684var _default = AuthClientModule;
685exports["default"] = _default;
686//# sourceMappingURL=AuthClientModule.js.map
\No newline at end of file