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.
- package/dist/api/dauth.api.d.ts +5 -6
- package/dist/api/interfaces/dauth.api.responses.d.ts +3 -3
- package/dist/constants.d.ts +1 -0
- package/dist/dauth-context-react.cjs.development.js +325 -322
- package/dist/dauth-context-react.cjs.development.js.map +1 -1
- package/dist/dauth-context-react.cjs.production.min.js +1 -1
- package/dist/dauth-context-react.cjs.production.min.js.map +1 -1
- package/dist/dauth-context-react.esm.js +326 -323
- package/dist/dauth-context-react.esm.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/interfaces.d.ts +4 -1
- package/dist/reducer/dauth.actions.d.ts +11 -11
- package/package.json +1 -1
- package/src/api/dauth.api.ts +24 -16
- package/src/api/interfaces/dauth.api.responses.ts +3 -3
- package/src/constants.ts +1 -0
- package/src/index.tsx +69 -80
- package/src/interfaces.ts +4 -9
- package/src/reducer/dauth.actions.ts +82 -78
|
@@ -357,92 +357,83 @@ var sendEmailVerificationAPI = /*#__PURE__*/function () {
|
|
|
357
357
|
return _ref3.apply(this, arguments);
|
|
358
358
|
};
|
|
359
359
|
}();
|
|
360
|
-
var
|
|
361
|
-
var
|
|
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 (
|
|
364
|
-
while (1) switch (
|
|
363
|
+
return _regenerator().w(function (_context5) {
|
|
364
|
+
while (1) switch (_context5.n) {
|
|
365
365
|
case 0:
|
|
366
366
|
params = {
|
|
367
|
-
method: '
|
|
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
|
-
|
|
374
|
-
return fetch(getServerBasePath() + "/app/" + domainName + "/refresh-
|
|
375
|
+
_context5.n = 1;
|
|
376
|
+
return fetch(getServerBasePath() + "/app/" + domainName + "/refresh-token", params);
|
|
375
377
|
case 1:
|
|
376
|
-
response =
|
|
377
|
-
|
|
378
|
+
response = _context5.v;
|
|
379
|
+
_context5.n = 2;
|
|
378
380
|
return response.json();
|
|
379
381
|
case 2:
|
|
380
|
-
data =
|
|
381
|
-
return
|
|
382
|
+
data = _context5.v;
|
|
383
|
+
return _context5.a(2, {
|
|
382
384
|
response: response,
|
|
383
385
|
data: data
|
|
384
386
|
});
|
|
385
387
|
}
|
|
386
|
-
},
|
|
388
|
+
}, _callee5);
|
|
387
389
|
}));
|
|
388
|
-
return function
|
|
389
|
-
return
|
|
390
|
+
return function refreshTokenAPI(_x0, _x1) {
|
|
391
|
+
return _ref5.apply(this, arguments);
|
|
390
392
|
};
|
|
391
393
|
}();
|
|
392
|
-
var
|
|
393
|
-
var _ref6 = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
394
|
-
var
|
|
395
|
-
return _regenerator().w(function (
|
|
396
|
-
while (1) switch (
|
|
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
|
-
|
|
406
|
+
refreshToken: refreshToken
|
|
407
407
|
})
|
|
408
408
|
};
|
|
409
|
-
|
|
410
|
-
return fetch(getServerBasePath() + "/app/" + domainName + "/
|
|
409
|
+
_context6.n = 1;
|
|
410
|
+
return fetch(getServerBasePath() + "/app/" + domainName + "/logout", params);
|
|
411
411
|
case 1:
|
|
412
|
-
response =
|
|
413
|
-
|
|
414
|
-
|
|
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
|
-
},
|
|
417
|
+
}, _callee6);
|
|
423
418
|
}));
|
|
424
|
-
return function
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
|
521
|
+
return refreshTokenAPI(domainName, storedRefreshToken);
|
|
516
522
|
case 2:
|
|
517
|
-
|
|
518
|
-
if (!(
|
|
519
|
-
_context2.n =
|
|
523
|
+
refreshResult = _context2.v;
|
|
524
|
+
if (!(refreshResult.response.status === 200)) {
|
|
525
|
+
_context2.n = 4;
|
|
520
526
|
break;
|
|
521
527
|
}
|
|
522
|
-
|
|
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,
|
|
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
|
-
|
|
543
|
-
|
|
544
|
-
|
|
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
|
|
554
|
-
_context2.p =
|
|
554
|
+
case 5:
|
|
555
|
+
_context2.p = 5;
|
|
555
556
|
_t2 = _context2.v;
|
|
556
557
|
console.error(_t2);
|
|
557
|
-
|
|
558
|
-
case
|
|
559
|
-
_context2.p =
|
|
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(
|
|
567
|
-
case
|
|
567
|
+
return _context2.f(6);
|
|
568
|
+
case 7:
|
|
568
569
|
return _context2.a(2);
|
|
569
570
|
}
|
|
570
|
-
}, _callee2, null, [[1,
|
|
571
|
+
}, _callee2, null, [[1, 5, 6, 7]]);
|
|
571
572
|
}));
|
|
572
573
|
return _setAutoLoginAction.apply(this, arguments);
|
|
573
574
|
}
|
|
574
|
-
function setLogoutAction(
|
|
575
|
-
|
|
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
|
|
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
|
|
605
|
-
var dispatch, domainName, user, token, getUserFetch,
|
|
606
|
-
return _regenerator().w(function (
|
|
607
|
-
while (1) switch (
|
|
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 =
|
|
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
|
-
|
|
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
|
|
695
|
+
return _context5.a(2, false);
|
|
622
696
|
case 1:
|
|
623
|
-
|
|
624
|
-
|
|
697
|
+
_context5.p = 1;
|
|
698
|
+
_context5.n = 2;
|
|
625
699
|
return updateUserAPI(domainName, user, token);
|
|
626
700
|
case 2:
|
|
627
|
-
getUserFetch =
|
|
701
|
+
getUserFetch = _context5.v;
|
|
628
702
|
if (!(getUserFetch.response.status === 200)) {
|
|
629
|
-
|
|
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
|
|
710
|
+
return _context5.a(2, true);
|
|
637
711
|
case 3:
|
|
638
712
|
console.error('Update user error', getUserFetch.data.message);
|
|
639
|
-
return
|
|
713
|
+
return _context5.a(2, false);
|
|
640
714
|
case 4:
|
|
641
|
-
|
|
715
|
+
_context5.n = 6;
|
|
642
716
|
break;
|
|
643
717
|
case 5:
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
console.error('Update user error',
|
|
647
|
-
return
|
|
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
|
|
723
|
+
return _context5.a(2);
|
|
650
724
|
}
|
|
651
|
-
},
|
|
725
|
+
}, _callee5, null, [[1, 5]]);
|
|
652
726
|
}));
|
|
653
727
|
return _setUpdateUserAction.apply(this, arguments);
|
|
654
728
|
}
|
|
655
|
-
function sendEmailVerificationAction(
|
|
729
|
+
function sendEmailVerificationAction(_x6) {
|
|
656
730
|
return _sendEmailVerificationAction.apply(this, arguments);
|
|
657
731
|
}
|
|
658
732
|
function _sendEmailVerificationAction() {
|
|
659
|
-
_sendEmailVerificationAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
733
|
+
_sendEmailVerificationAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(_ref6) {
|
|
660
734
|
var dispatch, domainName, token, sendEmailFetch;
|
|
661
|
-
return _regenerator().w(function (
|
|
662
|
-
while (1) switch (
|
|
735
|
+
return _regenerator().w(function (_context6) {
|
|
736
|
+
while (1) switch (_context6.p = _context6.n) {
|
|
663
737
|
case 0:
|
|
664
|
-
dispatch =
|
|
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
|
-
|
|
677
|
-
|
|
750
|
+
_context6.p = 1;
|
|
751
|
+
_context6.n = 2;
|
|
678
752
|
return sendEmailVerificationAPI(domainName, token);
|
|
679
753
|
case 2:
|
|
680
|
-
sendEmailFetch =
|
|
754
|
+
sendEmailFetch = _context6.v;
|
|
681
755
|
if (!(sendEmailFetch.response.status === 200)) {
|
|
682
|
-
|
|
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
|
|
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
|
|
783
|
+
return _context6.a(2, false);
|
|
710
784
|
case 4:
|
|
711
|
-
|
|
785
|
+
_context6.n = 6;
|
|
712
786
|
break;
|
|
713
787
|
case 5:
|
|
714
|
-
|
|
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
|
|
800
|
+
return _context6.a(2, false);
|
|
727
801
|
case 6:
|
|
728
|
-
return
|
|
802
|
+
return _context6.a(2);
|
|
729
803
|
}
|
|
730
|
-
},
|
|
804
|
+
}, _callee6, null, [[1, 5]]);
|
|
731
805
|
}));
|
|
732
806
|
return _sendEmailVerificationAction.apply(this, arguments);
|
|
733
807
|
}
|
|
734
|
-
function
|
|
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
|
|
782
|
-
var dispatch, domainName, token_ls,
|
|
783
|
-
return _regenerator().w(function (
|
|
784
|
-
while (1) switch (
|
|
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
|
-
|
|
822
|
+
_context7.n = 1;
|
|
790
823
|
break;
|
|
791
824
|
}
|
|
792
|
-
return
|
|
825
|
+
return _context7.a(2, 'token-not-found');
|
|
793
826
|
case 1:
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
},
|
|
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
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
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
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
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,
|
|
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
|
-
|
|
932
|
-
|
|
933
|
-
|
|
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
|
|
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
|
|
968
|
+
var refreshToken;
|
|
963
969
|
return _regenerator().w(function (_context4) {
|
|
964
970
|
while (1) switch (_context4.n) {
|
|
965
971
|
case 0:
|
|
966
|
-
|
|
967
|
-
if (!(
|
|
968
|
-
_context4.n =
|
|
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
|
|
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
|
|
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
|
|
1031
|
-
var name, lastname, nickname, telPrefix, telSuffix, language, avatar,
|
|
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 (
|
|
1059
|
-
return
|
|
1061
|
+
return function (_x) {
|
|
1062
|
+
return _ref6.apply(this, arguments);
|
|
1060
1063
|
};
|
|
1061
1064
|
}(), [domainName]);
|
|
1062
1065
|
var updateUserWithRedirect = React.useCallback(function () {
|