UNPKG

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