authscape 1.0.768 → 1.0.772

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/index.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.AuthScapeApp = AuthScapeApp;
7
+ exports.AuthScapeProvider = void 0;
7
8
  Object.defineProperty(exports, "Bounce", {
8
9
  enumerable: true,
9
10
  get: function get() {
@@ -41,10 +42,9 @@ exports.useNotifications = useNotifications;
41
42
  var _react = _interopRequireWildcard(require("react"));
42
43
  var _reactToastify = require("react-toastify");
43
44
  var _head = _interopRequireDefault(require("next/head"));
44
- var _navigation = require("next/navigation");
45
+ var _router = _interopRequireWildcard(require("next/router"));
45
46
  var _axios = _interopRequireDefault(require("axios"));
46
47
  var _queryString = _interopRequireDefault(require("query-string"));
47
- var _router = _interopRequireDefault(require("next/router"));
48
48
  var _ga4React = _interopRequireDefault(require("ga-4-react"));
49
49
  var _zustand = require("zustand");
50
50
  var _reactMicrosoftClarity = require("react-microsoft-clarity");
@@ -136,10 +136,10 @@ function logError(_x) {
136
136
  return _logError.apply(this, arguments);
137
137
  }
138
138
  function _logError() {
139
- _logError = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10(errorData) {
139
+ _logError = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee0(errorData) {
140
140
  var error, response;
141
- return _regeneratorRuntime().wrap(function _callee10$(_context10) {
142
- while (1) switch (_context10.prev = _context10.next) {
141
+ return _regeneratorRuntime().wrap(function _callee0$(_context0) {
142
+ while (1) switch (_context0.prev = _context0.next) {
143
143
  case 0:
144
144
  if (!errorTrackingSessionId && typeof window !== 'undefined') {
145
145
  errorTrackingSessionId = getOrCreateSessionId();
@@ -156,25 +156,25 @@ function _logError() {
156
156
  ipAddress: '',
157
157
  metadata: errorData.metadata || null
158
158
  };
159
- _context10.prev = 2;
160
- _context10.next = 5;
159
+ _context0.prev = 2;
160
+ _context0.next = 5;
161
161
  return module.exports.apiService().post('/ErrorTracking/LogError', error);
162
162
  case 5:
163
- response = _context10.sent;
163
+ response = _context0.sent;
164
164
  if (response && response.status !== 200) {
165
165
  console.error('Error tracking API returned:', response.status);
166
166
  }
167
- _context10.next = 12;
167
+ _context0.next = 12;
168
168
  break;
169
169
  case 9:
170
- _context10.prev = 9;
171
- _context10.t0 = _context10["catch"](2);
172
- console.error('Failed to send error to tracking system:', _context10.t0.message);
170
+ _context0.prev = 9;
171
+ _context0.t0 = _context0["catch"](2);
172
+ console.error('Failed to send error to tracking system:', _context0.t0.message);
173
173
  case 12:
174
174
  case "end":
175
- return _context10.stop();
175
+ return _context0.stop();
176
176
  }
177
- }, _callee10, null, [[2, 9]]);
177
+ }, _callee0, null, [[2, 9]]);
178
178
  }));
179
179
  return _logError.apply(this, arguments);
180
180
  }
@@ -725,57 +725,68 @@ function ensureUserHelpers(u) {
725
725
  // ============================================================================
726
726
  // AuthScapeApp Component
727
727
  // ============================================================================
728
- function AuthScapeApp(_ref10) {
729
- var _searchParams$get;
730
- var Component = _ref10.Component,
731
- layout = _ref10.layout,
732
- loadingLayout = _ref10.loadingLayout,
733
- signInLoadingComponent = _ref10.signInLoadingComponent,
734
- pageProps = _ref10.pageProps,
735
- _ref10$muiTheme = _ref10.muiTheme,
736
- muiTheme = _ref10$muiTheme === void 0 ? null : _ref10$muiTheme,
737
- _ref10$store = _ref10.store,
738
- store = _ref10$store === void 0 ? {} : _ref10$store,
739
- _ref10$enforceLoggedI = _ref10.enforceLoggedIn,
740
- enforceLoggedIn = _ref10$enforceLoggedI === void 0 ? false : _ref10$enforceLoggedI,
741
- _ref10$enableAuth = _ref10.enableAuth,
742
- enableAuth = _ref10$enableAuth === void 0 ? true : _ref10$enableAuth,
743
- _ref10$enableNotifica = _ref10.enableNotifications,
744
- enableNotifications = _ref10$enableNotifica === void 0 ? true : _ref10$enableNotifica,
745
- _ref10$enableErrorTra = _ref10.enableErrorTracking,
746
- enableErrorTracking = _ref10$enableErrorTra === void 0 ? true : _ref10$enableErrorTra,
747
- _ref10$toastConfig = _ref10.toastConfig,
748
- toastConfig = _ref10$toastConfig === void 0 ? {} : _ref10$toastConfig,
749
- _ref10$onUserLoaded = _ref10.onUserLoaded,
750
- onUserLoaded = _ref10$onUserLoaded === void 0 ? null : _ref10$onUserLoaded;
728
+ function AuthScapeApp(_ref0) {
729
+ var Component = _ref0.Component,
730
+ layout = _ref0.layout,
731
+ loadingLayout = _ref0.loadingLayout,
732
+ signInLoadingComponent = _ref0.signInLoadingComponent,
733
+ pageProps = _ref0.pageProps,
734
+ _ref0$muiTheme = _ref0.muiTheme,
735
+ muiTheme = _ref0$muiTheme === void 0 ? null : _ref0$muiTheme,
736
+ _ref0$store = _ref0.store,
737
+ store = _ref0$store === void 0 ? {} : _ref0$store,
738
+ _ref0$enforceLoggedIn = _ref0.enforceLoggedIn,
739
+ enforceLoggedIn = _ref0$enforceLoggedIn === void 0 ? false : _ref0$enforceLoggedIn,
740
+ _ref0$enableAuth = _ref0.enableAuth,
741
+ enableAuth = _ref0$enableAuth === void 0 ? true : _ref0$enableAuth,
742
+ _ref0$enableNotificat = _ref0.enableNotifications,
743
+ enableNotifications = _ref0$enableNotificat === void 0 ? true : _ref0$enableNotificat,
744
+ _ref0$enableErrorTrac = _ref0.enableErrorTracking,
745
+ enableErrorTracking = _ref0$enableErrorTrac === void 0 ? true : _ref0$enableErrorTrac,
746
+ _ref0$toastConfig = _ref0.toastConfig,
747
+ toastConfig = _ref0$toastConfig === void 0 ? {} : _ref0$toastConfig,
748
+ _ref0$onUserLoaded = _ref0.onUserLoaded,
749
+ onUserLoaded = _ref0$onUserLoaded === void 0 ? null : _ref0$onUserLoaded;
751
750
  var _useState9 = (0, _react.useState)(false),
752
- _useState10 = _slicedToArray(_useState9, 2),
753
- frontEndLoadedState = _useState10[0],
754
- setFrontEndLoadedState = _useState10[1];
755
- var _useState11 = (0, _react.useState)(false),
751
+ _useState0 = _slicedToArray(_useState9, 2),
752
+ frontEndLoadedState = _useState0[0],
753
+ setFrontEndLoadedState = _useState0[1];
754
+ var _useState1 = (0, _react.useState)(false),
755
+ _useState10 = _slicedToArray(_useState1, 2),
756
+ isLoadingShow = _useState10[0],
757
+ setIsLoadingShow = _useState10[1];
758
+ var _useState11 = (0, _react.useState)(null),
756
759
  _useState12 = _slicedToArray(_useState11, 2),
757
- isLoadingShow = _useState12[0],
758
- setIsLoadingShow = _useState12[1];
759
- var _useState13 = (0, _react.useState)(null),
760
+ signedInUserState = _useState12[0],
761
+ setSignedInUserState = _useState12[1];
762
+ var _useState13 = (0, _react.useState)(false),
760
763
  _useState14 = _slicedToArray(_useState13, 2),
761
- signedInUserState = _useState14[0],
762
- setSignedInUserState = _useState14[1];
763
- var _useState15 = (0, _react.useState)(false),
764
- _useState16 = _slicedToArray(_useState15, 2),
765
- isSigningIn = _useState16[0],
766
- setIsSigningIn = _useState16[1];
764
+ isSigningIn = _useState14[0],
765
+ setIsSigningIn = _useState14[1];
767
766
  var loadingAuth = (0, _react.useRef)(false);
768
767
  var signedInUser = (0, _react.useRef)(null);
769
768
  var queryCodeUsed = (0, _react.useRef)(null);
770
769
  var ga4React = (0, _react.useRef)(null);
771
770
  var errorTrackingInitializedRef = (0, _react.useRef)(false);
772
771
  var loginRedirectPending = (0, _react.useRef)(false);
773
- var searchParams = (0, _navigation.useSearchParams)();
774
- var queryCode = (_searchParams$get = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get("code")) !== null && _searchParams$get !== void 0 ? _searchParams$get : null;
775
- var pathname = (0, _navigation.usePathname)();
772
+
773
+ // Use Pages Router's `useRouter` instead of `useSearchParams`/`usePathname`
774
+ // from `next/navigation`. The `next/navigation` hooks don't hydrate query
775
+ // params reliably on the 404 page in Webkit/Safari — when the IDP redirects
776
+ // back to /signin-oidc (a URL with no Next.js page in the consumer project),
777
+ // useSearchParams() returns null and the PKCE code is never picked up.
778
+ // The Pages Router router parses query from `asPath` and works on 404 too.
779
+ var router = (0, _router.useRouter)();
780
+ var rawQueryCode = router.isReady ? router.query.code : null;
781
+ // router.query values can be string | string[] — coerce to a single string.
782
+ var queryCode = typeof rawQueryCode === "string" ? rawQueryCode : Array.isArray(rawQueryCode) ? rawQueryCode[0] : null;
783
+ // Pages Router's `router.pathname` returns the route file path (e.g. "/_error"
784
+ // for the 404 page). The auth-redirect guard below compares against
785
+ // "/signin-oidc", so we derive the actual URL path from `asPath` instead.
786
+ var pathname = (router.asPath || "").split("?")[0].split("#")[0];
776
787
  var signInValidator = /*#__PURE__*/function () {
777
- var _ref11 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(codeFromQuery) {
778
- var codeVerifier, headers, body, response, domainHost, redirectUri;
788
+ var _ref1 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(codeFromQuery) {
789
+ var codeVerifier, headers, body, response, domainHost, redirectUri, usr, enrichedUser;
779
790
  return _regeneratorRuntime().wrap(function _callee8$(_context8) {
780
791
  while (1) switch (_context8.prev = _context8.next) {
781
792
  case 0:
@@ -844,24 +855,65 @@ function AuthScapeApp(_ref10) {
844
855
  resetRedirectCounter();
845
856
  redirectUri = window.localStorage.getItem("redirectUri") || "/";
846
857
  window.localStorage.clear();
847
- window.location.href = redirectUri;
848
- _context8.next = 35;
858
+
859
+ // Pre-load user while spinner is still showing — eliminates the
860
+ // second GetCurrentUser call (and resulting re-renders) on the destination page.
861
+ usr = null;
862
+ _context8.prev = 27;
863
+ _context8.next = 30;
864
+ return module.exports.apiService().GetCurrentUser();
865
+ case 30:
866
+ usr = _context8.sent;
867
+ _context8.next = 36;
849
868
  break;
850
- case 29:
851
- _context8.prev = 29;
852
- _context8.t0 = _context8["catch"](14);
853
- console.error("PKCE sign-in failed", _context8.t0);
869
+ case 33:
870
+ _context8.prev = 33;
871
+ _context8.t0 = _context8["catch"](27);
872
+ console.warn("[AuthScape] GetCurrentUser failed after token exchange:", _context8.t0);
873
+ case 36:
874
+ enrichedUser = ensureUserHelpers(usr);
875
+ signedInUser.current = enrichedUser;
876
+ setSignedInUserState(enrichedUser);
877
+ setFrontEndLoadedState(true);
878
+
879
+ // Prevent the useEffect from calling GetCurrentUser again when queryCode → null.
880
+ loadingAuth.current = true;
881
+ if (enableErrorTracking && enrichedUser && !errorTrackingInitializedRef.current) {
882
+ initializeErrorTracking(enrichedUser);
883
+ errorTrackingInitializedRef.current = true;
884
+ }
885
+ if (onUserLoaded && enrichedUser) {
886
+ onUserLoaded(enrichedUser);
887
+ }
888
+
889
+ // Dismiss spinner before navigating so destination renders logged-in UI on first paint.
890
+ setIsSigningIn(false);
891
+
892
+ // Client-side navigation preserves the React component tree and all ref values,
893
+ // eliminating the hard-reload → remount → re-render chain.
894
+ // Fall back to hard navigation for absolute external URLs.
895
+ if (redirectUri.startsWith("http://") || redirectUri.startsWith("https://")) {
896
+ window.location.href = redirectUri;
897
+ } else {
898
+ _router["default"].push(redirectUri);
899
+ }
900
+ _context8.next = 53;
901
+ break;
902
+ case 47:
903
+ _context8.prev = 47;
904
+ _context8.t1 = _context8["catch"](14);
905
+ console.error("PKCE sign-in failed", _context8.t1);
854
906
  window.localStorage.clear();
855
907
  setIsSigningIn(false);
856
908
  setFrontEndLoadedState(true);
857
- case 35:
909
+ case 53:
858
910
  case "end":
859
911
  return _context8.stop();
860
912
  }
861
- }, _callee8, null, [[14, 29]]);
913
+ }, _callee8, null, [[14, 47], [27, 33]]);
862
914
  }));
863
915
  return function signInValidator(_x4) {
864
- return _ref11.apply(this, arguments);
916
+ return _ref1.apply(this, arguments);
865
917
  };
866
918
  }();
867
919
  function initGA(_x5) {
@@ -1063,6 +1115,11 @@ function AuthScapeApp(_ref10) {
1063
1115
  customTheme: muiTheme
1064
1116
  }, wrappedContent), /*#__PURE__*/_react["default"].createElement(_reactToastify.ToastContainer, defaultToastConfig), loadingLayout && loadingLayout(isLoadingShow));
1065
1117
  }
1118
+
1119
+ // AuthScapeProvider is the umbrella component that bundles the three always-on AuthScape
1120
+ // features (auth, error tracking, analytics) plus optional in-app notifications. Wrap your
1121
+ // NextJS _app.js return value with it. Existing call sites can continue using AuthScapeApp.
1122
+ var AuthScapeProvider = exports.AuthScapeProvider = AuthScapeApp;
1066
1123
  "use strict";
1067
1124
 
1068
1125
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
@@ -1546,25 +1603,25 @@ var DocumentManager = exports.DocumentManager = function DocumentManager(_ref) {
1546
1603
  masterFolder = _useState8[0],
1547
1604
  setMasterFolder = _useState8[1];
1548
1605
  var _useState9 = (0, _react.useState)([]),
1549
- _useState10 = _slicedToArray(_useState9, 2),
1550
- breadCrumb = _useState10[0],
1551
- setBreadCrumb = _useState10[1];
1606
+ _useState0 = _slicedToArray(_useState9, 2),
1607
+ breadCrumb = _useState0[0],
1608
+ setBreadCrumb = _useState0[1];
1609
+ var _useState1 = (0, _react.useState)(null),
1610
+ _useState10 = _slicedToArray(_useState1, 2),
1611
+ uploadParentId = _useState10[0],
1612
+ setUploadParentId = _useState10[1];
1552
1613
  var _useState11 = (0, _react.useState)(null),
1553
1614
  _useState12 = _slicedToArray(_useState11, 2),
1554
- uploadParentId = _useState12[0],
1555
- setUploadParentId = _useState12[1];
1615
+ contextMenu = _useState12[0],
1616
+ setContextMenu = _useState12[1];
1556
1617
  var _useState13 = (0, _react.useState)(null),
1557
1618
  _useState14 = _slicedToArray(_useState13, 2),
1558
- contextMenu = _useState14[0],
1559
- setContextMenu = _useState14[1];
1560
- var _useState15 = (0, _react.useState)(null),
1619
+ contextFile = _useState14[0],
1620
+ setContextFile = _useState14[1];
1621
+ var _useState15 = (0, _react.useState)(false),
1561
1622
  _useState16 = _slicedToArray(_useState15, 2),
1562
- contextFile = _useState16[0],
1563
- setContextFile = _useState16[1];
1564
- var _useState17 = (0, _react.useState)(false),
1565
- _useState18 = _slicedToArray(_useState17, 2),
1566
- dialogDelete = _useState18[0],
1567
- setDialogDelete = _useState18[1];
1623
+ dialogDelete = _useState16[0],
1624
+ setDialogDelete = _useState16[1];
1568
1625
  var handleContextMenu = function handleContextMenu(event, file) {
1569
1626
  event.preventDefault();
1570
1627
  setContextFile(file);
@@ -1657,10 +1714,10 @@ var DocumentManager = exports.DocumentManager = function DocumentManager(_ref) {
1657
1714
  fetchDocuments();
1658
1715
  }
1659
1716
  }, [loadedUser, folderParent, update]);
1660
- var _useState19 = (0, _react.useState)(null),
1661
- _useState20 = _slicedToArray(_useState19, 2),
1662
- anchorEl = _useState20[0],
1663
- setAnchorEl = _useState20[1];
1717
+ var _useState17 = (0, _react.useState)(null),
1718
+ _useState18 = _slicedToArray(_useState17, 2),
1719
+ anchorEl = _useState18[0],
1720
+ setAnchorEl = _useState18[1];
1664
1721
  var open = Boolean(anchorEl);
1665
1722
  var handleClick = function handleClick(event) {
1666
1723
  setAnchorEl(event.currentTarget);
@@ -2536,21 +2593,21 @@ var FileUploader = exports.FileUploader = function FileUploader(_ref) {
2536
2593
  viewDeleteDialog = _useState8[0],
2537
2594
  setViewDeleteDialog = _useState8[1];
2538
2595
  var _useState9 = (0, _react.useState)([]),
2539
- _useState10 = _slicedToArray(_useState9, 2),
2540
- filesUploaded = _useState10[0],
2541
- setFilesUploaded = _useState10[1];
2596
+ _useState0 = _slicedToArray(_useState9, 2),
2597
+ filesUploaded = _useState0[0],
2598
+ setFilesUploaded = _useState0[1];
2599
+ var _useState1 = (0, _react.useState)(null),
2600
+ _useState10 = _slicedToArray(_useState1, 2),
2601
+ orderFileId = _useState10[0],
2602
+ setOrderFileId = _useState10[1];
2542
2603
  var _useState11 = (0, _react.useState)(null),
2543
2604
  _useState12 = _slicedToArray(_useState11, 2),
2544
- orderFileId = _useState12[0],
2545
- setOrderFileId = _useState12[1];
2546
- var _useState13 = (0, _react.useState)(null),
2605
+ filesDownloadable = _useState12[0],
2606
+ setFilesDownloadable = _useState12[1];
2607
+ var _useState13 = (0, _react.useState)([]),
2547
2608
  _useState14 = _slicedToArray(_useState13, 2),
2548
- filesDownloadable = _useState14[0],
2549
- setFilesDownloadable = _useState14[1];
2550
- var _useState15 = (0, _react.useState)([]),
2551
- _useState16 = _slicedToArray(_useState15, 2),
2552
- parameters = _useState16[0],
2553
- setParameters = _useState16[1];
2609
+ parameters = _useState14[0],
2610
+ setParameters = _useState14[1];
2554
2611
  var fileUploader = (0, _react.useRef)();
2555
2612
  var handleUpload = /*#__PURE__*/function () {
2556
2613
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(event) {
@@ -3282,13 +3339,13 @@ var GoogleMapsAutoComplete = exports.GoogleMapsAutoComplete = function GoogleMap
3282
3339
  zip = _useState8[0],
3283
3340
  setPostalcode = _useState8[1];
3284
3341
  var _useState9 = (0, _react.useState)(null),
3285
- _useState10 = _slicedToArray(_useState9, 2),
3286
- lat = _useState10[0],
3287
- setLat = _useState10[1];
3288
- var _useState11 = (0, _react.useState)(null),
3289
- _useState12 = _slicedToArray(_useState11, 2),
3290
- lng = _useState12[0],
3291
- setLng = _useState12[1];
3342
+ _useState0 = _slicedToArray(_useState9, 2),
3343
+ lat = _useState0[0],
3344
+ setLat = _useState0[1];
3345
+ var _useState1 = (0, _react.useState)(null),
3346
+ _useState10 = _slicedToArray(_useState1, 2),
3347
+ lng = _useState10[0],
3348
+ setLng = _useState10[1];
3292
3349
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Box["default"], null, /*#__PURE__*/_react["default"].createElement(AutoCompleteDialog, {
3293
3350
  placeholder: "Address",
3294
3351
  defaultValue: address,
@@ -3412,25 +3469,25 @@ function AssignMapping(_ref) {
3412
3469
  documentType = _useState8[0],
3413
3470
  setDocumentType = _useState8[1];
3414
3471
  var _useState9 = (0, _react.useState)(null),
3415
- _useState10 = _slicedToArray(_useState9, 2),
3416
- documentName = _useState10[0],
3417
- setDocumentName = _useState10[1];
3418
- var _useState11 = (0, _react.useState)(1),
3472
+ _useState0 = _slicedToArray(_useState9, 2),
3473
+ documentName = _useState0[0],
3474
+ setDocumentName = _useState0[1];
3475
+ var _useState1 = (0, _react.useState)(1),
3476
+ _useState10 = _slicedToArray(_useState1, 2),
3477
+ urlTick = _useState10[0],
3478
+ setURLTick = _useState10[1];
3479
+ var _useState11 = (0, _react.useState)(null),
3419
3480
  _useState12 = _slicedToArray(_useState11, 2),
3420
- urlTick = _useState12[0],
3421
- setURLTick = _useState12[1];
3422
- var _useState13 = (0, _react.useState)(null),
3481
+ spreadSheetAddress = _useState12[0],
3482
+ setSpreadSheetAddress = _useState12[1];
3483
+ var _useState13 = (0, _react.useState)(false),
3423
3484
  _useState14 = _slicedToArray(_useState13, 2),
3424
- spreadSheetAddress = _useState14[0],
3425
- setSpreadSheetAddress = _useState14[1];
3426
- var _useState15 = (0, _react.useState)(false),
3485
+ showPreviewDialog = _useState14[0],
3486
+ setShowPreviewDialog = _useState14[1];
3487
+ var _useState15 = (0, _react.useState)(null),
3427
3488
  _useState16 = _slicedToArray(_useState15, 2),
3428
- showPreviewDialog = _useState16[0],
3429
- setShowPreviewDialog = _useState16[1];
3430
- var _useState17 = (0, _react.useState)(null),
3431
- _useState18 = _slicedToArray(_useState17, 2),
3432
- advanceQuery = _useState18[0],
3433
- setAdvanceQuery = _useState18[1];
3489
+ advanceQuery = _useState16[0],
3490
+ setAdvanceQuery = _useState16[1];
3434
3491
  var spreadSheetRef = (0, _react.useRef)(null);
3435
3492
  var fetchMappingTo = /*#__PURE__*/function () {
3436
3493
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
@@ -3936,9 +3993,9 @@ function Datasources(_ref) {
3936
3993
  databaseTables = _useState8[0],
3937
3994
  setDatabaseTables = _useState8[1];
3938
3995
  var _useState9 = (0, _react.useState)("database"),
3939
- _useState10 = _slicedToArray(_useState9, 2),
3940
- mappingType = _useState10[0],
3941
- setMappingType = _useState10[1];
3996
+ _useState0 = _slicedToArray(_useState9, 2),
3997
+ mappingType = _useState0[0],
3998
+ setMappingType = _useState0[1];
3942
3999
  var refTypeName = (0, _react.useRef)(null);
3943
4000
  var refAssemblyFullName = (0, _react.useRef)(null);
3944
4001
  (0, _react.useEffect)(function () {
@@ -4283,49 +4340,49 @@ function ManageMappingDocuments(_ref) {
4283
4340
  showTrainingDocument = _useState8[0],
4284
4341
  setShowTrainingDocument = _useState8[1];
4285
4342
  var _useState9 = (0, _react.useState)(''),
4286
- _useState10 = _slicedToArray(_useState9, 2),
4287
- columnName = _useState10[0],
4288
- setColumnName = _useState10[1];
4343
+ _useState0 = _slicedToArray(_useState9, 2),
4344
+ columnName = _useState0[0],
4345
+ setColumnName = _useState0[1];
4346
+ var _useState1 = (0, _react.useState)(null),
4347
+ _useState10 = _slicedToArray(_useState1, 2),
4348
+ selectedAddedColumn = _useState10[0],
4349
+ setSelectedAddedColumn = _useState10[1];
4289
4350
  var _useState11 = (0, _react.useState)(null),
4290
4351
  _useState12 = _slicedToArray(_useState11, 2),
4291
- selectedAddedColumn = _useState12[0],
4292
- setSelectedAddedColumn = _useState12[1];
4352
+ documentMappingColumns = _useState12[0],
4353
+ setDocumentMappingColumns = _useState12[1];
4293
4354
  var _useState13 = (0, _react.useState)(null),
4294
4355
  _useState14 = _slicedToArray(_useState13, 2),
4295
- documentMappingColumns = _useState14[0],
4296
- setDocumentMappingColumns = _useState14[1];
4356
+ toColumnOptions = _useState14[0],
4357
+ setToColumnOptions = _useState14[1];
4297
4358
  var _useState15 = (0, _react.useState)(null),
4298
4359
  _useState16 = _slicedToArray(_useState15, 2),
4299
- toColumnOptions = _useState16[0],
4300
- setToColumnOptions = _useState16[1];
4360
+ removeDocument = _useState16[0],
4361
+ setRemoveDocument = _useState16[1];
4301
4362
  var _useState17 = (0, _react.useState)(null),
4302
4363
  _useState18 = _slicedToArray(_useState17, 2),
4303
- removeDocument = _useState18[0],
4304
- setRemoveDocument = _useState18[1];
4305
- var _useState19 = (0, _react.useState)(null),
4364
+ selectedDocumentComponentId = _useState18[0],
4365
+ setSelectedDocumentComponentId = _useState18[1];
4366
+ var _useState19 = (0, _react.useState)(0),
4306
4367
  _useState20 = _slicedToArray(_useState19, 2),
4307
- selectedDocumentComponentId = _useState20[0],
4308
- setSelectedDocumentComponentId = _useState20[1];
4368
+ dataGridRefreshKey = _useState20[0],
4369
+ setDataGridRefreshKey = _useState20[1];
4309
4370
  var _useState21 = (0, _react.useState)(0),
4310
4371
  _useState22 = _slicedToArray(_useState21, 2),
4311
- dataGridRefreshKey = _useState22[0],
4312
- setDataGridRefreshKey = _useState22[1];
4313
- var _useState23 = (0, _react.useState)(0),
4372
+ dataGridMappingRefreshKey = _useState22[0],
4373
+ setDataGridMappingRefreshKey = _useState22[1];
4374
+ var _useState23 = (0, _react.useState)(null),
4314
4375
  _useState24 = _slicedToArray(_useState23, 2),
4315
- dataGridMappingRefreshKey = _useState24[0],
4316
- setDataGridMappingRefreshKey = _useState24[1];
4317
- var _useState25 = (0, _react.useState)(null),
4376
+ selectedDocument = _useState24[0],
4377
+ setSelectedDocument = _useState24[1];
4378
+ var _useState25 = (0, _react.useState)(0),
4318
4379
  _useState26 = _slicedToArray(_useState25, 2),
4319
- selectedDocument = _useState26[0],
4320
- setSelectedDocument = _useState26[1];
4321
- var _useState27 = (0, _react.useState)(0),
4380
+ status = _useState26[0],
4381
+ setStatus = _useState26[1];
4382
+ var _useState27 = (0, _react.useState)([]),
4322
4383
  _useState28 = _slicedToArray(_useState27, 2),
4323
- status = _useState28[0],
4324
- setStatus = _useState28[1];
4325
- var _useState29 = (0, _react.useState)([]),
4326
- _useState30 = _slicedToArray(_useState29, 2),
4327
- componentTypes = _useState30[0],
4328
- setComponentTypes = _useState30[1];
4384
+ componentTypes = _useState28[0],
4385
+ setComponentTypes = _useState28[1];
4329
4386
  var refHeaderRowInput = (0, _react.useRef)(null);
4330
4387
  var fileUploaderRef = (0, _react.useRef)(null);
4331
4388
  var refNewDocumentName = (0, _react.useRef)(null);
@@ -6050,9 +6107,9 @@ function AddDomain(_ref) {
6050
6107
  fullDomain = _useState8[0],
6051
6108
  setFullDomain = _useState8[1];
6052
6109
  var _useState9 = (0, _react.useState)(null),
6053
- _useState10 = _slicedToArray(_useState9, 2),
6054
- errorMessage = _useState10[0],
6055
- setErrorMessage = _useState10[1];
6110
+ _useState0 = _slicedToArray(_useState9, 2),
6111
+ errorMessage = _useState0[0],
6112
+ setErrorMessage = _useState0[1];
6056
6113
  var refDomain = (0, _react.useRef)(null);
6057
6114
  var refCNameTarget = (0, _react.useRef)(null);
6058
6115
  var reftxtTarget = (0, _react.useRef)(null);
@@ -6590,29 +6647,29 @@ function PrivateLabelEditor(_ref) {
6590
6647
  oEMDomainList = _useState8[0],
6591
6648
  setOEMDomainList = _useState8[1];
6592
6649
  var _useState9 = (0, _react.useState)([]),
6593
- _useState10 = _slicedToArray(_useState9, 2),
6594
- dnsFields = _useState10[0],
6595
- setDnsFields = _useState10[1];
6650
+ _useState0 = _slicedToArray(_useState9, 2),
6651
+ dnsFields = _useState0[0],
6652
+ setDnsFields = _useState0[1];
6653
+ var _useState1 = (0, _react.useState)(null),
6654
+ _useState10 = _slicedToArray(_useState1, 2),
6655
+ selectedFont = _useState10[0],
6656
+ setSelectedFont = _useState10[1];
6596
6657
  var _useState11 = (0, _react.useState)(null),
6597
6658
  _useState12 = _slicedToArray(_useState11, 2),
6598
- selectedFont = _useState12[0],
6599
- setSelectedFont = _useState12[1];
6659
+ fontUri = _useState12[0],
6660
+ setFontUri = _useState12[1];
6600
6661
  var _useState13 = (0, _react.useState)(null),
6601
6662
  _useState14 = _slicedToArray(_useState13, 2),
6602
- fontUri = _useState14[0],
6603
- setFontUri = _useState14[1];
6604
- var _useState15 = (0, _react.useState)(null),
6663
+ oEMDomain = _useState14[0],
6664
+ setOEMDomain = _useState14[1];
6665
+ var _useState15 = (0, _react.useState)(''),
6605
6666
  _useState16 = _slicedToArray(_useState15, 2),
6606
- oEMDomain = _useState16[0],
6607
- setOEMDomain = _useState16[1];
6608
- var _useState17 = (0, _react.useState)(''),
6667
+ stateBaseUri = _useState16[0],
6668
+ setBaseUri = _useState16[1];
6669
+ var _useState17 = (0, _react.useState)(false),
6609
6670
  _useState18 = _slicedToArray(_useState17, 2),
6610
- stateBaseUri = _useState18[0],
6611
- setBaseUri = _useState18[1];
6612
- var _useState19 = (0, _react.useState)(false),
6613
- _useState20 = _slicedToArray(_useState19, 2),
6614
- isNewAccount = _useState20[0],
6615
- setIsNewAccount = _useState20[1];
6671
+ isNewAccount = _useState18[0],
6672
+ setIsNewAccount = _useState18[1];
6616
6673
  var handleChange = function handleChange(event, newValue) {
6617
6674
  setValue(newValue);
6618
6675
  };
@@ -7312,17 +7369,17 @@ function Toolbar(_ref3) {
7312
7369
  isUnderline = _useState8[0],
7313
7370
  setIsUnderline = _useState8[1];
7314
7371
  var _useState9 = (0, _react.useState)(false),
7315
- _useState10 = _slicedToArray(_useState9, 2),
7316
- isStrikethrough = _useState10[0],
7317
- setIsStrikethrough = _useState10[1];
7318
- var _useState11 = (0, _react.useState)(false),
7372
+ _useState0 = _slicedToArray(_useState9, 2),
7373
+ isStrikethrough = _useState0[0],
7374
+ setIsStrikethrough = _useState0[1];
7375
+ var _useState1 = (0, _react.useState)(false),
7376
+ _useState10 = _slicedToArray(_useState1, 2),
7377
+ isCode = _useState10[0],
7378
+ setIsCode = _useState10[1];
7379
+ var _useState11 = (0, _react.useState)('paragraph'),
7319
7380
  _useState12 = _slicedToArray(_useState11, 2),
7320
- isCode = _useState12[0],
7321
- setIsCode = _useState12[1];
7322
- var _useState13 = (0, _react.useState)('paragraph'),
7323
- _useState14 = _slicedToArray(_useState13, 2),
7324
- blockType = _useState14[0],
7325
- setBlockType = _useState14[1];
7381
+ blockType = _useState12[0],
7382
+ setBlockType = _useState12[1];
7326
7383
  var updateToolbar = (0, _react.useCallback)(function () {
7327
7384
  var selection = (0, _lexical.$getSelection)();
7328
7385
  if ((0, _lexical.$isRangeSelection)(selection)) {
@@ -7551,14 +7608,14 @@ var RichTextEditor = exports.RichTextEditor = function RichTextEditor(_ref5) {
7551
7608
  height = _ref5$height === void 0 ? 400 : _ref5$height,
7552
7609
  _ref5$isDisabled = _ref5.isDisabled,
7553
7610
  isDisabled = _ref5$isDisabled === void 0 ? false : _ref5$isDisabled;
7554
- var _useState15 = (0, _react.useState)(html || ''),
7611
+ var _useState13 = (0, _react.useState)(html || ''),
7612
+ _useState14 = _slicedToArray(_useState13, 2),
7613
+ editorHtml = _useState14[0],
7614
+ setEditorHtml = _useState14[1];
7615
+ var _useState15 = (0, _react.useState)(false),
7555
7616
  _useState16 = _slicedToArray(_useState15, 2),
7556
- editorHtml = _useState16[0],
7557
- setEditorHtml = _useState16[1];
7558
- var _useState17 = (0, _react.useState)(false),
7559
- _useState18 = _slicedToArray(_useState17, 2),
7560
- isMounted = _useState18[0],
7561
- setIsMounted = _useState18[1];
7617
+ isMounted = _useState16[0],
7618
+ setIsMounted = _useState16[1];
7562
7619
  (0, _react.useEffect)(function () {
7563
7620
  setIsMounted(true);
7564
7621
  }, []);
@@ -7732,52 +7789,52 @@ var SpreadsheetViewer = exports.SpreadsheetViewer = /*#__PURE__*/(0, _react.forw
7732
7789
  var _useState9 = (0, _react.useState)(function () {
7733
7790
  return [];
7734
7791
  }),
7735
- _useState10 = _slicedToArray(_useState9, 2),
7736
- cellChanges = _useState10[0],
7737
- setCellChanges = _useState10[1];
7792
+ _useState0 = _slicedToArray(_useState9, 2),
7793
+ cellChanges = _useState0[0],
7794
+ setCellChanges = _useState0[1];
7738
7795
  var highlightsRef = (0, _react.useRef)([]);
7739
7796
  var userIdRef = (0, _react.useRef)(0);
7740
7797
  var returnedRef = (0, _react.useRef)([]);
7741
- var _useState11 = (0, _react.useState)(false),
7742
- _useState12 = _slicedToArray(_useState11, 2),
7743
- showStickyDialog = _useState12[0],
7744
- setShowStickyDialog = _useState12[1];
7798
+ var _useState1 = (0, _react.useState)(false),
7799
+ _useState10 = _slicedToArray(_useState1, 2),
7800
+ showStickyDialog = _useState10[0],
7801
+ setShowStickyDialog = _useState10[1];
7745
7802
  var leftColumnRef = (0, _react.useRef)(null);
7746
7803
  var rightColumnRef = (0, _react.useRef)(null);
7747
7804
  var topRowRef = (0, _react.useRef)(null);
7748
7805
  var bottomRowRef = (0, _react.useRef)(null);
7806
+ var _useState11 = (0, _react.useState)(null),
7807
+ _useState12 = _slicedToArray(_useState11, 2),
7808
+ leftColumnSticky = _useState12[0],
7809
+ setLeftColumnSticky = _useState12[1];
7749
7810
  var _useState13 = (0, _react.useState)(null),
7750
7811
  _useState14 = _slicedToArray(_useState13, 2),
7751
- leftColumnSticky = _useState14[0],
7752
- setLeftColumnSticky = _useState14[1];
7812
+ rightColumnSticky = _useState14[0],
7813
+ setRightColumnSticky = _useState14[1];
7753
7814
  var _useState15 = (0, _react.useState)(null),
7754
7815
  _useState16 = _slicedToArray(_useState15, 2),
7755
- rightColumnSticky = _useState16[0],
7756
- setRightColumnSticky = _useState16[1];
7816
+ topRowSticky = _useState16[0],
7817
+ setTopRowSticky = _useState16[1];
7757
7818
  var _useState17 = (0, _react.useState)(null),
7758
7819
  _useState18 = _slicedToArray(_useState17, 2),
7759
- topRowSticky = _useState18[0],
7760
- setTopRowSticky = _useState18[1];
7761
- var _useState19 = (0, _react.useState)(null),
7820
+ bottomRowSticky = _useState18[0],
7821
+ setBottomRowSticky = _useState18[1];
7822
+ var _useState19 = (0, _react.useState)([]),
7762
7823
  _useState20 = _slicedToArray(_useState19, 2),
7763
- bottomRowSticky = _useState20[0],
7764
- setBottomRowSticky = _useState20[1];
7824
+ highlights = _useState20[0],
7825
+ setHighlights = _useState20[1];
7765
7826
  var _useState21 = (0, _react.useState)([]),
7766
7827
  _useState22 = _slicedToArray(_useState21, 2),
7767
- highlights = _useState22[0],
7768
- setHighlights = _useState22[1];
7828
+ sessions = _useState22[0],
7829
+ setSessions = _useState22[1];
7769
7830
  var _useState23 = (0, _react.useState)([]),
7770
7831
  _useState24 = _slicedToArray(_useState23, 2),
7771
- sessions = _useState24[0],
7772
- setSessions = _useState24[1];
7773
- var _useState25 = (0, _react.useState)([]),
7832
+ requestedChanges = _useState24[0],
7833
+ setRequestedChanges = _useState24[1];
7834
+ var _useState25 = (0, _react.useState)(null),
7774
7835
  _useState26 = _slicedToArray(_useState25, 2),
7775
- requestedChanges = _useState26[0],
7776
- setRequestedChanges = _useState26[1];
7777
- var _useState27 = (0, _react.useState)(null),
7778
- _useState28 = _slicedToArray(_useState27, 2),
7779
- hubConnection = _useState28[0],
7780
- setHubConnection = _useState28[1];
7836
+ hubConnection = _useState26[0],
7837
+ setHubConnection = _useState26[1];
7781
7838
  var getRows = function getRows() {
7782
7839
  return returnedRef.current;
7783
7840
  };
@@ -8837,17 +8894,17 @@ function StripePayment(_ref3) {
8837
8894
  walletId = _useState8[0],
8838
8895
  setWalletId = _useState8[1];
8839
8896
  var _useState9 = (0, _react.useState)(0),
8840
- _useState10 = _slicedToArray(_useState9, 2),
8841
- value = _useState10[0],
8842
- setValue = _useState10[1];
8843
- var _useState11 = (0, _react.useState)([]),
8897
+ _useState0 = _slicedToArray(_useState9, 2),
8898
+ value = _useState0[0],
8899
+ setValue = _useState0[1];
8900
+ var _useState1 = (0, _react.useState)([]),
8901
+ _useState10 = _slicedToArray(_useState1, 2),
8902
+ paymentMethods = _useState10[0],
8903
+ setPaymentMethods = _useState10[1];
8904
+ var _useState11 = (0, _react.useState)(null),
8844
8905
  _useState12 = _slicedToArray(_useState11, 2),
8845
- paymentMethods = _useState12[0],
8846
- setPaymentMethods = _useState12[1];
8847
- var _useState13 = (0, _react.useState)(null),
8848
- _useState14 = _slicedToArray(_useState13, 2),
8849
- paymentMethod = _useState14[0],
8850
- setPaymentMethod = _useState14[1];
8906
+ paymentMethod = _useState12[0],
8907
+ setPaymentMethod = _useState12[1];
8851
8908
  var paymentMethodOpened = /*#__PURE__*/function () {
8852
8909
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
8853
8910
  var response, responsePayments;
@@ -10043,7 +10100,7 @@ var apiService = exports.apiService = function apiService() {
10043
10100
  }
10044
10101
  }, _callee9, null, [[4, 21]]);
10045
10102
  }));
10046
- function DownloadFile(_x10, _x11, _x12) {
10103
+ function DownloadFile(_x0, _x1, _x10) {
10047
10104
  return _DownloadFile.apply(this, arguments);
10048
10105
  }
10049
10106
  return DownloadFile;
@@ -10141,7 +10198,7 @@ function _asyncToGenerator(n) { return function () { var t = this, e = arguments
10141
10198
  var _authService = exports.authService = function authService() {
10142
10199
  return {
10143
10200
  dec2hex: function dec2hex(dec) {
10144
- return ('0' + dec.toString(16)).substr(-2);
10201
+ return ('0' + dec.toString(16)).slice(-2);
10145
10202
  },
10146
10203
  generateRandomString: function generateRandomString() {
10147
10204
  var array = new Uint32Array(56 / 2);
@@ -10242,12 +10299,10 @@ var _authService = exports.authService = function authService() {
10242
10299
  login: function () {
10243
10300
  var _login = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
10244
10301
  var redirectUserUri,
10245
- dnsRecord,
10246
10302
  deviceId,
10247
10303
  state,
10248
10304
  verifier,
10249
10305
  challenge,
10250
- storedVerifier,
10251
10306
  redirectUri,
10252
10307
  loginUri,
10253
10308
  _args4 = arguments;
@@ -10255,34 +10310,24 @@ var _authService = exports.authService = function authService() {
10255
10310
  while (1) switch (_context4.prev = _context4.next) {
10256
10311
  case 0:
10257
10312
  redirectUserUri = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : null;
10258
- dnsRecord = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : null;
10259
- deviceId = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : null;
10260
- state = "1234";
10313
+ deviceId = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : null;
10314
+ state = _authService().generateRandomString();
10261
10315
  if (redirectUserUri != null) {
10262
10316
  localStorage.setItem("redirectUri", redirectUserUri);
10263
10317
  }
10264
10318
  verifier = _authService().generateRandomString();
10265
- _context4.next = 8;
10319
+ _context4.next = 7;
10266
10320
  return _authService().challenge_from_verifier(verifier);
10267
- case 8:
10321
+ case 7:
10268
10322
  challenge = _context4.sent;
10269
- console.log('[PKCE] Login initiated');
10270
- console.log('[PKCE] Verifier generated | length:', verifier.length, '| preview:', verifier.substring(0, 10) + '...');
10271
- console.log('[PKCE] Challenge generated | value:', challenge);
10272
- console.log('[PKCE] authorityUri:', process.env.authorityUri);
10273
- console.log('[PKCE] client_id:', process.env.client_id);
10274
10323
  window.localStorage.setItem("verifier", verifier);
10275
- storedVerifier = window.localStorage.getItem("verifier");
10276
- console.log('[PKCE] Verifier stored successfully:', storedVerifier === verifier);
10277
- console.log('[PKCE] Stored verifier length:', storedVerifier === null || storedVerifier === void 0 ? void 0 : storedVerifier.length);
10278
10324
  redirectUri = window.location.origin + "/signin-oidc";
10279
10325
  loginUri = process.env.authorityUri + "/connect/authorize?response_type=code&state=" + state + "&client_id=" + process.env.client_id + "&scope=email%20openid%20offline_access%20profile%20api1&redirect_uri=" + redirectUri + "&code_challenge=" + challenge + "&code_challenge_method=S256";
10280
10326
  if (deviceId) {
10281
10327
  loginUri += "&deviceId=" + deviceId; // will be for chrome extention and mobile apps later
10282
10328
  }
10283
- console.log('[PKCE] Redirecting to:', loginUri);
10284
10329
  window.location.href = loginUri;
10285
- case 23:
10330
+ case 13:
10286
10331
  case "end":
10287
10332
  return _context4.stop();
10288
10333
  }
@@ -10350,32 +10395,11 @@ var _authService = exports.authService = function authService() {
10350
10395
  domain: domainHost,
10351
10396
  secure: true
10352
10397
  });
10353
-
10354
- // destroyCookie({}, "access_token", {
10355
- // maxAge: 2147483647,
10356
- // path: '/',
10357
- // domain: domainHost
10358
- // });
10359
-
10360
- // destroyCookie({}, "refresh_token", {
10361
- // maxAge: 2147483647,
10362
- // path: '/',
10363
- // domain: domainHost
10364
- // });
10365
-
10366
- // destroyCookie({}, "expires_in", {
10367
- // maxAge: 2147483647,
10368
- // path: '/',
10369
- // domain: domainHost
10370
- // });
10371
-
10372
- setTimeout(function () {
10373
- if (redirectUri == null) {
10374
- window.location.href = AuthUri + "/connect/logout?redirect=" + window.location.href;
10375
- } else {
10376
- window.location.href = AuthUri + "/connect/logout?redirect=" + redirectUri;
10377
- }
10378
- }, 500);
10398
+ if (redirectUri == null) {
10399
+ window.location.href = AuthUri + "/connect/logout?redirect=" + window.location.href;
10400
+ } else {
10401
+ window.location.href = AuthUri + "/connect/logout?redirect=" + redirectUri;
10402
+ }
10379
10403
  case 7:
10380
10404
  case "end":
10381
10405
  return _context6.stop();
@@ -10479,150 +10503,6 @@ function HeaderRecords(_ref) {
10479
10503
  }
10480
10504
  "use strict";
10481
10505
 
10482
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10483
- Object.defineProperty(exports, "__esModule", {
10484
- value: true
10485
- });
10486
- exports.signInValidator = void 0;
10487
- var _react = _interopRequireWildcard(require("react"));
10488
- var _axios = _interopRequireDefault(require("axios"));
10489
- var _queryString = _interopRequireDefault(require("query-string"));
10490
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10491
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
10492
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
10493
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
10494
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10495
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10496
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
10497
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
10498
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10499
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
10500
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
10501
- // import Cookies from 'js-cookie';
10502
-
10503
- var signInValidator = exports.signInValidator = /*#__PURE__*/function () {
10504
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(queryCode) {
10505
- var codeVerifier, _tokenParams$code, _tokenParams$code_ver, _tokenParams$code_ver2, headers, tokenParams, queryString, response, _response$data, _response$data2, _err$response, _err$response2, domainHost, redirectUri;
10506
- return _regeneratorRuntime().wrap(function _callee$(_context) {
10507
- while (1) switch (_context.prev = _context.next) {
10508
- case 0:
10509
- codeVerifier = window.localStorage.getItem("verifier");
10510
- console.log('[PKCE] signInValidator called');
10511
- console.log('[PKCE] queryCode present:', !!queryCode, '| value:', queryCode);
10512
- console.log('[PKCE] codeVerifier present:', !!codeVerifier, '| length:', codeVerifier === null || codeVerifier === void 0 ? void 0 : codeVerifier.length);
10513
- if (!(queryCode != null && codeVerifier != null)) {
10514
- _context.next = 38;
10515
- break;
10516
- }
10517
- headers = {
10518
- 'Content-Type': 'application/x-www-form-urlencoded'
10519
- };
10520
- tokenParams = {
10521
- code: queryCode,
10522
- grant_type: "authorization_code",
10523
- redirect_uri: window.location.origin + "/signin-oidc",
10524
- client_id: process.env.client_id,
10525
- client_secret: process.env.client_secret,
10526
- code_verifier: codeVerifier
10527
- };
10528
- console.log('[PKCE] Token request params:', _objectSpread(_objectSpread({}, tokenParams), {}, {
10529
- client_secret: tokenParams.client_secret ? '***' : '(missing!)',
10530
- code: ((_tokenParams$code = tokenParams.code) === null || _tokenParams$code === void 0 ? void 0 : _tokenParams$code.substring(0, 10)) + '...',
10531
- code_verifier: ((_tokenParams$code_ver = tokenParams.code_verifier) === null || _tokenParams$code_ver === void 0 ? void 0 : _tokenParams$code_ver.substring(0, 10)) + '... (length: ' + ((_tokenParams$code_ver2 = tokenParams.code_verifier) === null || _tokenParams$code_ver2 === void 0 ? void 0 : _tokenParams$code_ver2.length) + ')'
10532
- }));
10533
- console.log('[PKCE] Token endpoint:', process.env.authorityUri + '/connect/token');
10534
- console.log('[PKCE] redirect_uri:', tokenParams.redirect_uri);
10535
- queryString = _queryString["default"].stringify(tokenParams);
10536
- _context.prev = 11;
10537
- _context.next = 14;
10538
- return _axios["default"].post(process.env.authorityUri + '/connect/token', queryString, {
10539
- headers: headers
10540
- });
10541
- case 14:
10542
- response = _context.sent;
10543
- console.log('[PKCE] Token response status:', response.status);
10544
- console.log('[PKCE] Token response has access_token:', !!((_response$data = response.data) !== null && _response$data !== void 0 && _response$data.access_token));
10545
- console.log('[PKCE] Token response has refresh_token:', !!((_response$data2 = response.data) !== null && _response$data2 !== void 0 && _response$data2.refresh_token));
10546
- _context.next = 27;
10547
- break;
10548
- case 20:
10549
- _context.prev = 20;
10550
- _context.t0 = _context["catch"](11);
10551
- console.error('[PKCE] Token request FAILED');
10552
- console.error('[PKCE] Status:', (_err$response = _context.t0.response) === null || _err$response === void 0 ? void 0 : _err$response.status);
10553
- console.error('[PKCE] Error data:', JSON.stringify((_err$response2 = _context.t0.response) === null || _err$response2 === void 0 ? void 0 : _err$response2.data));
10554
- console.error('[PKCE] Error message:', _context.t0.message);
10555
- throw _context.t0;
10556
- case 27:
10557
- domainHost = window.location.hostname.split('.').slice(-2).join('.');
10558
- window.localStorage.removeItem("verifier");
10559
- _context.next = 31;
10560
- return setCookie('access_token', response.data.access_token, {
10561
- maxAge: 60 * 60 * 24 * 365,
10562
- // 1 year,
10563
- path: '/',
10564
- domain: domainHost,
10565
- secure: true
10566
- });
10567
- case 31:
10568
- _context.next = 33;
10569
- return setCookie('expires_in', response.data.expires_in, {
10570
- maxAge: 60 * 60 * 24 * 365,
10571
- // 1 year,
10572
- path: '/',
10573
- domain: domainHost,
10574
- secure: true
10575
- });
10576
- case 33:
10577
- _context.next = 35;
10578
- return setCookie('refresh_token', response.data.refresh_token, {
10579
- maxAge: 60 * 60 * 24 * 365,
10580
- // 1 year,
10581
- path: '/',
10582
- domain: domainHost,
10583
- secure: true
10584
- });
10585
- case 35:
10586
- // await setCookie(null, "access_token", response.data.access_token,
10587
- // {
10588
- // maxAge: 2147483647,
10589
- // path: '/',
10590
- // domain: domainHost,
10591
- // secure: true
10592
- // });
10593
- // await setCookie(null, "expires_in", response.data.expires_in,
10594
- // {
10595
- // maxAge: 2147483647,
10596
- // path: '/',
10597
- // domain: domainHost,
10598
- // secure: true
10599
- // });
10600
- // await setCookie(null, "refresh_token", response.data.refresh_token,
10601
- // {
10602
- // maxAge: 2147483647,
10603
- // path: '/',
10604
- // domain: domainHost,
10605
- // secure: true
10606
- // });
10607
- redirectUri = localStorage.getItem("redirectUri");
10608
- localStorage.clear();
10609
- if (redirectUri != null) {
10610
- window.location.href = redirectUri;
10611
- } else {
10612
- window.location.href = "/";
10613
- }
10614
- case 38:
10615
- case "end":
10616
- return _context.stop();
10617
- }
10618
- }, _callee, null, [[11, 20]]);
10619
- }));
10620
- return function signInValidator(_x) {
10621
- return _ref.apply(this, arguments);
10622
- };
10623
- }();
10624
- "use strict";
10625
-
10626
10506
  Object.defineProperty(exports, "__esModule", {
10627
10507
  value: true
10628
10508
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "authscape",
3
- "version": "1.0.768",
3
+ "version": "1.0.772",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -4,7 +4,7 @@ import Head from "next/head";
4
4
 
5
5
  // Re-export toast and transitions so pages can import from authscape
6
6
  export { toast, Bounce, Slide, Zoom, Flip };
7
- import { useSearchParams, usePathname } from "next/navigation";
7
+ import { useRouter } from "next/router";
8
8
  import axios from "axios";
9
9
  import querystring from "query-string";
10
10
  import Router from "next/router";
@@ -501,9 +501,22 @@ export function AuthScapeApp({
501
501
  const errorTrackingInitializedRef = useRef(false);
502
502
  const loginRedirectPending = useRef(false);
503
503
 
504
- const searchParams = useSearchParams();
505
- const queryCode = searchParams?.get("code") ?? null;
506
- const pathname = usePathname();
504
+ // Use Pages Router's `useRouter` instead of `useSearchParams`/`usePathname`
505
+ // from `next/navigation`. The `next/navigation` hooks don't hydrate query
506
+ // params reliably on the 404 page in Webkit/Safari — when the IDP redirects
507
+ // back to /signin-oidc (a URL with no Next.js page in the consumer project),
508
+ // useSearchParams() returns null and the PKCE code is never picked up.
509
+ // The Pages Router router parses query from `asPath` and works on 404 too.
510
+ const router = useRouter();
511
+ const rawQueryCode = router.isReady ? router.query.code : null;
512
+ // router.query values can be string | string[] — coerce to a single string.
513
+ const queryCode = typeof rawQueryCode === "string"
514
+ ? rawQueryCode
515
+ : (Array.isArray(rawQueryCode) ? rawQueryCode[0] : null);
516
+ // Pages Router's `router.pathname` returns the route file path (e.g. "/_error"
517
+ // for the 404 page). The auth-redirect guard below compares against
518
+ // "/signin-oidc", so we derive the actual URL path from `asPath` instead.
519
+ const pathname = (router.asPath || "").split("?")[0].split("#")[0];
507
520
 
508
521
  const signInValidator = async (codeFromQuery) => {
509
522
  if (queryCodeUsed.current === codeFromQuery) return;
@@ -567,7 +580,43 @@ export function AuthScapeApp({
567
580
  const redirectUri = window.localStorage.getItem("redirectUri") || "/";
568
581
  window.localStorage.clear();
569
582
 
570
- window.location.href = redirectUri;
583
+ // Pre-load user while spinner is still showing — eliminates the
584
+ // second GetCurrentUser call (and resulting re-renders) on the destination page.
585
+ let usr = null;
586
+ try {
587
+ usr = await module.exports.apiService().GetCurrentUser();
588
+ } catch (fetchErr) {
589
+ console.warn("[AuthScape] GetCurrentUser failed after token exchange:", fetchErr);
590
+ }
591
+ const enrichedUser = ensureUserHelpers(usr);
592
+
593
+ signedInUser.current = enrichedUser;
594
+ setSignedInUserState(enrichedUser);
595
+ setFrontEndLoadedState(true);
596
+
597
+ // Prevent the useEffect from calling GetCurrentUser again when queryCode → null.
598
+ loadingAuth.current = true;
599
+
600
+ if (enableErrorTracking && enrichedUser && !errorTrackingInitializedRef.current) {
601
+ initializeErrorTracking(enrichedUser);
602
+ errorTrackingInitializedRef.current = true;
603
+ }
604
+
605
+ if (onUserLoaded && enrichedUser) {
606
+ onUserLoaded(enrichedUser);
607
+ }
608
+
609
+ // Dismiss spinner before navigating so destination renders logged-in UI on first paint.
610
+ setIsSigningIn(false);
611
+
612
+ // Client-side navigation preserves the React component tree and all ref values,
613
+ // eliminating the hard-reload → remount → re-render chain.
614
+ // Fall back to hard navigation for absolute external URLs.
615
+ if (redirectUri.startsWith("http://") || redirectUri.startsWith("https://")) {
616
+ window.location.href = redirectUri;
617
+ } else {
618
+ Router.push(redirectUri);
619
+ }
571
620
  } catch (exp) {
572
621
  console.error("PKCE sign-in failed", exp);
573
622
  window.localStorage.clear();
@@ -805,3 +854,8 @@ export function AuthScapeApp({
805
854
  </>
806
855
  );
807
856
  }
857
+
858
+ // AuthScapeProvider is the umbrella component that bundles the three always-on AuthScape
859
+ // features (auth, error tracking, analytics) plus optional in-app notifications. Wrap your
860
+ // NextJS _app.js return value with it. Existing call sites can continue using AuthScapeApp.
861
+ export const AuthScapeProvider = AuthScapeApp;
@@ -5,7 +5,7 @@ export const authService = () => {
5
5
  return {
6
6
 
7
7
  dec2hex: (dec) => {
8
- return ('0' + dec.toString(16)).substr(-2)
8
+ return ('0' + dec.toString(16)).slice(-2)
9
9
  },
10
10
  generateRandomString: () => {
11
11
  var array = new Uint32Array(56/2);
@@ -64,9 +64,10 @@ export const authService = () => {
64
64
 
65
65
  return response;
66
66
  },
67
- login: async (redirectUserUri = null, dnsRecord = null, deviceId = null) => {
67
+ login: async (redirectUserUri = null, deviceId = null) => {
68
+
69
+ let state = authService().generateRandomString();
68
70
 
69
- let state = "1234";
70
71
  if (redirectUserUri != null)
71
72
  {
72
73
  localStorage.setItem("redirectUri", redirectUserUri);
@@ -75,18 +76,8 @@ export const authService = () => {
75
76
  let verifier = authService().generateRandomString();
76
77
  var challenge = await authService().challenge_from_verifier(verifier);
77
78
 
78
- console.log('[PKCE] Login initiated');
79
- console.log('[PKCE] Verifier generated | length:', verifier.length, '| preview:', verifier.substring(0, 10) + '...');
80
- console.log('[PKCE] Challenge generated | value:', challenge);
81
- console.log('[PKCE] authorityUri:', process.env.authorityUri);
82
- console.log('[PKCE] client_id:', process.env.client_id);
83
-
84
79
  window.localStorage.setItem("verifier", verifier);
85
80
 
86
- const storedVerifier = window.localStorage.getItem("verifier");
87
- console.log('[PKCE] Verifier stored successfully:', storedVerifier === verifier);
88
- console.log('[PKCE] Stored verifier length:', storedVerifier?.length);
89
-
90
81
  let redirectUri = window.location.origin + "/signin-oidc";
91
82
  let loginUri = process.env.authorityUri + "/connect/authorize?response_type=code&state=" + state + "&client_id=" + process.env.client_id + "&scope=email%20openid%20offline_access%20profile%20api1&redirect_uri=" + redirectUri + "&code_challenge=" + challenge + "&code_challenge_method=S256";
92
83
 
@@ -95,7 +86,6 @@ export const authService = () => {
95
86
  loginUri += "&deviceId=" + deviceId; // will be for chrome extention and mobile apps later
96
87
  }
97
88
 
98
- console.log('[PKCE] Redirecting to:', loginUri);
99
89
  window.location.href = loginUri;
100
90
  },
101
91
  signUp: (redirectUrl = null) => {
@@ -126,40 +116,18 @@ export const authService = () => {
126
116
  let domainHost = window.location.hostname.split('.').slice(-2).join('.');
127
117
  let AuthUri = process.env.authorityUri;
128
118
 
129
-
130
119
  Cookies.remove('access_token', { path: '/', domain: domainHost, secure: true });
131
120
  Cookies.remove('refresh_token', { path: '/', domain: domainHost, secure: true });
132
121
  Cookies.remove('expires_in', { path: '/', domain: domainHost, secure: true });
133
122
 
134
-
135
- // destroyCookie({}, "access_token", {
136
- // maxAge: 2147483647,
137
- // path: '/',
138
- // domain: domainHost
139
- // });
140
-
141
- // destroyCookie({}, "refresh_token", {
142
- // maxAge: 2147483647,
143
- // path: '/',
144
- // domain: domainHost
145
- // });
146
-
147
- // destroyCookie({}, "expires_in", {
148
- // maxAge: 2147483647,
149
- // path: '/',
150
- // domain: domainHost
151
- // });
152
-
153
- setTimeout(() => {
154
- if (redirectUri == null)
155
- {
156
- window.location.href = AuthUri + "/connect/logout?redirect=" + window.location.href;
157
- }
158
- else
159
- {
160
- window.location.href = AuthUri + "/connect/logout?redirect=" + redirectUri;
161
- }
162
- }, 500);
123
+ if (redirectUri == null)
124
+ {
125
+ window.location.href = AuthUri + "/connect/logout?redirect=" + window.location.href;
126
+ }
127
+ else
128
+ {
129
+ window.location.href = AuthUri + "/connect/logout?redirect=" + redirectUri;
130
+ }
163
131
 
164
132
  },
165
133
  }
@@ -1,117 +0,0 @@
1
- import React, { useEffect, useState } from 'react';
2
- import axios from 'axios';
3
- import querystring from "query-string";
4
- // import Cookies from 'js-cookie';
5
-
6
- export const signInValidator = async (queryCode) => {
7
-
8
- let codeVerifier = window.localStorage.getItem("verifier");
9
-
10
- console.log('[PKCE] signInValidator called');
11
- console.log('[PKCE] queryCode present:', !!queryCode, '| value:', queryCode);
12
- console.log('[PKCE] codeVerifier present:', !!codeVerifier, '| length:', codeVerifier?.length);
13
-
14
- if (queryCode != null && codeVerifier != null)
15
- {
16
- const headers = {'Content-Type': 'application/x-www-form-urlencoded'}
17
-
18
- const tokenParams = {
19
- code: queryCode,
20
- grant_type: "authorization_code",
21
- redirect_uri: window.location.origin + "/signin-oidc",
22
- client_id: process.env.client_id,
23
- client_secret: process.env.client_secret,
24
- code_verifier: codeVerifier
25
- };
26
-
27
- console.log('[PKCE] Token request params:', {
28
- ...tokenParams,
29
- client_secret: tokenParams.client_secret ? '***' : '(missing!)',
30
- code: tokenParams.code?.substring(0, 10) + '...',
31
- code_verifier: tokenParams.code_verifier?.substring(0, 10) + '... (length: ' + tokenParams.code_verifier?.length + ')',
32
- });
33
- console.log('[PKCE] Token endpoint:', process.env.authorityUri + '/connect/token');
34
- console.log('[PKCE] redirect_uri:', tokenParams.redirect_uri);
35
-
36
- let queryString = querystring.stringify(tokenParams);
37
-
38
- let response;
39
- try {
40
- response = await axios.post(process.env.authorityUri + '/connect/token', queryString, {
41
- headers: headers
42
- });
43
- console.log('[PKCE] Token response status:', response.status);
44
- console.log('[PKCE] Token response has access_token:', !!response.data?.access_token);
45
- console.log('[PKCE] Token response has refresh_token:', !!response.data?.refresh_token);
46
- } catch (err) {
47
- console.error('[PKCE] Token request FAILED');
48
- console.error('[PKCE] Status:', err.response?.status);
49
- console.error('[PKCE] Error data:', JSON.stringify(err.response?.data));
50
- console.error('[PKCE] Error message:', err.message);
51
- throw err;
52
- }
53
-
54
- let domainHost = window.location.hostname.split('.').slice(-2).join('.');
55
- window.localStorage.removeItem("verifier");
56
-
57
-
58
-
59
- await setCookie('access_token', response.data.access_token, {
60
- maxAge: 60 * 60 * 24 * 365, // 1 year,
61
- path: '/',
62
- domain: domainHost,
63
- secure: true
64
- });
65
-
66
- await setCookie('expires_in', response.data.expires_in, {
67
- maxAge: 60 * 60 * 24 * 365, // 1 year,
68
- path: '/',
69
- domain: domainHost,
70
- secure: true
71
- });
72
-
73
- await setCookie('refresh_token', response.data.refresh_token, {
74
- maxAge: 60 * 60 * 24 * 365, // 1 year,
75
- path: '/',
76
- domain: domainHost,
77
- secure: true
78
- });
79
-
80
-
81
- // await setCookie(null, "access_token", response.data.access_token,
82
- // {
83
- // maxAge: 2147483647,
84
- // path: '/',
85
- // domain: domainHost,
86
- // secure: true
87
- // });
88
-
89
- // await setCookie(null, "expires_in", response.data.expires_in,
90
- // {
91
- // maxAge: 2147483647,
92
- // path: '/',
93
- // domain: domainHost,
94
- // secure: true
95
- // });
96
-
97
- // await setCookie(null, "refresh_token", response.data.refresh_token,
98
- // {
99
- // maxAge: 2147483647,
100
- // path: '/',
101
- // domain: domainHost,
102
- // secure: true
103
- // });
104
-
105
-
106
- let redirectUri = localStorage.getItem("redirectUri")
107
- localStorage.clear();
108
- if (redirectUri != null)
109
- {
110
- window.location.href = redirectUri;
111
- }
112
- else
113
- {
114
- window.location.href = "/";
115
- }
116
- }
117
- }