dauth-context-react 1.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -357,92 +357,83 @@ var sendEmailVerificationAPI = /*#__PURE__*/function () {
357
357
  return _ref3.apply(this, arguments);
358
358
  };
359
359
  }();
360
- var refreshAccessTokenAPI = /*#__PURE__*/function () {
361
- var _ref4 = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(domainName, token) {
360
+ var refreshTokenAPI = /*#__PURE__*/function () {
361
+ var _ref5 = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(domainName, refreshToken) {
362
362
  var params, response, data;
363
- return _regenerator().w(function (_context4) {
364
- while (1) switch (_context4.n) {
363
+ return _regenerator().w(function (_context5) {
364
+ while (1) switch (_context5.n) {
365
365
  case 0:
366
366
  params = {
367
- method: 'GET',
367
+ method: 'POST',
368
368
  headers: {
369
- Authorization: token,
370
369
  'Content-Type': 'application/json'
371
- }
370
+ },
371
+ body: JSON.stringify({
372
+ refreshToken: refreshToken
373
+ })
372
374
  };
373
- _context4.n = 1;
374
- return fetch(getServerBasePath() + "/app/" + domainName + "/refresh-access-token", params);
375
+ _context5.n = 1;
376
+ return fetch(getServerBasePath() + "/app/" + domainName + "/refresh-token", params);
375
377
  case 1:
376
- response = _context4.v;
377
- _context4.n = 2;
378
+ response = _context5.v;
379
+ _context5.n = 2;
378
380
  return response.json();
379
381
  case 2:
380
- data = _context4.v;
381
- return _context4.a(2, {
382
+ data = _context5.v;
383
+ return _context5.a(2, {
382
384
  response: response,
383
385
  data: data
384
386
  });
385
387
  }
386
- }, _callee4);
388
+ }, _callee5);
387
389
  }));
388
- return function refreshAccessTokenAPI(_x8, _x9) {
389
- return _ref4.apply(this, arguments);
390
+ return function refreshTokenAPI(_x0, _x1) {
391
+ return _ref5.apply(this, arguments);
390
392
  };
391
393
  }();
392
- var verifyTokenAPI = /*#__PURE__*/function () {
393
- var _ref6 = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(_ref5) {
394
- var domainName, tsk, token, params, response, data;
395
- return _regenerator().w(function (_context5) {
396
- while (1) switch (_context5.n) {
394
+ var logoutAPI = /*#__PURE__*/function () {
395
+ var _ref6 = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(domainName, refreshToken) {
396
+ var params, response;
397
+ return _regenerator().w(function (_context6) {
398
+ while (1) switch (_context6.n) {
397
399
  case 0:
398
- domainName = _ref5.domainName, tsk = _ref5.tsk, token = _ref5.token;
399
400
  params = {
400
401
  method: 'POST',
401
402
  headers: {
402
- Authorization: token,
403
403
  'Content-Type': 'application/json'
404
404
  },
405
405
  body: JSON.stringify({
406
- tsk: tsk
406
+ refreshToken: refreshToken
407
407
  })
408
408
  };
409
- _context5.n = 1;
410
- return fetch(getServerBasePath() + "/app/" + domainName + "/verify-token", params);
409
+ _context6.n = 1;
410
+ return fetch(getServerBasePath() + "/app/" + domainName + "/logout", params);
411
411
  case 1:
412
- response = _context5.v;
413
- _context5.n = 2;
414
- return response.json();
415
- case 2:
416
- data = _context5.v;
417
- return _context5.a(2, {
418
- response: response,
419
- data: data
412
+ response = _context6.v;
413
+ return _context6.a(2, {
414
+ response: response
420
415
  });
421
416
  }
422
- }, _callee5);
417
+ }, _callee6);
423
418
  }));
424
- return function verifyTokenAPI(_x0) {
419
+ return function logoutAPI(_x10, _x11) {
425
420
  return _ref6.apply(this, arguments);
426
421
  };
427
422
  }();
428
423
 
429
424
  var TOKEN_LS = 'dauth_state';
430
-
431
- var routes = {
432
- signin: 'signin',
433
- updateUser: 'update-user'
434
- };
425
+ var REFRESH_TOKEN_LS = 'dauth_refresh_token';
435
426
 
436
427
  function setDauthStateAction(_x) {
437
428
  return _setDauthStateAction.apply(this, arguments);
438
429
  }
439
430
  function _setDauthStateAction() {
440
431
  _setDauthStateAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
441
- var dispatch, token, domainName, getUserFetch, _t;
432
+ var dispatch, token, refreshToken, domainName, getUserFetch, _t;
442
433
  return _regenerator().w(function (_context) {
443
434
  while (1) switch (_context.p = _context.n) {
444
435
  case 0:
445
- dispatch = _ref.dispatch, token = _ref.token, domainName = _ref.domainName;
436
+ dispatch = _ref.dispatch, token = _ref.token, refreshToken = _ref.refreshToken, domainName = _ref.domainName;
446
437
  dispatch({
447
438
  type: SET_IS_LOADING,
448
439
  payload: {
@@ -467,7 +458,9 @@ function _setDauthStateAction() {
467
458
  }
468
459
  });
469
460
  window.history.replaceState({}, document.title, window.location.pathname);
470
- return _context.a(2, localStorage.setItem(TOKEN_LS, token));
461
+ localStorage.setItem(TOKEN_LS, token);
462
+ localStorage.setItem(REFRESH_TOKEN_LS, refreshToken);
463
+ return _context.a(2);
471
464
  case 3:
472
465
  return _context.a(2, resetUser(dispatch));
473
466
  case 4:
@@ -499,29 +492,45 @@ function setAutoLoginAction(_x2) {
499
492
  }
500
493
  function _setAutoLoginAction() {
501
494
  _setAutoLoginAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref2) {
502
- var dispatch, token_ls, domainName, refreshAccessTokenFetch, newToken, getUserFetch, _t2;
495
+ var dispatch, domainName, storedRefreshToken, refreshResult, newAccessToken, newRefreshToken, getUserFetch, _t2;
503
496
  return _regenerator().w(function (_context2) {
504
497
  while (1) switch (_context2.p = _context2.n) {
505
498
  case 0:
506
- dispatch = _ref2.dispatch, token_ls = _ref2.token_ls, domainName = _ref2.domainName;
499
+ dispatch = _ref2.dispatch, domainName = _ref2.domainName;
507
500
  dispatch({
508
501
  type: SET_IS_LOADING,
509
502
  payload: {
510
503
  isLoading: true
511
504
  }
512
505
  });
506
+ storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);
507
+ if (storedRefreshToken) {
508
+ _context2.n = 1;
509
+ break;
510
+ }
511
+ dispatch({
512
+ type: SET_IS_LOADING,
513
+ payload: {
514
+ isLoading: false
515
+ }
516
+ });
517
+ return _context2.a(2, resetUser(dispatch));
518
+ case 1:
513
519
  _context2.p = 1;
514
520
  _context2.n = 2;
515
- return refreshAccessTokenAPI(domainName, token_ls);
521
+ return refreshTokenAPI(domainName, storedRefreshToken);
516
522
  case 2:
517
- refreshAccessTokenFetch = _context2.v;
518
- if (!(refreshAccessTokenFetch.response.status === 200)) {
519
- _context2.n = 6;
523
+ refreshResult = _context2.v;
524
+ if (!(refreshResult.response.status === 200)) {
525
+ _context2.n = 4;
520
526
  break;
521
527
  }
522
- newToken = refreshAccessTokenFetch.data.accessToken || token_ls;
528
+ newAccessToken = refreshResult.data.accessToken;
529
+ newRefreshToken = refreshResult.data.refreshToken;
530
+ localStorage.setItem(TOKEN_LS, newAccessToken);
531
+ localStorage.setItem(REFRESH_TOKEN_LS, newRefreshToken);
523
532
  _context2.n = 3;
524
- return getUserAPI(domainName, newToken);
533
+ return getUserAPI(domainName, newAccessToken);
525
534
  case 3:
526
535
  getUserFetch = _context2.v;
527
536
  if (!(getUserFetch.response.status === 200)) {
@@ -536,132 +545,197 @@ function _setAutoLoginAction() {
536
545
  isAuthenticated: true
537
546
  }
538
547
  });
539
- localStorage.setItem(TOKEN_LS, refreshAccessTokenFetch.data.accessToken);
540
548
  return _context2.a(2);
541
549
  case 4:
542
- window.location.replace(getClientBasePath() + "/" + domainName + "/" + routes.signin);
543
- return _context2.a(2, resetUser(dispatch));
544
- case 5:
545
- _context2.n = 7;
546
- break;
547
- case 6:
548
- window.location.replace(getClientBasePath() + "/" + domainName + "/" + routes.signin);
549
- return _context2.a(2, resetUser(dispatch));
550
- case 7:
551
- _context2.n = 9;
550
+ // Refresh failed session expired
551
+ resetUser(dispatch);
552
+ _context2.n = 6;
552
553
  break;
553
- case 8:
554
- _context2.p = 8;
554
+ case 5:
555
+ _context2.p = 5;
555
556
  _t2 = _context2.v;
556
557
  console.error(_t2);
557
- return _context2.a(2, resetUser(dispatch));
558
- case 9:
559
- _context2.p = 9;
558
+ resetUser(dispatch);
559
+ case 6:
560
+ _context2.p = 6;
560
561
  dispatch({
561
562
  type: SET_IS_LOADING,
562
563
  payload: {
563
564
  isLoading: false
564
565
  }
565
566
  });
566
- return _context2.f(9);
567
- case 10:
567
+ return _context2.f(6);
568
+ case 7:
568
569
  return _context2.a(2);
569
570
  }
570
- }, _callee2, null, [[1, 8, 9, 10]]);
571
+ }, _callee2, null, [[1, 5, 6, 7]]);
571
572
  }));
572
573
  return _setAutoLoginAction.apply(this, arguments);
573
574
  }
574
- function setLogoutAction(_ref3) {
575
- var dispatch = _ref3.dispatch;
576
- dispatch({
577
- type: SET_IS_LOADING,
578
- payload: {
579
- isLoading: true
580
- }
581
- });
582
- dispatch({
583
- type: LOGIN,
584
- payload: {
585
- user: {
586
- language: window.document.documentElement.getAttribute('lang') || 'es'
587
- },
588
- domain: {},
589
- isAuthenticated: false
590
- }
591
- });
592
- localStorage.removeItem(TOKEN_LS);
593
- return dispatch({
594
- type: SET_IS_LOADING,
595
- payload: {
596
- isLoading: false
597
- }
598
- });
575
+ function setLogoutAction(_x3) {
576
+ return _setLogoutAction.apply(this, arguments);
599
577
  }
600
- function setUpdateUserAction(_x3) {
578
+ function _setLogoutAction() {
579
+ _setLogoutAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(_ref3) {
580
+ var dispatch, domainName, storedRefreshToken;
581
+ return _regenerator().w(function (_context3) {
582
+ while (1) switch (_context3.p = _context3.n) {
583
+ case 0:
584
+ dispatch = _ref3.dispatch, domainName = _ref3.domainName;
585
+ storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);
586
+ if (!(storedRefreshToken && domainName)) {
587
+ _context3.n = 4;
588
+ break;
589
+ }
590
+ _context3.p = 1;
591
+ _context3.n = 2;
592
+ return logoutAPI(domainName, storedRefreshToken);
593
+ case 2:
594
+ _context3.n = 4;
595
+ break;
596
+ case 3:
597
+ _context3.p = 3;
598
+ case 4:
599
+ dispatch({
600
+ type: SET_IS_LOADING,
601
+ payload: {
602
+ isLoading: true
603
+ }
604
+ });
605
+ dispatch({
606
+ type: LOGIN,
607
+ payload: {
608
+ user: {
609
+ language: window.document.documentElement.getAttribute('lang') || 'es'
610
+ },
611
+ domain: {},
612
+ isAuthenticated: false
613
+ }
614
+ });
615
+ localStorage.removeItem(TOKEN_LS);
616
+ localStorage.removeItem(REFRESH_TOKEN_LS);
617
+ return _context3.a(2, dispatch({
618
+ type: SET_IS_LOADING,
619
+ payload: {
620
+ isLoading: false
621
+ }
622
+ }));
623
+ }
624
+ }, _callee3, null, [[1, 3]]);
625
+ }));
626
+ return _setLogoutAction.apply(this, arguments);
627
+ }
628
+ function refreshSessionAction(_x4) {
629
+ return _refreshSessionAction.apply(this, arguments);
630
+ }
631
+ function _refreshSessionAction() {
632
+ _refreshSessionAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(_ref4) {
633
+ var dispatch, domainName, storedRefreshToken, refreshResult, _t4;
634
+ return _regenerator().w(function (_context4) {
635
+ while (1) switch (_context4.p = _context4.n) {
636
+ case 0:
637
+ dispatch = _ref4.dispatch, domainName = _ref4.domainName;
638
+ storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);
639
+ if (storedRefreshToken) {
640
+ _context4.n = 1;
641
+ break;
642
+ }
643
+ return _context4.a(2, resetUser(dispatch));
644
+ case 1:
645
+ _context4.p = 1;
646
+ _context4.n = 2;
647
+ return refreshTokenAPI(domainName, storedRefreshToken);
648
+ case 2:
649
+ refreshResult = _context4.v;
650
+ if (!(refreshResult.response.status === 200)) {
651
+ _context4.n = 3;
652
+ break;
653
+ }
654
+ localStorage.setItem(TOKEN_LS, refreshResult.data.accessToken);
655
+ localStorage.setItem(REFRESH_TOKEN_LS, refreshResult.data.refreshToken);
656
+ return _context4.a(2);
657
+ case 3:
658
+ // Refresh failed — revoked or expired
659
+ resetUser(dispatch);
660
+ _context4.n = 5;
661
+ break;
662
+ case 4:
663
+ _context4.p = 4;
664
+ _t4 = _context4.v;
665
+ console.error(_t4);
666
+ resetUser(dispatch);
667
+ case 5:
668
+ return _context4.a(2);
669
+ }
670
+ }, _callee4, null, [[1, 4]]);
671
+ }));
672
+ return _refreshSessionAction.apply(this, arguments);
673
+ }
674
+ function setUpdateUserAction(_x5) {
601
675
  return _setUpdateUserAction.apply(this, arguments);
602
676
  }
603
677
  function _setUpdateUserAction() {
604
- _setUpdateUserAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(_ref4) {
605
- var dispatch, domainName, user, token, getUserFetch, _t3;
606
- return _regenerator().w(function (_context3) {
607
- while (1) switch (_context3.p = _context3.n) {
678
+ _setUpdateUserAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(_ref5) {
679
+ var dispatch, domainName, user, token, getUserFetch, _t5;
680
+ return _regenerator().w(function (_context5) {
681
+ while (1) switch (_context5.p = _context5.n) {
608
682
  case 0:
609
- dispatch = _ref4.dispatch, domainName = _ref4.domainName, user = _ref4.user, token = _ref4.token;
683
+ dispatch = _ref5.dispatch, domainName = _ref5.domainName, user = _ref5.user, token = _ref5.token;
610
684
  if (user.language) {
611
685
  window.document.documentElement.setAttribute('lang', user.language);
612
686
  }
613
687
  if (token) {
614
- _context3.n = 1;
688
+ _context5.n = 1;
615
689
  break;
616
690
  }
617
691
  dispatch({
618
692
  type: UPDATE_USER,
619
693
  payload: user
620
694
  });
621
- return _context3.a(2, false);
695
+ return _context5.a(2, false);
622
696
  case 1:
623
- _context3.p = 1;
624
- _context3.n = 2;
697
+ _context5.p = 1;
698
+ _context5.n = 2;
625
699
  return updateUserAPI(domainName, user, token);
626
700
  case 2:
627
- getUserFetch = _context3.v;
701
+ getUserFetch = _context5.v;
628
702
  if (!(getUserFetch.response.status === 200)) {
629
- _context3.n = 3;
703
+ _context5.n = 3;
630
704
  break;
631
705
  }
632
706
  dispatch({
633
707
  type: UPDATE_USER,
634
708
  payload: getUserFetch.data.user
635
709
  });
636
- return _context3.a(2, true);
710
+ return _context5.a(2, true);
637
711
  case 3:
638
712
  console.error('Update user error', getUserFetch.data.message);
639
- return _context3.a(2, false);
713
+ return _context5.a(2, false);
640
714
  case 4:
641
- _context3.n = 6;
715
+ _context5.n = 6;
642
716
  break;
643
717
  case 5:
644
- _context3.p = 5;
645
- _t3 = _context3.v;
646
- console.error('Update user error', _t3);
647
- return _context3.a(2, false);
718
+ _context5.p = 5;
719
+ _t5 = _context5.v;
720
+ console.error('Update user error', _t5);
721
+ return _context5.a(2, false);
648
722
  case 6:
649
- return _context3.a(2);
723
+ return _context5.a(2);
650
724
  }
651
- }, _callee3, null, [[1, 5]]);
725
+ }, _callee5, null, [[1, 5]]);
652
726
  }));
653
727
  return _setUpdateUserAction.apply(this, arguments);
654
728
  }
655
- function sendEmailVerificationAction(_x4) {
729
+ function sendEmailVerificationAction(_x6) {
656
730
  return _sendEmailVerificationAction.apply(this, arguments);
657
731
  }
658
732
  function _sendEmailVerificationAction() {
659
- _sendEmailVerificationAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(_ref5) {
733
+ _sendEmailVerificationAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(_ref6) {
660
734
  var dispatch, domainName, token, sendEmailFetch;
661
- return _regenerator().w(function (_context4) {
662
- while (1) switch (_context4.p = _context4.n) {
735
+ return _regenerator().w(function (_context6) {
736
+ while (1) switch (_context6.p = _context6.n) {
663
737
  case 0:
664
- dispatch = _ref5.dispatch, domainName = _ref5.domainName, token = _ref5.token;
738
+ dispatch = _ref6.dispatch, domainName = _ref6.domainName, token = _ref6.token;
665
739
  dispatch({
666
740
  type: SET_SEND_EMAIL_VERIFICATION_IS_LOADING,
667
741
  payload: true
@@ -673,13 +747,13 @@ function _sendEmailVerificationAction() {
673
747
  message: 'Sending email verification...'
674
748
  }
675
749
  });
676
- _context4.p = 1;
677
- _context4.n = 2;
750
+ _context6.p = 1;
751
+ _context6.n = 2;
678
752
  return sendEmailVerificationAPI(domainName, token);
679
753
  case 2:
680
- sendEmailFetch = _context4.v;
754
+ sendEmailFetch = _context6.v;
681
755
  if (!(sendEmailFetch.response.status === 200)) {
682
- _context4.n = 3;
756
+ _context6.n = 3;
683
757
  break;
684
758
  }
685
759
  dispatch({
@@ -693,7 +767,7 @@ function _sendEmailVerificationAction() {
693
767
  type: SET_SEND_EMAIL_VERIFICATION_IS_LOADING,
694
768
  payload: false
695
769
  });
696
- return _context4.a(2, true);
770
+ return _context6.a(2, true);
697
771
  case 3:
698
772
  dispatch({
699
773
  type: SET_SEND_EMAIL_VERIFICATION_STATUS,
@@ -706,12 +780,12 @@ function _sendEmailVerificationAction() {
706
780
  type: SET_SEND_EMAIL_VERIFICATION_IS_LOADING,
707
781
  payload: false
708
782
  });
709
- return _context4.a(2, false);
783
+ return _context6.a(2, false);
710
784
  case 4:
711
- _context4.n = 6;
785
+ _context6.n = 6;
712
786
  break;
713
787
  case 5:
714
- _context4.p = 5;
788
+ _context6.p = 5;
715
789
  dispatch({
716
790
  type: SET_SEND_EMAIL_VERIFICATION_STATUS,
717
791
  payload: {
@@ -723,104 +797,68 @@ function _sendEmailVerificationAction() {
723
797
  type: SET_SEND_EMAIL_VERIFICATION_IS_LOADING,
724
798
  payload: false
725
799
  });
726
- return _context4.a(2, false);
800
+ return _context6.a(2, false);
727
801
  case 6:
728
- return _context4.a(2);
802
+ return _context6.a(2);
729
803
  }
730
- }, _callee4, null, [[1, 5]]);
804
+ }, _callee6, null, [[1, 5]]);
731
805
  }));
732
806
  return _sendEmailVerificationAction.apply(this, arguments);
733
807
  }
734
- function checkTokenAction(_x5) {
735
- return _checkTokenAction.apply(this, arguments);
736
- }
737
- function _checkTokenAction() {
738
- _checkTokenAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(_ref6) {
739
- var dispatch, domainName, token, refreshAccessTokenFetch, _t5;
740
- return _regenerator().w(function (_context5) {
741
- while (1) switch (_context5.p = _context5.n) {
742
- case 0:
743
- dispatch = _ref6.dispatch, domainName = _ref6.domainName, token = _ref6.token;
744
- _context5.p = 1;
745
- _context5.n = 2;
746
- return refreshAccessTokenAPI(domainName, token);
747
- case 2:
748
- refreshAccessTokenFetch = _context5.v;
749
- if (!(refreshAccessTokenFetch.response.status === 200)) {
750
- _context5.n = 3;
751
- break;
752
- }
753
- if (refreshAccessTokenFetch.data.accessToken) {
754
- localStorage.setItem(TOKEN_LS, refreshAccessTokenFetch.data.accessToken);
755
- }
756
- return _context5.a(2);
757
- case 3:
758
- window.location.replace(getClientBasePath() + "/" + domainName + "/" + routes.signin);
759
- return _context5.a(2, resetUser(dispatch));
760
- case 4:
761
- _context5.n = 6;
762
- break;
763
- case 5:
764
- _context5.p = 5;
765
- _t5 = _context5.v;
766
- resetUser(dispatch);
767
- throw _t5;
768
- case 6:
769
- return _context5.a(2);
770
- }
771
- }, _callee5, null, [[1, 5]]);
772
- }));
773
- return _checkTokenAction.apply(this, arguments);
774
- }
775
- function getAccessTokenAction(_x6) {
808
+ function getAccessTokenAction(_x7) {
776
809
  return _getAccessTokenAction.apply(this, arguments);
777
810
  }
778
811
  ///////////////////////////////////////////
779
812
  //////////////////////////////////////////
780
813
  function _getAccessTokenAction() {
781
- _getAccessTokenAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(_ref7) {
782
- var dispatch, domainName, token_ls, refreshAccessTokenFetch, _refreshAccessTokenFe, _t6;
783
- return _regenerator().w(function (_context6) {
784
- while (1) switch (_context6.p = _context6.n) {
814
+ _getAccessTokenAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(_ref7) {
815
+ var dispatch, domainName, token_ls, payloadB64, payload, expiresIn, refreshedToken;
816
+ return _regenerator().w(function (_context7) {
817
+ while (1) switch (_context7.p = _context7.n) {
785
818
  case 0:
786
819
  dispatch = _ref7.dispatch, domainName = _ref7.domainName;
787
820
  token_ls = localStorage.getItem(TOKEN_LS);
788
821
  if (token_ls) {
789
- _context6.n = 1;
822
+ _context7.n = 1;
790
823
  break;
791
824
  }
792
- return _context6.a(2);
825
+ return _context7.a(2, 'token-not-found');
793
826
  case 1:
794
- _context6.p = 1;
795
- _context6.n = 2;
796
- return refreshAccessTokenAPI(domainName, token_ls);
797
- case 2:
798
- refreshAccessTokenFetch = _context6.v;
799
- if (!(refreshAccessTokenFetch.response.status === 200)) {
800
- _context6.n = 3;
827
+ _context7.p = 1;
828
+ payloadB64 = token_ls.split('.')[1];
829
+ if (!payloadB64) {
830
+ _context7.n = 3;
801
831
  break;
802
832
  }
803
- return _context6.a(2, (_refreshAccessTokenFe = refreshAccessTokenFetch.data.accessToken) != null ? _refreshAccessTokenFe : token_ls);
833
+ payload = JSON.parse(atob(payloadB64));
834
+ expiresIn = (payload.exp || 0) * 1000 - Date.now(); // If token expires in less than 5 minutes, refresh proactively
835
+ if (!(expiresIn < 5 * 60 * 1000)) {
836
+ _context7.n = 3;
837
+ break;
838
+ }
839
+ _context7.n = 2;
840
+ return refreshSessionAction({
841
+ dispatch: dispatch,
842
+ domainName: domainName
843
+ });
844
+ case 2:
845
+ refreshedToken = localStorage.getItem(TOKEN_LS);
846
+ return _context7.a(2, refreshedToken || 'token-not-found');
804
847
  case 3:
805
- resetUser(dispatch);
806
- return _context6.a(2, 'token-not-found');
807
- case 4:
808
- _context6.n = 6;
848
+ _context7.n = 5;
809
849
  break;
850
+ case 4:
851
+ _context7.p = 4;
810
852
  case 5:
811
- _context6.p = 5;
812
- _t6 = _context6.v;
813
- resetUser(dispatch);
814
- throw _t6;
815
- case 6:
816
- return _context6.a(2);
853
+ return _context7.a(2, token_ls);
817
854
  }
818
- }, _callee6, null, [[1, 5]]);
855
+ }, _callee7, null, [[1, 4]]);
819
856
  }));
820
857
  return _getAccessTokenAction.apply(this, arguments);
821
858
  }
822
859
  var resetUser = function resetUser(dispatch) {
823
860
  localStorage.removeItem(TOKEN_LS);
861
+ localStorage.removeItem(REFRESH_TOKEN_LS);
824
862
  return dispatch({
825
863
  type: LOGIN,
826
864
  payload: {
@@ -831,91 +869,70 @@ var resetUser = function resetUser(dispatch) {
831
869
  });
832
870
  };
833
871
 
872
+ var routes = {
873
+ signin: 'signin',
874
+ updateUser: 'update-user'
875
+ };
876
+
834
877
  var DauthProvider = function DauthProvider(props) {
835
878
  var domainName = props.domainName,
836
- tsk = props.tsk,
837
879
  children = props.children;
838
880
  var _useReducer = React.useReducer(userReducer, initialDauthState),
839
881
  dauthState = _useReducer[0],
840
882
  dispatch = _useReducer[1];
841
- var isValidTsk = React.useCallback(/*#__PURE__*/function () {
842
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(token) {
843
- var verifyToken;
844
- return _regenerator().w(function (_context) {
845
- while (1) switch (_context.p = _context.n) {
846
- case 0:
847
- _context.p = 0;
848
- _context.n = 1;
849
- return verifyTokenAPI({
850
- domainName: domainName,
851
- token: token,
852
- tsk: tsk
853
- });
854
- case 1:
855
- verifyToken = _context.v;
856
- if (!(verifyToken.response.status !== 200)) {
857
- _context.n = 2;
858
- break;
859
- }
860
- return _context.a(2, false);
861
- case 2:
862
- return _context.a(2, true);
863
- case 3:
864
- _context.p = 3;
865
- return _context.a(2, false);
866
- }
867
- }, _callee, null, [[0, 3]]);
868
- }));
869
- return function (_x) {
870
- return _ref.apply(this, arguments);
871
- };
872
- }(), [domainName, tsk]);
873
- // Check token periodically
874
- React.useEffect(function () {
875
- if (!dauthState.isAuthenticated) return;
876
- var interval = setInterval(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
877
- var token_ls, isValid;
878
- return _regenerator().w(function (_context2) {
879
- while (1) switch (_context2.n) {
880
- case 0:
881
- token_ls = localStorage.getItem(TOKEN_LS);
882
- if (token_ls) {
883
+ var refreshTimerRef = React.useRef(null);
884
+ // Schedule next proactive refresh based on access token expiry
885
+ var scheduleRefresh = React.useCallback(function () {
886
+ if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);
887
+ var token = localStorage.getItem(TOKEN_LS);
888
+ if (!token) return;
889
+ try {
890
+ var payloadB64 = token.split('.')[1];
891
+ if (!payloadB64) return;
892
+ var payload = JSON.parse(atob(payloadB64));
893
+ var expiresIn = (payload.exp || 0) * 1000 - Date.now();
894
+ // Refresh 5 minutes before expiry, minimum 10 seconds
895
+ var refreshIn = Math.max(expiresIn - 5 * 60 * 1000, 10000);
896
+ refreshTimerRef.current = setTimeout(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
897
+ return _regenerator().w(function (_context) {
898
+ while (1) switch (_context.n) {
899
+ case 0:
900
+ _context.n = 1;
901
+ return refreshSessionAction({
902
+ dispatch: dispatch,
903
+ domainName: domainName
904
+ });
905
+ case 1:
906
+ scheduleRefresh();
907
+ case 2:
908
+ return _context.a(2);
909
+ }
910
+ }, _callee);
911
+ })), refreshIn);
912
+ } catch (_) {
913
+ // If decode fails, retry in 5 minutes
914
+ refreshTimerRef.current = setTimeout(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
915
+ return _regenerator().w(function (_context2) {
916
+ while (1) switch (_context2.n) {
917
+ case 0:
883
918
  _context2.n = 1;
884
- break;
885
- }
886
- return _context2.a(2);
887
- case 1:
888
- _context2.n = 2;
889
- return isValidTsk(token_ls);
890
- case 2:
891
- isValid = _context2.v;
892
- if (!isValid) {
893
- _context2.n = 3;
894
- break;
895
- }
896
- return _context2.a(2, checkTokenAction({
897
- dispatch: dispatch,
898
- domainName: domainName,
899
- token: token_ls
900
- }));
901
- case 3:
902
- setLogoutAction({
903
- dispatch: dispatch
904
- });
905
- throw new Error('Ask value in DauthProvider is not valid');
906
- case 4:
907
- return _context2.a(2);
908
- }
909
- }, _callee2);
910
- })), 1000 * 60 * 5);
911
- return function () {
912
- return clearInterval(interval);
913
- };
914
- }, [dauthState.isAuthenticated, isValidTsk]);
919
+ return refreshSessionAction({
920
+ dispatch: dispatch,
921
+ domainName: domainName
922
+ });
923
+ case 1:
924
+ scheduleRefresh();
925
+ case 2:
926
+ return _context2.a(2);
927
+ }
928
+ }, _callee2);
929
+ })), 5 * 60 * 1000);
930
+ }
931
+ }, [domainName]);
915
932
  // Catch login redirect
916
933
  React.useEffect(function () {
917
934
  _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
918
- var queryString, urlParams, token_url, isValid;
935
+ var queryString, urlParams, token_url, refresh_url;
919
936
  return _regenerator().w(function (_context3) {
920
937
  while (1) switch (_context3.n) {
921
938
  case 0:
@@ -928,29 +945,18 @@ var DauthProvider = function DauthProvider(props) {
928
945
  case 1:
929
946
  urlParams = new URLSearchParams(queryString);
930
947
  token_url = urlParams.get(TOKEN_LS);
931
- if (!(token_url && !dauthState.isAuthenticated)) {
932
- _context3.n = 4;
933
- break;
934
- }
935
- _context3.n = 2;
936
- return isValidTsk(token_url);
937
- case 2:
938
- isValid = _context3.v;
939
- if (!isValid) {
940
- _context3.n = 3;
948
+ refresh_url = urlParams.get(REFRESH_TOKEN_LS);
949
+ if (!(token_url && refresh_url && !dauthState.isAuthenticated)) {
950
+ _context3.n = 2;
941
951
  break;
942
952
  }
943
953
  return _context3.a(2, setDauthStateAction({
944
954
  dispatch: dispatch,
945
955
  token: token_url,
956
+ refreshToken: refresh_url,
946
957
  domainName: domainName
947
958
  }));
948
- case 3:
949
- setLogoutAction({
950
- dispatch: dispatch
951
- });
952
- throw new Error('Ask value in DauthProvider is not valid');
953
- case 4:
959
+ case 2:
954
960
  return _context3.a(2);
955
961
  }
956
962
  }, _callee3);
@@ -959,57 +965,51 @@ var DauthProvider = function DauthProvider(props) {
959
965
  // Auto Login
960
966
  React.useEffect(function () {
961
967
  _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
962
- var token_ls, isValid;
968
+ var refreshToken;
963
969
  return _regenerator().w(function (_context4) {
964
970
  while (1) switch (_context4.n) {
965
971
  case 0:
966
- token_ls = localStorage.getItem(TOKEN_LS);
967
- if (!(token_ls && !dauthState.isAuthenticated)) {
968
- _context4.n = 4;
969
- break;
970
- }
971
- _context4.n = 1;
972
- return isValidTsk(token_ls);
973
- case 1:
974
- isValid = _context4.v;
975
- if (!isValid) {
976
- _context4.n = 2;
972
+ refreshToken = localStorage.getItem(REFRESH_TOKEN_LS);
973
+ if (!(refreshToken && !dauthState.isAuthenticated)) {
974
+ _context4.n = 1;
977
975
  break;
978
976
  }
979
977
  return _context4.a(2, setAutoLoginAction({
980
978
  dispatch: dispatch,
981
- token_ls: token_ls,
982
979
  domainName: domainName
983
980
  }));
984
- case 2:
985
- setLogoutAction({
986
- dispatch: dispatch
987
- });
988
- throw new Error('Ask value in DauthProvider is not valid');
989
- case 3:
990
- _context4.n = 5;
991
- break;
992
- case 4:
981
+ case 1:
993
982
  return _context4.a(2, dispatch({
994
983
  type: SET_IS_LOADING,
995
984
  payload: {
996
985
  isLoading: false
997
986
  }
998
987
  }));
999
- case 5:
988
+ case 2:
1000
989
  return _context4.a(2);
1001
990
  }
1002
991
  }, _callee4);
1003
992
  }))();
1004
993
  }, []);
994
+ // Schedule proactive refresh when authenticated
995
+ React.useEffect(function () {
996
+ if (dauthState.isAuthenticated) {
997
+ scheduleRefresh();
998
+ }
999
+ return function () {
1000
+ if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);
1001
+ };
1002
+ }, [dauthState.isAuthenticated, scheduleRefresh]);
1005
1003
  var loginWithRedirect = React.useCallback(function () {
1006
1004
  return window.location.replace(getClientBasePath() + "/" + domainName + "/" + routes.signin);
1007
1005
  }, [domainName]);
1008
1006
  var logout = React.useCallback(function () {
1007
+ if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);
1009
1008
  return setLogoutAction({
1010
- dispatch: dispatch
1009
+ dispatch: dispatch,
1010
+ domainName: domainName
1011
1011
  });
1012
- }, []);
1012
+ }, [domainName]);
1013
1013
  var getAccessToken = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
1014
1014
  var token;
1015
1015
  return _regenerator().w(function (_context5) {
@@ -1027,13 +1027,13 @@ var DauthProvider = function DauthProvider(props) {
1027
1027
  }, _callee5);
1028
1028
  })), [domainName]);
1029
1029
  var updateUser = React.useCallback(/*#__PURE__*/function () {
1030
- var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(_ref6) {
1031
- var name, lastname, nickname, telPrefix, telSuffix, language, avatar, token_ls, user;
1030
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(fields) {
1031
+ var token_ls, name, lastname, nickname, telPrefix, telSuffix, language, avatar, birthDate, country, metadata, user;
1032
1032
  return _regenerator().w(function (_context6) {
1033
1033
  while (1) switch (_context6.n) {
1034
1034
  case 0:
1035
- name = _ref6.name, lastname = _ref6.lastname, nickname = _ref6.nickname, telPrefix = _ref6.telPrefix, telSuffix = _ref6.telSuffix, language = _ref6.language, avatar = _ref6.avatar;
1036
1035
  token_ls = localStorage.getItem(TOKEN_LS);
1036
+ name = fields.name, lastname = fields.lastname, nickname = fields.nickname, telPrefix = fields.telPrefix, telSuffix = fields.telSuffix, language = fields.language, avatar = fields.avatar, birthDate = fields.birthDate, country = fields.country, metadata = fields.metadata;
1037
1037
  user = {
1038
1038
  name: name,
1039
1039
  lastname: lastname,
@@ -1041,7 +1041,10 @@ var DauthProvider = function DauthProvider(props) {
1041
1041
  telPrefix: telPrefix,
1042
1042
  telSuffix: telSuffix,
1043
1043
  language: language,
1044
- avatar: avatar
1044
+ avatar: avatar,
1045
+ birthDate: birthDate,
1046
+ country: country,
1047
+ metadata: metadata
1045
1048
  };
1046
1049
  _context6.n = 1;
1047
1050
  return setUpdateUserAction({
@@ -1055,8 +1058,8 @@ var DauthProvider = function DauthProvider(props) {
1055
1058
  }
1056
1059
  }, _callee6);
1057
1060
  }));
1058
- return function (_x2) {
1059
- return _ref7.apply(this, arguments);
1061
+ return function (_x) {
1062
+ return _ref6.apply(this, arguments);
1060
1063
  };
1061
1064
  }(), [domainName]);
1062
1065
  var updateUserWithRedirect = React.useCallback(function () {