@zengenti/contensis-react-base 3.1.1-beta.13 → 3.1.1-beta.15

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.
Files changed (129) hide show
  1. package/cjs/{App-ef6e6b20.js → App-8a2f85d5.js} +68 -61
  2. package/cjs/App-8a2f85d5.js.map +1 -0
  3. package/cjs/{ChangePassword.container-647da27e.js → ChangePassword.container-efcb1fcd.js} +27 -28
  4. package/cjs/ChangePassword.container-efcb1fcd.js.map +1 -0
  5. package/{esm/ToJs-e0b935d4.js → cjs/CookieHelper.class-34994aa1.js} +11 -97
  6. package/cjs/CookieHelper.class-34994aa1.js.map +1 -0
  7. package/cjs/{RouteLoader-5e6ee174.js → RouteLoader-4fb33db9.js} +10 -6
  8. package/cjs/RouteLoader-4fb33db9.js.map +1 -0
  9. package/cjs/{ContensisDeliveryApi-3532f68b.js → SSRContext-433c53e4.js} +103 -42
  10. package/cjs/SSRContext-433c53e4.js.map +1 -0
  11. package/cjs/ToJs-7f965106.js +128 -0
  12. package/cjs/ToJs-7f965106.js.map +1 -0
  13. package/cjs/client.js +20 -20
  14. package/cjs/client.js.map +1 -1
  15. package/cjs/contensis-react-base.js +28 -25
  16. package/cjs/contensis-react-base.js.map +1 -1
  17. package/cjs/redux.js +16 -16
  18. package/cjs/redux.js.map +1 -1
  19. package/cjs/routing.js +13 -4
  20. package/cjs/routing.js.map +1 -1
  21. package/cjs/{selectors-ce76f972.js → selectors-e3f1fd85.js} +235 -3
  22. package/cjs/selectors-e3f1fd85.js.map +1 -0
  23. package/cjs/{version-1fd3379a.js → store-665c229b.js} +7 -23
  24. package/cjs/store-665c229b.js.map +1 -0
  25. package/cjs/user.js +9 -10
  26. package/cjs/user.js.map +1 -1
  27. package/cjs/util.js +14 -10
  28. package/cjs/util.js.map +1 -1
  29. package/cjs/{version-34d2733c.js → version-3b05d6c8.js} +17 -17
  30. package/cjs/{version-34d2733c.js.map → version-3b05d6c8.js.map} +1 -1
  31. package/cjs/version-7b43af3e.js +20 -0
  32. package/cjs/version-7b43af3e.js.map +1 -0
  33. package/esm/{App-a9eabdd1.js → App-91d81f0c.js} +37 -30
  34. package/esm/App-91d81f0c.js.map +1 -0
  35. package/esm/{ChangePassword.container-8a4873c6.js → ChangePassword.container-96dab474.js} +4 -5
  36. package/esm/ChangePassword.container-96dab474.js.map +1 -0
  37. package/{cjs/ToJs-56c5315e.js → esm/CookieHelper.class-6d649751.js} +5 -129
  38. package/esm/CookieHelper.class-6d649751.js.map +1 -0
  39. package/esm/{RouteLoader-a419b98c.js → RouteLoader-94ca1c51.js} +10 -6
  40. package/esm/RouteLoader-94ca1c51.js.map +1 -0
  41. package/esm/{ContensisDeliveryApi-4b5e0510.js → SSRContext-88841734.js} +95 -41
  42. package/esm/SSRContext-88841734.js.map +1 -0
  43. package/esm/ToJs-67b34be1.js +98 -0
  44. package/esm/ToJs-67b34be1.js.map +1 -0
  45. package/esm/client.js +18 -18
  46. package/esm/client.js.map +1 -1
  47. package/esm/contensis-react-base.js +15 -12
  48. package/esm/contensis-react-base.js.map +1 -1
  49. package/esm/redux.js +7 -7
  50. package/esm/routing.js +13 -4
  51. package/esm/routing.js.map +1 -1
  52. package/esm/selectors-d2bdfe22.js +396 -0
  53. package/esm/selectors-d2bdfe22.js.map +1 -0
  54. package/esm/{version-45170b74.js → store-f524c50d.js} +4 -16
  55. package/esm/store-f524c50d.js.map +1 -0
  56. package/esm/user.js +7 -8
  57. package/esm/user.js.map +1 -1
  58. package/esm/util.js +6 -5
  59. package/esm/util.js.map +1 -1
  60. package/esm/version-7f50b694.js +15 -0
  61. package/esm/version-7f50b694.js.map +1 -0
  62. package/esm/{version-31aa860d.js → version-dcc28b32.js} +3 -3
  63. package/esm/{version-31aa860d.js.map → version-dcc28b32.js.map} +1 -1
  64. package/models/app/App.d.ts +1 -1
  65. package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +1 -1
  66. package/models/client/client.d.ts +1 -1
  67. package/models/index.d.ts +1 -2
  68. package/models/models/AppRouteProps.d.ts +11 -0
  69. package/models/{redux/appstate.d.ts → models/AppState.d.ts} +1 -1
  70. package/models/models/ContentTypeMapping.d.ts +29 -0
  71. package/models/models/EntryMapper.d.ts +3 -0
  72. package/models/models/GetRouteActionArgs.d.ts +15 -0
  73. package/models/models/ReduxInjector.d.ts +5 -0
  74. package/models/models/RequireLogin.d.ts +6 -0
  75. package/models/models/RouteComponent.d.ts +2 -0
  76. package/models/models/RouteComponentProps.d.ts +9 -0
  77. package/models/models/RouteLoaderProps.d.ts +6 -0
  78. package/models/models/RouteNode.d.ts +5 -0
  79. package/models/models/SSRContext.d.ts +11 -0
  80. package/models/models/StaticRoute.d.ts +28 -0
  81. package/models/models/WithEvents.d.ts +29 -0
  82. package/models/models/config/AppConfig.d.ts +12 -0
  83. package/models/{config.d.ts → models/config/ServerConfig.d.ts} +2 -12
  84. package/models/models/config/StateType.d.ts +1 -0
  85. package/models/models/config/index.d.ts +3 -0
  86. package/models/models/index.d.ts +15 -0
  87. package/models/redux/sagas/navigation.d.ts +1 -3
  88. package/models/redux/store/injectors.d.ts +4 -4
  89. package/models/redux/store/store.d.ts +1 -2
  90. package/models/routing/components/RouteLoader.d.ts +1 -1
  91. package/models/routing/redux/actions.d.ts +2 -3
  92. package/models/routing/redux/selectors.d.ts +1 -2
  93. package/models/routing/util/find-contenttype-mapping.d.ts +1 -1
  94. package/models/server/internalServer.d.ts +1 -1
  95. package/models/server/util/bundles.d.ts +1 -1
  96. package/models/server/util/headers.d.ts +1 -1
  97. package/models/server/webApp.d.ts +1 -1
  98. package/models/user/redux/selectors.d.ts +1 -2
  99. package/models/user/util/matchGroups.d.ts +1 -1
  100. package/models/util/CachedDeliveryApi.d.ts +5 -4
  101. package/models/util/ContensisDeliveryApi.d.ts +7 -4
  102. package/models/util/SSRContext.d.ts +30 -0
  103. package/models/util/index.d.ts +1 -0
  104. package/models/util/json-mapper.d.ts +1 -2
  105. package/package.json +1 -1
  106. package/cjs/App-ef6e6b20.js.map +0 -1
  107. package/cjs/ChangePassword.container-647da27e.js.map +0 -1
  108. package/cjs/ContensisDeliveryApi-3532f68b.js.map +0 -1
  109. package/cjs/CookieConstants-000427db.js +0 -10
  110. package/cjs/CookieConstants-000427db.js.map +0 -1
  111. package/cjs/RouteLoader-5e6ee174.js.map +0 -1
  112. package/cjs/ToJs-56c5315e.js.map +0 -1
  113. package/cjs/reducers-ea1b2dc0.js +0 -236
  114. package/cjs/reducers-ea1b2dc0.js.map +0 -1
  115. package/cjs/selectors-ce76f972.js.map +0 -1
  116. package/cjs/version-1fd3379a.js.map +0 -1
  117. package/esm/App-a9eabdd1.js.map +0 -1
  118. package/esm/ChangePassword.container-8a4873c6.js.map +0 -1
  119. package/esm/ContensisDeliveryApi-4b5e0510.js.map +0 -1
  120. package/esm/CookieConstants-3d3b6531.js +0 -6
  121. package/esm/CookieConstants-3d3b6531.js.map +0 -1
  122. package/esm/RouteLoader-a419b98c.js.map +0 -1
  123. package/esm/ToJs-e0b935d4.js.map +0 -1
  124. package/esm/reducers-919da5e0.js +0 -213
  125. package/esm/reducers-919da5e0.js.map +0 -1
  126. package/esm/selectors-08a9e1f0.js +0 -186
  127. package/esm/selectors-08a9e1f0.js.map +0 -1
  128. package/esm/version-45170b74.js.map +0 -1
  129. package/models/routing/routes.d.ts +0 -133
@@ -1,12 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var effects = require('@redux-saga/core/effects');
4
- var reducers = require('./reducers-ea1b2dc0.js');
5
- var ToJs = require('./ToJs-56c5315e.js');
6
- var selectors = require('./selectors-ce76f972.js');
4
+ var selectors = require('./selectors-e3f1fd85.js');
5
+ var ToJs = require('./ToJs-7f965106.js');
7
6
  var mapJson = require('jsonpath-mapper');
8
7
  var to = require('await-to-js');
9
- var CookieConstants = require('./CookieConstants-000427db.js');
8
+ var CookieHelper_class = require('./CookieHelper.class-34994aa1.js');
10
9
  var reactCookie = require('react-cookie');
11
10
  var reactRedux = require('react-redux');
12
11
 
@@ -128,7 +127,7 @@ const context = typeof window != 'undefined' ? window : global;
128
127
  class LoginHelper {
129
128
  constructor(cookies) {
130
129
  this.cookies = void 0;
131
- this.cookies = cookies || new ToJs.CookieHelper();
130
+ this.cookies = cookies || new CookieHelper_class.CookieHelper();
132
131
  }
133
132
  static ClientRedirectToHome(location) {
134
133
  if (typeof window != 'undefined') {
@@ -262,23 +261,23 @@ class LoginHelper {
262
261
  contensisClassicToken,
263
262
  refreshToken
264
263
  }) {
265
- console.info('SetLoginCookies:', CookieConstants.LOGIN_COOKIE, contensisClassicToken, CookieConstants.REFRESH_TOKEN_COOKIE, refreshToken);
266
- if (contensisClassicToken) this.cookies.SetCookie(CookieConstants.LOGIN_COOKIE, contensisClassicToken);
267
- if (refreshToken) this.cookies.SetCookie(CookieConstants.REFRESH_TOKEN_COOKIE, refreshToken);
264
+ console.info('SetLoginCookies:', CookieHelper_class.LOGIN_COOKIE, contensisClassicToken, CookieHelper_class.REFRESH_TOKEN_COOKIE, refreshToken);
265
+ if (contensisClassicToken) this.cookies.SetCookie(CookieHelper_class.LOGIN_COOKIE, contensisClassicToken);
266
+ if (refreshToken) this.cookies.SetCookie(CookieHelper_class.REFRESH_TOKEN_COOKIE, refreshToken);
268
267
  }
269
268
  GetCachedCredentials() {
270
269
  return {
271
270
  bearerToken: null,
272
271
  bearerTokenExpiryDate: null,
273
- refreshToken: this.cookies.GetCookie(CookieConstants.REFRESH_TOKEN_COOKIE),
272
+ refreshToken: this.cookies.GetCookie(CookieHelper_class.REFRESH_TOKEN_COOKIE),
274
273
  refreshTokenExpiryDate: null,
275
- contensisClassicToken: this.cookies.GetCookie(CookieConstants.LOGIN_COOKIE),
274
+ contensisClassicToken: this.cookies.GetCookie(CookieHelper_class.LOGIN_COOKIE),
276
275
  securityToken: null
277
276
  };
278
277
  }
279
278
  ClearCachedCredentials() {
280
- this.cookies.DeleteCookie(CookieConstants.LOGIN_COOKIE);
281
- this.cookies.DeleteCookie(CookieConstants.REFRESH_TOKEN_COOKIE);
279
+ this.cookies.DeleteCookie(CookieHelper_class.LOGIN_COOKIE);
280
+ this.cookies.DeleteCookie(CookieHelper_class.REFRESH_TOKEN_COOKIE);
282
281
  if (LoginHelper.WSFED_LOGIN && typeof window !== 'undefined') {
283
282
  // remove any oidc keys left over in localStorage
284
283
  const {
@@ -411,7 +410,7 @@ LoginHelper.GetUserDetails = async client => {
411
410
  return [userError, user];
412
411
  };
413
412
 
414
- const loginSagas = [effects.takeEvery(reducers.LOGIN_USER, loginUserSaga), effects.takeEvery(reducers.LOGOUT_USER, logoutUserSaga), effects.takeEvery(reducers.VALIDATE_USER, validateUserSaga), effects.takeEvery(reducers.SET_AUTHENTICATION_STATE, redirectAfterSuccessfulLoginSaga)];
413
+ const loginSagas = [effects.takeEvery(selectors.LOGIN_USER, loginUserSaga), effects.takeEvery(selectors.LOGOUT_USER, logoutUserSaga), effects.takeEvery(selectors.VALIDATE_USER, validateUserSaga), effects.takeEvery(selectors.SET_AUTHENTICATION_STATE, redirectAfterSuccessfulLoginSaga)];
415
414
  function* handleRequiresLoginSaga(action) {
416
415
  var _entry$sys;
417
416
  const {
@@ -456,7 +455,7 @@ function* handleRequiresLoginSaga(action) {
456
455
  }
457
456
  // otherwise do a non blocking put to handle validation in the background
458
457
  else yield effects.put({
459
- type: reducers.VALIDATE_USER,
458
+ type: selectors.VALIDATE_USER,
460
459
  cookies,
461
460
  securityToken
462
461
  });
@@ -486,7 +485,7 @@ function* validateUserSaga({
486
485
  // tokens are found, in this case we set loading state manually
487
486
  // so we don't need to set and unset loading if there are no stored
488
487
  yield effects.put({
489
- type: reducers.SET_AUTHENTICATION_STATE,
488
+ type: selectors.SET_AUTHENTICATION_STATE,
490
489
  authenticationState: {
491
490
  isLoading: true
492
491
  }
@@ -506,7 +505,7 @@ function* validateUserSaga({
506
505
  if (error) {
507
506
  login.ClearCachedCredentials();
508
507
  yield effects.put({
509
- type: reducers.SET_AUTHENTICATION_STATE,
508
+ type: selectors.SET_AUTHENTICATION_STATE,
510
509
  authenticationState: {
511
510
  isError: true,
512
511
  errorMessage: (error === null || error === void 0 ? void 0 : error.message) || error && 'toString' in error && error.toString()
@@ -539,7 +538,7 @@ function* loginUserSaga(action = {}) {
539
538
 
540
539
  // If a WSFED_LOGIN site has dispatched the loginUser action
541
540
  // just redirect them to the Identity Provider sign in
542
- if (action.type === reducers.LOGIN_USER && LoginHelper.WSFED_LOGIN) LoginHelper.ClientRedirectToSignInPage();
541
+ if (action.type === selectors.LOGIN_USER && LoginHelper.WSFED_LOGIN) LoginHelper.ClientRedirectToSignInPage();
543
542
  const {
544
543
  authenticationState,
545
544
  user
@@ -549,7 +548,7 @@ function* loginUserSaga(action = {}) {
549
548
  clientCredentials
550
549
  });
551
550
  yield effects.put({
552
- type: reducers.SET_AUTHENTICATION_STATE,
551
+ type: selectors.SET_AUTHENTICATION_STATE,
553
552
  authenticationState,
554
553
  user
555
554
  });
@@ -583,7 +582,7 @@ function* logoutUserSaga({
583
582
  cookies
584
583
  }) {
585
584
  yield effects.put({
586
- type: reducers.SET_AUTHENTICATION_STATE,
585
+ type: selectors.SET_AUTHENTICATION_STATE,
587
586
  user: null
588
587
  });
589
588
  yield LoginHelper.withCookies(cookies).LogoutUser(redirectPath);
@@ -594,7 +593,7 @@ function* refreshSecurityToken() {
594
593
  const client = yield getManagementApiClient(clientCredentials);
595
594
  yield client.authenticate();
596
595
  yield effects.put({
597
- type: reducers.SET_AUTHENTICATION_STATE,
596
+ type: selectors.SET_AUTHENTICATION_STATE,
598
597
  authenticationState: {
599
598
  clientCredentials: mapClientCredentials(client)
600
599
  }
@@ -602,26 +601,26 @@ function* refreshSecurityToken() {
602
601
  }
603
602
  }
604
603
 
605
- const loginUser = (username, password, cookies) => selectors.action(reducers.LOGIN_USER, {
604
+ const loginUser = (username, password, cookies) => selectors.action(selectors.LOGIN_USER, {
606
605
  username,
607
606
  password,
608
607
  cookies
609
608
  });
610
- const logoutUser = (redirectPath, cookies) => selectors.action(reducers.LOGOUT_USER, {
609
+ const logoutUser = (redirectPath, cookies) => selectors.action(selectors.LOGOUT_USER, {
611
610
  redirectPath,
612
611
  cookies
613
612
  });
614
- const registerUser = (user, mappers) => selectors.action(reducers.REGISTER_USER, {
613
+ const registerUser = (user, mappers) => selectors.action(selectors.REGISTER_USER, {
615
614
  user,
616
615
  mappers
617
616
  });
618
- const requestPasswordReset = userEmailObject => selectors.action(reducers.REQUEST_USER_PASSWORD_RESET, {
617
+ const requestPasswordReset = userEmailObject => selectors.action(selectors.REQUEST_USER_PASSWORD_RESET, {
619
618
  userEmailObject
620
619
  });
621
- const resetPassword = resetPasswordObject => selectors.action(reducers.RESET_USER_PASSWORD, {
620
+ const resetPassword = resetPasswordObject => selectors.action(selectors.RESET_USER_PASSWORD, {
622
621
  resetPasswordObject
623
622
  });
624
- const changePassword = (userId, currentPassword, newPassword) => selectors.action(reducers.CHANGE_USER_PASSWORD, {
623
+ const changePassword = (userId, currentPassword, newPassword) => selectors.action(selectors.CHANGE_USER_PASSWORD, {
625
624
  userId,
626
625
  currentPassword,
627
626
  newPassword
@@ -638,7 +637,7 @@ var actions = /*#__PURE__*/Object.freeze({
638
637
  });
639
638
 
640
639
  const useLogin = () => {
641
- const cookies = new ToJs.CookieHelper(...reactCookie.useCookies());
640
+ const cookies = new CookieHelper_class.CookieHelper(...reactCookie.useCookies());
642
641
  const dispatch = reactRedux.useDispatch();
643
642
  const select = reactRedux.useSelector;
644
643
  return {
@@ -760,4 +759,4 @@ exports.useChangePassword = useChangePassword;
760
759
  exports.useForgotPassword = useForgotPassword;
761
760
  exports.useLogin = useLogin;
762
761
  exports.useRegistration = useRegistration;
763
- //# sourceMappingURL=ChangePassword.container-647da27e.js.map
762
+ //# sourceMappingURL=ChangePassword.container-efcb1fcd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangePassword.container-efcb1fcd.js","sources":["../src/routing/util/find-contenttype-mapping.ts","../src/user/transformations/mapClientCredentials.ts","../src/user/util/ContensisManagementApi.ts","../src/user/util/OidcUserManager.ts","../src/user/util/LoginHelper.class.ts","../src/user/redux/sagas/login.ts","../src/user/redux/actions.ts","../src/user/hooks/useLogin.ts","../src/user/containers/Login.container.js","../src/user/hooks/useRegistration.js","../src/user/containers/Registration.container.js","../src/user/hooks/useForgotPassword.js","../src/user/containers/ForgotPassword.container.js","../src/user/hooks/useChangePassword.js","../src/user/containers/ChangePassword.container.js"],"sourcesContent":["import { ContentTypeMapping } from '~/models';\n\nexport const findContentTypeMapping = (\n ContentTypeMappings: ContentTypeMapping[],\n contentTypeId: string\n) => ContentTypeMappings.find(ct => ct.contentTypeID === contentTypeId);\n","import { Client } from 'contensis-management-api';\nimport { mapJson } from '~/util/json-mapper';\nimport { ManagementApiClientCredentials } from '../util/ContensisManagementApi';\n\nconst clientCredentials = {\n bearerToken: 'bearerToken',\n bearerTokenExpiryDate: ({ bearerTokenExpiryDate }) =>\n bearerTokenExpiryDate.toISOString(),\n refreshToken: 'refreshToken',\n refreshTokenExpiryDate: ({ refreshTokenExpiryDate }) =>\n refreshTokenExpiryDate.toISOString(),\n contensisClassicToken: 'contensisClassicToken',\n};\nexport default (obj: Client) =>\n mapJson(obj, clientCredentials) as ManagementApiClientCredentials;\n","export type ManagementApiClientCredentials = {\n bearerToken?: string;\n bearerTokenExpiryDate?: Date;\n refreshToken?: string;\n refreshTokenExpiryDate?: Date;\n contensisClassicToken?: string;\n username?: string;\n password?: string;\n};\n\nexport const getManagementApiClient = async ({\n bearerToken,\n bearerTokenExpiryDate,\n refreshToken,\n refreshTokenExpiryDate,\n contensisClassicToken,\n username,\n password,\n}: ManagementApiClientCredentials) => {\n const rootUrl = SERVERS.api || SERVERS.cms; /* global SERVERS */\n const projectId = PROJECTS[0].id; /* global PROJECTS */\n\n let config = {};\n if (refreshToken) {\n config = {\n clientType: 'contensis_classic_refresh_token',\n clientDetails: {\n refreshToken,\n },\n };\n } else {\n config = {\n clientType: 'contensis_classic',\n clientDetails: {\n username,\n password,\n },\n };\n }\n\n let { Client } = await import('contensis-management-api');\n\n if (typeof window === 'undefined') {\n const { UniversalClient } = await import('contensis-management-api');\n Client = UniversalClient;\n }\n\n const client = Client.create({\n ...config,\n projectId,\n rootUrl,\n });\n\n if (bearerToken) client.bearerToken = bearerToken;\n if (bearerTokenExpiryDate)\n client.bearerTokenExpiryDate = bearerTokenExpiryDate;\n if (refreshToken) client.refreshToken = refreshToken;\n if (refreshTokenExpiryDate)\n client.refreshTokenExpiryDate = refreshTokenExpiryDate;\n if (contensisClassicToken)\n (client as any).contensisClassicToken = contensisClassicToken;\n\n return client;\n};\n","import { UserManagerSettings } from 'oidc-client';\n\nconst context = (\n typeof window != 'undefined' ? window : global\n) as typeof globalThis & {\n WSFED_LOGIN: string;\n};\n\nconst requireOidc =\n process.env.NODE_ENV === 'development'\n ? WSFED_LOGIN === 'true' /* global WSFED_LOGIN */\n : context.WSFED_LOGIN === 'true';\n\nconst servers = SERVERS; /* global SERVERS */\n\nexport const userManagerConfig =\n typeof window !== 'undefined'\n ? {\n authority: `${servers.cms}/authenticate/`,\n client_id: 'WebsiteAdfsClient',\n redirect_uri: window.location.toString(),\n post_logout_redirect_uri: window.location.toString(),\n response_type: 'id_token',\n scope: 'openid',\n filterProtocolClaims: false,\n }\n : {};\n\nexport const createUserManager = async (config: UserManagerSettings) => {\n if (typeof window !== 'undefined' && requireOidc) {\n try {\n const { UserManager } = await import(\n /* webpackChunkName: \"oidcclient\" */ 'oidc-client'\n );\n return new UserManager(config);\n } catch (e) {\n console.error('Exception in createUserManager: ', e);\n }\n } else return;\n};\n","import { to } from 'await-to-js';\n\nimport {\n ManagementApiClientCredentials,\n getManagementApiClient,\n} from './ContensisManagementApi';\n\nimport mapClientCredentials from '../transformations/mapClientCredentials';\nimport { createUserManager, userManagerConfig } from './OidcUserManager';\nimport { LOGIN_COOKIE, REFRESH_TOKEN_COOKIE } from './CookieConstants';\nimport { AuthenticationState, UserWithGroups } from '../state';\nimport { Client } from 'contensis-management-api';\nimport { CookieHelper } from './CookieHelper.class';\n\nconst context = (\n typeof window != 'undefined' ? window : global\n) as typeof globalThis & {\n WSFED_LOGIN: any;\n};\n\nexport class LoginHelper {\n static CMS_URL = SERVERS.cms /* global SERVERS */;\n static WSFED_LOGIN =\n process.env.NODE_ENV === 'development'\n ? WSFED_LOGIN === 'true' /* global WSFED_LOGIN */\n : context.WSFED_LOGIN === 'true';\n static LOGIN_ROUTE = '/account/login';\n static ACCESS_DENIED_ROUTE = '/account/access-denied';\n\n cookies: CookieHelper;\n\n constructor(cookies?: CookieHelper) {\n this.cookies = cookies || new CookieHelper();\n }\n\n static withCookies = (cookieHelper: CookieHelper) =>\n new LoginHelper(cookieHelper);\n\n static GetUserDetails = async (\n client: Client\n ): Promise<[Error | null, UserWithGroups | undefined]> => {\n const [userError, user] = await to(client.security.users.getCurrent());\n if (user && user.id) {\n const [groupsError, groupsResult] = await to(\n client.security.users.getUserGroups({\n userId: user.id,\n includeInherited: true,\n pageOptions: { pageSize: 100 },\n })\n );\n // Set groups attribute in user object to be the items\n // array from the getUserGroups result\n if (groupsResult && groupsResult.items)\n (user as UserWithGroups).groups = groupsResult.items;\n\n // If groups call fails then log the error but allow the user to login still\n // eslint-disable-next-line no-console\n if (groupsError) console.log(groupsError);\n }\n return [userError, user as UserWithGroups];\n };\n\n static ClientRedirectToHome(location?: Location) {\n if (typeof window != 'undefined') {\n let url = '/';\n if (location) {\n const { search, hash } = location;\n url = search ? `${url}${search}` : url;\n url = hash ? `${url}${hash}` : url;\n }\n window.location.href = url;\n }\n }\n\n static async ClientRedirectToSignInPage(redirectPath?: string) {\n if (typeof location === 'undefined') return;\n if (LoginHelper.WSFED_LOGIN) {\n await LoginHelper.WsFedLogout();\n await LoginHelper.WsFedLogin();\n } else {\n // Standard Contensis Login\n let url = LoginHelper.LOGIN_ROUTE;\n if (typeof redirectPath === 'string')\n url = `${url}?redirect_uri=${redirectPath}`;\n if (\n typeof location !== 'undefined' &&\n redirectPath !== LoginHelper.LOGIN_ROUTE\n )\n location.replace(url);\n }\n }\n\n static GetAccessDeniedRoute(originalPath) {\n let url = LoginHelper.ACCESS_DENIED_ROUTE;\n if (originalPath !== url && typeof originalPath === 'string')\n url = `${url}?original_uri=${originalPath}`;\n return url;\n }\n\n static ClientRedirectToAccessDeniedPage(originalPath) {\n if (typeof location !== 'undefined')\n location.href = LoginHelper.GetAccessDeniedRoute(originalPath);\n }\n\n static ClientRedirectToPath(redirectPath) {\n if (typeof redirectPath === 'string') {\n if (typeof location !== 'undefined') window.location.href = redirectPath;\n } else LoginHelper.ClientRedirectToHome();\n }\n\n static async WsFedLogin(redirectUri?: string) {\n const userManager = await createUserManager(userManagerConfig);\n userManager?.signinRedirect({\n scope: 'openid',\n response_type: 'id_token',\n redirect_uri: redirectUri || window.location.toString(),\n });\n }\n\n static RemoveSecurityTokenQuery() {\n const params = new URLSearchParams(window.location.search);\n if (params.has('securitytoken') || params.has('securityToken')) {\n params.delete('securitytoken');\n params.delete('securityToken');\n window.location.href = `${window.location.pathname}${\n params.toString() ? `?${params}` : ''\n }`;\n }\n }\n\n static async WsFedLogout(redirectPath?: string) {\n await fetch(\n `${LoginHelper.CMS_URL}/authenticate/logout?jsonResponseRequired=true`,\n {\n credentials: 'include',\n }\n );\n if (redirectPath) {\n window.location.href = redirectPath;\n } else {\n // Explicitly check and remove any stale\n // security token that may be in the query string\n LoginHelper.RemoveSecurityTokenQuery();\n }\n }\n\n static async GetCredentialsForSecurityToken(securityToken: string) {\n const [error, response] = await to(\n fetch(`${LoginHelper.CMS_URL}/REST/Contensis/Security/IsAuthenticated`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n securityToken: encodeURIComponent(securityToken),\n }),\n })\n );\n if (error) return [{ message: 'Failed to fetch credentials' }];\n if (response.ok) {\n const [parseError, body] = await to(response.json());\n if (parseError) return [parseError];\n\n const { LogonResult, ApplicationData = [] } = body;\n if (LogonResult !== 0) {\n console.info(`Security token is invalid - LogonResult: ${LogonResult}`);\n return [\n { message: 'Security token is invalid', data: ApplicationData },\n ];\n }\n if (ApplicationData.length > 0) {\n let refreshToken;\n ApplicationData.forEach(item => {\n if (item.Key === 'ContensisSecurityRefreshToken')\n refreshToken = item.Value;\n });\n if (!refreshToken) {\n return [\n {\n message:\n 'Fetch credentials: Unable to find ContensisSecurityRefreshToken',\n },\n ];\n }\n return [undefined, refreshToken];\n } else {\n return [\n {\n message:\n 'Fetch credentials: Unable to find ContensisSecurityRefreshToken',\n },\n ];\n }\n } else {\n return [\n {\n message: `Fetch credentials error: ${response.status} ${response.statusText}`,\n },\n ];\n }\n }\n\n // static isZengentiStaff(email) {\n // const emailRefs = ['@zengenti', '@contensis'];\n\n // return emailRefs.some(emailRef => {\n // if (email.includes(emailRef)) {\n // return true;\n // }\n // });\n // }\n\n SetLoginCookies({\n contensisClassicToken,\n refreshToken,\n }: {\n contensisClassicToken?: string;\n refreshToken?: string;\n }) {\n console.info(\n 'SetLoginCookies:',\n LOGIN_COOKIE,\n contensisClassicToken,\n REFRESH_TOKEN_COOKIE,\n refreshToken\n );\n\n if (contensisClassicToken)\n this.cookies.SetCookie(LOGIN_COOKIE, contensisClassicToken);\n\n if (refreshToken)\n this.cookies.SetCookie(REFRESH_TOKEN_COOKIE, refreshToken);\n }\n\n GetCachedCredentials() {\n return {\n bearerToken: null,\n bearerTokenExpiryDate: null,\n refreshToken: this.cookies.GetCookie(REFRESH_TOKEN_COOKIE),\n refreshTokenExpiryDate: null,\n contensisClassicToken: this.cookies.GetCookie(LOGIN_COOKIE),\n securityToken: null,\n };\n }\n\n ClearCachedCredentials() {\n this.cookies.DeleteCookie(LOGIN_COOKIE);\n this.cookies.DeleteCookie(REFRESH_TOKEN_COOKIE);\n\n if (LoginHelper.WSFED_LOGIN && typeof window !== 'undefined') {\n // remove any oidc keys left over in localStorage\n const { localStorage } = window;\n const keys: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (typeof key === 'string' && key.startsWith('oidc.')) keys.push(key);\n }\n keys.forEach(key => localStorage.removeItem(key));\n }\n }\n\n async LoginUser({\n username,\n password,\n clientCredentials,\n }: {\n username?: string;\n password?: string;\n clientCredentials?: ManagementApiClientCredentials;\n }) {\n let credentials = clientCredentials;\n let authenticationState: AuthenticationState = {\n clientCredentials: null,\n isAuthenticated: false,\n isAuthenticationError: false,\n isError: false,\n };\n let transientClient: Client | null = null;\n let user;\n\n if (username && password) {\n // Get a management client with username and password\n transientClient = await getManagementApiClient({\n username,\n password,\n });\n\n // Ensure the client has requested a bearer token\n const [loginError, clientBearerToken] = await to(\n transientClient.ensureBearerToken()\n );\n\n // Problem getting token with username and password\n if (loginError) {\n authenticationState = {\n clientCredentials: null,\n errorMessage: loginError.message || null,\n isAuthenticated: false,\n isAuthenticationError: loginError.name.includes(\n 'ContensisAuthenticationError'\n ),\n isError: true,\n };\n this.ClearCachedCredentials();\n }\n\n // Got a token using username and password\n if (clientBearerToken) {\n // Set credentials so we can continue to GetUserDetails\n const clientCredentials = mapClientCredentials(transientClient);\n this.SetLoginCookies(clientCredentials);\n authenticationState = {\n clientCredentials,\n isAuthenticated: true,\n isAuthenticationError: false,\n isError: false,\n };\n credentials = clientCredentials;\n }\n }\n\n // If we have credentials supplied by a successful username and password login\n // or clientCredentials supplied in the options argument we can continue to\n // fetch the user's details\n if (credentials) {\n const client =\n transientClient || (await getManagementApiClient(credentials));\n const [error, userDetails] = await LoginHelper.GetUserDetails(client);\n\n if (error) {\n authenticationState = {\n clientCredentials: null,\n errorMessage: error.message,\n isAuthenticated: false,\n isAuthenticationError: false,\n isError: true,\n };\n this.ClearCachedCredentials();\n } else {\n // Ensure we get latest refreshToken and contensisClassicToken from the latest client\n const latestCredentials = mapClientCredentials(client);\n this.SetLoginCookies(latestCredentials);\n\n user = userDetails;\n authenticationState = {\n clientCredentials: latestCredentials,\n isAuthenticated: true,\n isAuthenticationError: false,\n isError: false,\n };\n }\n }\n\n return { authenticationState, user };\n }\n\n LogoutUser(redirectPath?: string) {\n this.ClearCachedCredentials();\n if (LoginHelper.WSFED_LOGIN) {\n LoginHelper.WsFedLogout(redirectPath);\n } else {\n if (redirectPath) LoginHelper.ClientRedirectToPath(redirectPath);\n else LoginHelper.ClientRedirectToSignInPage();\n }\n }\n}\n","import { takeEvery, select, put, call } from 'redux-saga/effects';\nimport {\n SET_AUTHENTICATION_STATE,\n LOGIN_USER,\n LOGOUT_USER,\n VALIDATE_USER,\n} from '../types';\nimport {\n selectUserIsAuthenticated,\n selectClientCredentials,\n selectUserGroups,\n} from '../selectors';\n\nimport { setRoute } from '~/routing/redux/actions';\nimport { selectCurrentSearch } from '~/routing/redux/selectors';\nimport { findContentTypeMapping } from '~/routing/util/find-contenttype-mapping';\n\nimport mapClientCredentials from '~/user/transformations/mapClientCredentials';\n\nimport { getManagementApiClient } from '~/user/util/ContensisManagementApi';\nimport { LoginHelper } from '~/user/util/LoginHelper.class';\nimport { matchUserGroup } from '~/user/util/matchGroups';\nimport { queryParams } from '~/util/navigation';\n\nexport const loginSagas = [\n takeEvery(LOGIN_USER, loginUserSaga),\n takeEvery(LOGOUT_USER, logoutUserSaga),\n takeEvery(VALIDATE_USER, validateUserSaga),\n takeEvery(SET_AUTHENTICATION_STATE, redirectAfterSuccessfulLoginSaga),\n];\n\nexport function* handleRequiresLoginSaga(action: any) {\n const {\n cookies,\n entry,\n path,\n requireLogin,\n routes: { ContentTypeMappings },\n staticRoute,\n } = action;\n let userLoggedIn = yield select(selectUserIsAuthenticated);\n\n // Check for a securityToken in querystring\n const currentQs = queryParams(yield select(selectCurrentSearch));\n const securityToken = currentQs.securityToken || currentQs.securitytoken;\n\n // Check if any of the defined routes have \"requireLogin\" attribute\n const { requireLogin: authRoute } = (staticRoute && staticRoute.route) || {};\n const { requireLogin: authContentType } =\n (entry &&\n findContentTypeMapping(ContentTypeMappings, entry?.sys?.contentTypeId)) ||\n {};\n\n // If requireLogin, authRoute or authContentType has been specified as an\n // array of groups we can merge all the arrays and match on any group supplied\n const routeRequiresGroups = [\n ...((Array.isArray(authContentType) && authContentType) || []),\n ...((Array.isArray(authRoute) && authRoute) || []),\n ...((Array.isArray(requireLogin) && requireLogin) || []),\n ];\n const routeRequiresLogin = !!authContentType || !!authRoute || !!requireLogin;\n\n if (!userLoggedIn) {\n // If cookies or securityToken are found on any route change\n // always validate and login the user\n if (routeRequiresLogin) {\n console.info(`Route requires login: ${path}`);\n // If routeRequiresLogin do a blocking call that returns userLoggedIn\n userLoggedIn = yield call(validateUserSaga, {\n cookies,\n securityToken,\n });\n console.info(`User logged in: ${userLoggedIn}`);\n }\n // otherwise do a non blocking put to handle validation in the background\n else yield put({ type: VALIDATE_USER, cookies, securityToken });\n }\n\n if (routeRequiresLogin) {\n // If a security token is in the querystring and we are not already\n // logged in something is wrong and we won't bother going on another redirect loop\n if (!userLoggedIn && !securityToken) {\n LoginHelper.ClientRedirectToSignInPage(action.location.pathname);\n } else if (routeRequiresGroups.length > 0) {\n const userGroups = yield select(selectUserGroups, 'js');\n const groupMatch = matchUserGroup(userGroups, routeRequiresGroups);\n\n if (!groupMatch)\n LoginHelper.ClientRedirectToAccessDeniedPage(action.location.pathname);\n }\n }\n\n return userLoggedIn;\n}\n\nfunction* validateUserSaga({ cookies, securityToken }: any) {\n const login = LoginHelper.withCookies(cookies);\n // Check for refreshToken in cookies\n let clientCredentials = login.GetCachedCredentials();\n\n if (\n securityToken ||\n clientCredentials.securityToken ||\n clientCredentials.refreshToken\n ) {\n // We only attempt to validate the user if one of the stored\n // tokens are found, in this case we set loading state manually\n // so we don't need to set and unset loading if there are no stored\n yield put({\n type: SET_AUTHENTICATION_STATE,\n authenticationState: {\n isLoading: true,\n },\n });\n // If we have just a security token we will call a CMS endpoint\n // and provide us with a RefreshToken cookie we can use during login\n if (\n securityToken ||\n (clientCredentials.securityToken && !clientCredentials.refreshToken)\n ) {\n const [error, refreshToken] =\n yield LoginHelper.GetCredentialsForSecurityToken(\n securityToken || clientCredentials.securityToken\n );\n if (refreshToken) {\n // Set cookies and reload values\n login.SetLoginCookies({\n contensisClassicToken: securityToken,\n refreshToken,\n });\n clientCredentials = login.GetCachedCredentials();\n }\n if (error) {\n login.ClearCachedCredentials();\n yield put({\n type: SET_AUTHENTICATION_STATE,\n authenticationState: {\n isError: true,\n errorMessage:\n error?.message ||\n (error && 'toString' in error && error.toString()),\n },\n });\n }\n }\n\n // Log the user in if a refreshToken is found\n if (clientCredentials.refreshToken) {\n console.info(\n `Login user with refreshToken ${clientCredentials.refreshToken}`\n );\n yield call(loginUserSaga, {\n clientCredentials,\n cookies: login.cookies,\n });\n }\n }\n\n // Tell any callers have we successfully logged in?\n return yield select(selectUserIsAuthenticated);\n}\n\nfunction* loginUserSaga(action: any = {}) {\n const { username, password, clientCredentials, cookies } = action;\n const login = LoginHelper.withCookies(cookies);\n\n // If a WSFED_LOGIN site has dispatched the loginUser action\n // just redirect them to the Identity Provider sign in\n if (action.type === LOGIN_USER && LoginHelper.WSFED_LOGIN)\n LoginHelper.ClientRedirectToSignInPage();\n\n const { authenticationState, user } = yield login.LoginUser({\n username,\n password,\n clientCredentials,\n });\n\n yield put({\n type: SET_AUTHENTICATION_STATE,\n authenticationState,\n user,\n });\n}\n\nconst removeHostnamePart = path => {\n // eslint-disable-next-line no-console\n console.log(path);\n const relativePath = '/' + path.split('/').splice(3).join('/');\n // eslint-disable-next-line no-console\n console.log(relativePath);\n return relativePath;\n};\n\nfunction* redirectAfterSuccessfulLoginSaga() {\n const isLoggedIn = yield select(selectUserIsAuthenticated);\n const { redirect_uri: redirectPath, ReturnURL: assetRedirectPath } =\n queryParams(yield select(selectCurrentSearch));\n\n if (isLoggedIn && assetRedirectPath && typeof window != 'undefined') {\n const path = removeHostnamePart(assetRedirectPath);\n // This has to be a hard href to get the app to\n // leave React and hit the server for the IIS hosted assets\n window.location.href = path;\n // yield put(setRoute(path)); // does not work in this scenario\n } else if (isLoggedIn && redirectPath) {\n yield put(setRoute(redirectPath));\n }\n}\n\nfunction* logoutUserSaga({ redirectPath, cookies }: any) {\n yield put({\n type: SET_AUTHENTICATION_STATE,\n user: null,\n });\n yield LoginHelper.withCookies(cookies).LogoutUser(redirectPath);\n}\n\nexport function* refreshSecurityToken() {\n const clientCredentials = yield select(selectClientCredentials, 'js');\n if (Object.keys(clientCredentials).length > 0) {\n const client = yield getManagementApiClient(clientCredentials);\n yield client.authenticate();\n\n yield put({\n type: SET_AUTHENTICATION_STATE,\n authenticationState: {\n clientCredentials: mapClientCredentials(client),\n },\n });\n }\n}\n","import { action } from '~/redux/util';\nimport {\n CHANGE_USER_PASSWORD,\n LOGIN_USER,\n LOGOUT_USER,\n REGISTER_USER,\n REQUEST_USER_PASSWORD_RESET,\n RESET_USER_PASSWORD,\n} from './types';\nimport { CookieHelper } from '../util/CookieHelper.class';\n\nexport const loginUser = (\n username: string,\n password: string,\n cookies?: CookieHelper\n) => action(LOGIN_USER, { username, password, cookies });\n\nexport const logoutUser = (redirectPath?: string, cookies?: CookieHelper) =>\n action(LOGOUT_USER, { redirectPath, cookies });\n\nexport const registerUser = (user, mappers) =>\n action(REGISTER_USER, {\n user,\n mappers,\n });\n\nexport const requestPasswordReset = userEmailObject =>\n action(REQUEST_USER_PASSWORD_RESET, { userEmailObject });\n\nexport const resetPassword = resetPasswordObject =>\n action(RESET_USER_PASSWORD, { resetPasswordObject });\n\nexport const changePassword = (userId, currentPassword, newPassword) =>\n action(CHANGE_USER_PASSWORD, { userId, currentPassword, newPassword });\n","import { useCookies } from 'react-cookie';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { loginUser, logoutUser } from '../redux/actions';\nimport {\n selectUser,\n selectUserIsAuthenticationError,\n selectUserIsError,\n selectUserErrorMessage,\n selectUserIsAuthenticated,\n selectUserIsLoading,\n} from '../redux/selectors';\nimport { CookieHelper } from '../util/CookieHelper.class';\n\nconst useLogin = () => {\n const cookies = new CookieHelper(...useCookies());\n\n const dispatch = useDispatch();\n const select = useSelector;\n\n return {\n loginUser: (username: string, password: string) =>\n dispatch(loginUser(username, password, cookies)),\n logoutUser: (redirectPath?: string) =>\n dispatch(logoutUser(redirectPath, cookies)),\n errorMessage: select(selectUserErrorMessage),\n isAuthenticated: select(selectUserIsAuthenticated),\n isAuthenticationError: select(selectUserIsAuthenticationError),\n isError: select(selectUserIsError),\n isLoading: select(selectUserIsLoading),\n user: select(selectUser),\n // DEPRECATED: authenticationError is deprecated use isAuthenticationError instead\n authenticationError: select(selectUserIsAuthenticationError),\n // DEPRECATED: authenticationErrorMessage is deprecated use errorMessage instead\n authenticationErrorMessage: select(selectUserErrorMessage),\n // DEPRECATED: error is deprecated use isError instead\n error: select(selectUserIsError),\n };\n};\n\nexport default useLogin;\n","import useLogin from '../hooks/useLogin';\nimport { toJS } from '~/util/ToJs';\n\nconst LoginContainer = ({ children, ...props }) => {\n const userProps = useLogin(props);\n return children(userProps);\n};\n\nLoginContainer.propTypes = {};\n\nexport default toJS(LoginContainer);\n","import { useDispatch, useSelector } from 'react-redux';\nimport { registerUser } from '../redux/actions';\nimport {\n selectUserRegistration,\n selectUserRegistrationError,\n selectUserRegistrationIsLoading,\n selectUserRegistrationIsSuccess,\n} from '../redux/selectors';\n\nconst useRegistration = () => {\n const dispatch = useDispatch();\n const select = useSelector;\n\n return {\n registerUser: (user, mappers) => dispatch(registerUser(user, mappers)),\n error: select(selectUserRegistrationError),\n isLoading: select(selectUserRegistrationIsLoading),\n isSuccess: select(selectUserRegistrationIsSuccess),\n user: select(selectUserRegistration),\n };\n};\n\nexport default useRegistration;\n","import useRegistration from '../hooks/useRegistration';\nimport { toJS } from '~/util/ToJs';\n\nconst RegistrationContainer = ({ children, ...props }) => {\n const userProps = useRegistration(props);\n return children(userProps);\n};\n\nRegistrationContainer.propTypes = {};\n\nexport default toJS(RegistrationContainer);\n","import { useDispatch, useSelector } from 'react-redux';\nimport { requestPasswordReset, resetPassword } from '../redux/actions';\nimport {\n selectPasswordResetRequestError,\n selectPasswordResetRequestSending,\n selectPasswordResetRequestSent,\n selectResetPasswordSending,\n selectResetPasswordSent,\n selectResetPasswordError,\n} from '../redux/selectors';\nimport { selectCurrentSearch } from '~/routing/redux/selectors';\n\nconst useForgotPassword = () => {\n const dispatch = useDispatch();\n const select = useSelector;\n\n return {\n isLoading: select(selectPasswordResetRequestSending),\n isSuccess: select(selectPasswordResetRequestSent),\n error: select(selectPasswordResetRequestError),\n requestPasswordReset: userEmailObject =>\n dispatch(requestPasswordReset(userEmailObject)),\n\n setNewPassword: {\n queryString: select(selectCurrentSearch),\n isLoading: select(selectResetPasswordSending),\n isSuccess: select(selectResetPasswordSent),\n error: select(selectResetPasswordError),\n submit: resetPasswordObject =>\n dispatch(resetPassword(resetPasswordObject)),\n },\n };\n};\n\nexport default useForgotPassword;\n","import useForgotPassword from '../hooks/useForgotPassword';\nimport { toJS } from '~/util/ToJs';\n\nconst ForgotPasswordContainer = ({ children, ...props }) => {\n const userProps = useForgotPassword(props);\n return children(userProps);\n};\n\nForgotPasswordContainer.propTypes = {};\n\nexport default toJS(ForgotPasswordContainer);\n","import { useDispatch, useSelector } from 'react-redux';\nimport { changePassword } from '../redux/actions';\nimport {\n selectChangePasswordSending,\n selectChangePasswordSent,\n selectChangePasswordError,\n selectUserIsAuthenticated,\n selectUserGuid,\n} from '../redux/selectors';\n\nconst useChangePassword = () => {\n const dispatch = useDispatch();\n const select = useSelector;\n\n return {\n isLoading: select(selectChangePasswordSending),\n isSuccess: select(selectChangePasswordSent),\n userId: select(selectUserGuid),\n isLoggedIn: select(selectUserIsAuthenticated),\n error: select(selectChangePasswordError),\n changePassword: (userId, currentPassword, newPassword) =>\n dispatch(changePassword(userId, currentPassword, newPassword)),\n };\n};\n\nexport default useChangePassword;\n","import useChangePassword from '../hooks/useChangePassword';\nimport { toJS } from '~/util/ToJs';\n\nconst ChangePasswordContainer = ({ children, ...props }) => {\n const userProps = useChangePassword(props);\n return children(userProps);\n};\n\nChangePasswordContainer.propTypes = {};\n\nexport default toJS(ChangePasswordContainer);\n"],"names":["findContentTypeMapping","ContentTypeMappings","contentTypeId","find","ct","contentTypeID","clientCredentials","bearerToken","bearerTokenExpiryDate","toISOString","refreshToken","refreshTokenExpiryDate","contensisClassicToken","obj","mapJson","getManagementApiClient","username","password","rootUrl","SERVERS","api","cms","projectId","PROJECTS","id","config","clientType","clientDetails","Client","window","UniversalClient","client","create","context","global","requireOidc","process","env","NODE_ENV","WSFED_LOGIN","servers","userManagerConfig","authority","client_id","redirect_uri","location","toString","post_logout_redirect_uri","response_type","scope","filterProtocolClaims","createUserManager","UserManager","e","console","error","LoginHelper","constructor","cookies","CookieHelper","ClientRedirectToHome","url","search","hash","href","ClientRedirectToSignInPage","redirectPath","WsFedLogout","WsFedLogin","LOGIN_ROUTE","replace","GetAccessDeniedRoute","originalPath","ACCESS_DENIED_ROUTE","ClientRedirectToAccessDeniedPage","ClientRedirectToPath","redirectUri","userManager","signinRedirect","RemoveSecurityTokenQuery","params","URLSearchParams","has","delete","pathname","fetch","CMS_URL","credentials","GetCredentialsForSecurityToken","securityToken","response","to","method","headers","Accept","body","JSON","stringify","encodeURIComponent","message","ok","parseError","json","LogonResult","ApplicationData","info","data","length","forEach","item","Key","Value","undefined","status","statusText","SetLoginCookies","LOGIN_COOKIE","REFRESH_TOKEN_COOKIE","SetCookie","GetCachedCredentials","GetCookie","ClearCachedCredentials","DeleteCookie","localStorage","keys","i","key","startsWith","push","removeItem","LoginUser","authenticationState","isAuthenticated","isAuthenticationError","isError","transientClient","user","loginError","clientBearerToken","ensureBearerToken","errorMessage","name","includes","mapClientCredentials","userDetails","GetUserDetails","latestCredentials","LogoutUser","withCookies","cookieHelper","userError","security","users","getCurrent","groupsError","groupsResult","getUserGroups","userId","includeInherited","pageOptions","pageSize","items","groups","log","loginSagas","takeEvery","LOGIN_USER","loginUserSaga","LOGOUT_USER","logoutUserSaga","VALIDATE_USER","validateUserSaga","SET_AUTHENTICATION_STATE","redirectAfterSuccessfulLoginSaga","handleRequiresLoginSaga","action","_entry$sys","entry","path","requireLogin","routes","staticRoute","userLoggedIn","select","selectUserIsAuthenticated","currentQs","queryParams","selectCurrentSearch","securitytoken","authRoute","route","authContentType","sys","routeRequiresGroups","Array","isArray","routeRequiresLogin","call","put","type","userGroups","selectUserGroups","groupMatch","matchUserGroup","login","isLoading","removeHostnamePart","relativePath","split","splice","join","isLoggedIn","ReturnURL","assetRedirectPath","setRoute","refreshSecurityToken","selectClientCredentials","Object","authenticate","loginUser","logoutUser","registerUser","mappers","REGISTER_USER","requestPasswordReset","userEmailObject","REQUEST_USER_PASSWORD_RESET","resetPassword","resetPasswordObject","RESET_USER_PASSWORD","changePassword","currentPassword","newPassword","CHANGE_USER_PASSWORD","useLogin","useCookies","dispatch","useDispatch","useSelector","selectUserErrorMessage","selectUserIsAuthenticationError","selectUserIsError","selectUserIsLoading","selectUser","authenticationError","authenticationErrorMessage","LoginContainer","children","props","userProps","propTypes","toJS","useRegistration","selectUserRegistrationError","selectUserRegistrationIsLoading","isSuccess","selectUserRegistrationIsSuccess","selectUserRegistration","RegistrationContainer","useForgotPassword","selectPasswordResetRequestSending","selectPasswordResetRequestSent","selectPasswordResetRequestError","setNewPassword","queryString","selectResetPasswordSending","selectResetPasswordSent","selectResetPasswordError","submit","ForgotPasswordContainer","useChangePassword","selectChangePasswordSending","selectChangePasswordSent","selectUserGuid","selectChangePasswordError","ChangePasswordContainer"],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import { g as getImmutableOrJS } from './selectors-08a9e1f0.js';
2
- import React from 'react';
1
+ 'use strict';
2
+
3
+ const LOGIN_COOKIE = 'ContensisCMSUserName';
4
+ const REFRESH_TOKEN_COOKIE = 'RefreshToken';
5
+ const findLoginCookies = cookies => typeof cookies === 'object' ? Object.fromEntries(Object.entries(cookies).filter(([name]) => [LOGIN_COOKIE, REFRESH_TOKEN_COOKIE].includes(name))) : cookies;
3
6
 
4
7
  /*!
5
8
  * cookie
@@ -327,71 +330,6 @@ var Cookies = /** @class */ (function () {
327
330
  }());
328
331
  var Cookies$1 = Cookies;
329
332
 
330
- const selectUserIsLoading = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isLoading']);
331
- const selectUserIsAuthenticated = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isAuthenticated']);
332
- const selectUserIsAuthenticationError = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isAuthenticationError']);
333
- const selectUserIsError = state => getImmutableOrJS(state, ['user', 'authenticationState', 'isError']);
334
-
335
- /**
336
- * DEPRECATED 12/2021 - use selectUserErrorMessage instead
337
- * @param state AppState
338
- * @returns string
339
- */
340
- const selectUserAuthenticationErrorMessage = state => getImmutableOrJS(state, ['user', 'authenticationState', 'errorMessage']);
341
- const selectUserErrorMessage = state => getImmutableOrJS(state, ['user', 'authenticationState', 'errorMessage']);
342
- const selectClientCredentials = (state, returnType) => getImmutableOrJS(state, ['user', 'authenticationState', 'clientCredentials'], {}, returnType);
343
- const selectUser = (state, returnType) => getImmutableOrJS(state, 'user', {}, returnType);
344
- const selectUserIsZengentiStaff = state => getImmutableOrJS(state, ['user', 'isZengentiStaff']);
345
- const selectUserGuid = state => getImmutableOrJS(state, ['user', 'id']);
346
- const selectUsername = state => getImmutableOrJS(state, ['user', 'username']);
347
- const selectUserEmail = state => getImmutableOrJS(state, ['user', 'email']);
348
- const selectUserGroups = (state, returnType) => getImmutableOrJS(state, ['user', 'groups'], [], returnType);
349
- const selectUserSecurityToken = state => getImmutableOrJS(state, ['user', 'authenticationState', 'clientCredentials', 'contensisClassicToken']);
350
- const selectUserRegistration = (state, returnType) => getImmutableOrJS(state, ['user', 'registration'], {}, returnType);
351
- const selectUserRegistrationError = state => getImmutableOrJS(state, ['user', 'registration', 'error'], false);
352
- const selectUserRegistrationIsLoading = state => getImmutableOrJS(state, ['user', 'registration', 'isLoading'], false);
353
- const selectUserRegistrationIsSuccess = state => getImmutableOrJS(state, ['user', 'registration', 'success'], false);
354
- const selectPasswordResetRequestSending = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'isSending']);
355
- const selectPasswordResetRequestSent = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'sent']);
356
- const selectPasswordResetRequestError = state => getImmutableOrJS(state, ['user', 'passwordResetRequest', 'error']);
357
- const selectResetPasswordSending = state => getImmutableOrJS(state, ['user', 'resetPassword', 'isSending']);
358
- const selectResetPasswordSent = state => getImmutableOrJS(state, ['user', 'resetPassword', 'sent']);
359
- const selectResetPasswordError = state => getImmutableOrJS(state, ['user', 'resetPassword', 'error']);
360
- const selectChangePasswordSending = state => getImmutableOrJS(state, ['user', 'changePassword', 'isSending']);
361
- const selectChangePasswordSent = state => getImmutableOrJS(state, ['user', 'changePassword', 'sent']);
362
- const selectChangePasswordError = state => getImmutableOrJS(state, ['user', 'changePassword', 'error']);
363
-
364
- var selectors = /*#__PURE__*/Object.freeze({
365
- __proto__: null,
366
- selectUserIsLoading: selectUserIsLoading,
367
- selectUserIsAuthenticated: selectUserIsAuthenticated,
368
- selectUserIsAuthenticationError: selectUserIsAuthenticationError,
369
- selectUserIsError: selectUserIsError,
370
- selectUserAuthenticationErrorMessage: selectUserAuthenticationErrorMessage,
371
- selectUserErrorMessage: selectUserErrorMessage,
372
- selectClientCredentials: selectClientCredentials,
373
- selectUser: selectUser,
374
- selectUserIsZengentiStaff: selectUserIsZengentiStaff,
375
- selectUserGuid: selectUserGuid,
376
- selectUsername: selectUsername,
377
- selectUserEmail: selectUserEmail,
378
- selectUserGroups: selectUserGroups,
379
- selectUserSecurityToken: selectUserSecurityToken,
380
- selectUserRegistration: selectUserRegistration,
381
- selectUserRegistrationError: selectUserRegistrationError,
382
- selectUserRegistrationIsLoading: selectUserRegistrationIsLoading,
383
- selectUserRegistrationIsSuccess: selectUserRegistrationIsSuccess,
384
- selectPasswordResetRequestSending: selectPasswordResetRequestSending,
385
- selectPasswordResetRequestSent: selectPasswordResetRequestSent,
386
- selectPasswordResetRequestError: selectPasswordResetRequestError,
387
- selectResetPasswordSending: selectResetPasswordSending,
388
- selectResetPasswordSent: selectResetPasswordSent,
389
- selectResetPasswordError: selectResetPasswordError,
390
- selectChangePasswordSending: selectChangePasswordSending,
391
- selectChangePasswordSent: selectChangePasswordSent,
392
- selectChangePasswordError: selectChangePasswordError
393
- });
394
-
395
333
  const COOKIE_VALID_DAYS = 1; // 0 = Session cookie
396
334
 
397
335
  // CookieHelper is a class that takes in and lets us pass around the methods provided
@@ -447,33 +385,9 @@ const addDays = (date = new Date(), days) => {
447
385
  return result;
448
386
  };
449
387
 
450
- const matchUserGroup = (userGroups = [], requiredGroups = []) => {
451
- if (!Array.isArray(requiredGroups) || Array.isArray(requiredGroups) && requiredGroups.length === 0) return true;
452
- const groupMatch = requiredGroups.some(requiredGroup => {
453
- return userGroups.some(userGroup => {
454
- if (requiredGroup.id === userGroup.id) {
455
- return true;
456
- }
457
- if (requiredGroup.name === userGroup.name) {
458
- return true;
459
- }
460
- });
461
- });
462
- return groupMatch;
463
- };
464
-
465
- /* eslint-disable react/display-name */
466
- const toJS = WrappedComponent => wrappedComponentProps => {
467
- const KEY = 0;
468
- const VALUE = 1;
469
- const propsJS = Object.entries(wrappedComponentProps).reduce((newProps, wrappedComponentProp) => {
470
- const propKey = wrappedComponentProp[KEY];
471
- const propValue = wrappedComponentProp[VALUE];
472
- newProps[propKey] = propValue && typeof propValue === 'object' && 'toJS' in propValue ? propValue.toJS() : propValue;
473
- return newProps;
474
- }, {});
475
- return /*#__PURE__*/React.createElement(WrappedComponent, propsJS);
476
- };
477
-
478
- export { Cookies$1 as C, selectUserIsAuthenticated as a, selectUserGroups as b, CookieHelper as c, selectUserErrorMessage as d, selectUserIsAuthenticationError as e, selectUserIsError as f, selectUserIsLoading as g, selectUser as h, selectUserRegistrationError as i, selectUserRegistrationIsLoading as j, selectUserRegistrationIsSuccess as k, selectUserRegistration as l, matchUserGroup as m, selectPasswordResetRequestSending as n, selectPasswordResetRequestSent as o, selectPasswordResetRequestError as p, selectResetPasswordSending as q, selectResetPasswordSent as r, selectClientCredentials as s, toJS as t, selectResetPasswordError as u, selectChangePasswordSending as v, selectChangePasswordSent as w, selectUserGuid as x, selectChangePasswordError as y, selectors as z };
479
- //# sourceMappingURL=ToJs-e0b935d4.js.map
388
+ exports.CookieHelper = CookieHelper;
389
+ exports.Cookies = Cookies$1;
390
+ exports.LOGIN_COOKIE = LOGIN_COOKIE;
391
+ exports.REFRESH_TOKEN_COOKIE = REFRESH_TOKEN_COOKIE;
392
+ exports.findLoginCookies = findLoginCookies;
393
+ //# sourceMappingURL=CookieHelper.class-34994aa1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CookieHelper.class-34994aa1.js","sources":["../src/user/util/CookieConstants.ts","../node_modules/cookie/index.js","../node_modules/universal-cookie/es6/utils.js","../node_modules/universal-cookie/es6/Cookies.js","../src/user/util/CookieHelper.class.ts"],"sourcesContent":["export const LOGIN_COOKIE = 'ContensisCMSUserName';\nexport const REFRESH_TOKEN_COOKIE = 'RefreshToken';\n\nexport type CookieObject = { [name: string]: any };\n\nexport const findLoginCookies = (cookies: CookieObject | string) =>\n typeof cookies === 'object'\n ? Object.fromEntries(\n Object.entries(cookies).filter(([name]) =>\n [LOGIN_COOKIE, REFRESH_TOKEN_COOKIE].includes(name)\n )\n )\n : cookies;\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","import { useCookies } from 'react-cookie';\nimport FallbackCookies from 'universal-cookie';\n\nconst COOKIE_VALID_DAYS = 1; // 0 = Session cookie\n\ntype CookieHook = ReturnType<typeof useCookies>;\ntype Cookies = { [k: string]: string };\ntype SetCookie = CookieHook[1];\ntype RemoveCookie = CookieHook[2];\n\n// CookieHelper is a class that takes in and lets us pass around the methods provided\n// by `useCookie` react hook in backend code that is connected to the universal-cookies\n// instance created in SSR middleware (and provides browser cookies)\nexport class CookieHelper {\n private cookies: Cookies;\n private set?: SetCookie;\n private remove?: RemoveCookie;\n private fallback!: FallbackCookies;\n\n get raw() {\n return this.cookies;\n }\n\n get cookie(): FallbackCookies {\n return (this.set ? this : this.fallback) as FallbackCookies;\n }\n\n constructor(\n cookies?: { [k: string]: string },\n setCookie?: CookieHelper['set'],\n removeCookie?: CookieHelper['remove']\n ) {\n // Add fallback methods if global cookies not supplied\n if (!cookies || !setCookie || !removeCookie)\n this.fallback = new FallbackCookies();\n\n this.cookies = cookies || this.fallback.getAll();\n if (setCookie) this.set = setCookie;\n if (removeCookie) this.remove = removeCookie;\n }\n\n GetCookie(name: string) {\n const cookie = this.cookies[name];\n if (typeof cookie === 'undefined') {\n return null;\n }\n return cookie;\n }\n\n SetCookie(name: string, value: string, maxAgeDays = COOKIE_VALID_DAYS) {\n // update local cookies object as this is provided as a clone of `req.universalCookies`\n this.cookies[name] = value;\n\n // call the passed setCookie method so we can update the `universal-cookie` instance\n // with the change listener attached so the cookies can be set in SSR response\n if (maxAgeDays === 0) this.cookie.set(name, value);\n else\n this.cookie.set(name, value, {\n expires: addDays(new Date(), maxAgeDays),\n path: '/',\n });\n }\n\n DeleteCookie(name: string) {\n // update local cookies object as this is provided as a clone of `req.universalCookies`\n delete this.cookies[name];\n\n this.cookie.remove(name, {\n path: '/',\n });\n }\n}\nconst addDays = (date = new Date(), days: number) => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\nexport const mapCookieHeader = cookies =>\n typeof cookies === 'object'\n ? Object.entries(cookies)\n .map(([name, value]) => `${name}=${value}`)\n .join('; ')\n : cookies;\n"],"names":["LOGIN_COOKIE","REFRESH_TOKEN_COOKIE","findLoginCookies","cookies","Object","fromEntries","entries","filter","name","includes","cookie.parse","this","cookie.serialize","COOKIE_VALID_DAYS","CookieHelper","raw","cookie","set","fallback","constructor","setCookie","removeCookie","remove","FallbackCookies","getAll","GetCookie","SetCookie","value","maxAgeDays","expires","addDays","Date","path","DeleteCookie","date","days","result","setDate","getDate"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var reactCookie = require('react-cookie');
5
4
  var reactRedux = require('react-redux');
6
5
  var reactHotLoader = require('react-hot-loader');
7
6
  var reactRouterDom = require('react-router-dom');
8
7
  var reactRouterConfig = require('react-router-config');
9
8
  var reselect = require('reselect');
10
- var selectors = require('./selectors-ce76f972.js');
11
- var ToJs = require('./ToJs-56c5315e.js');
9
+ var selectors = require('./selectors-e3f1fd85.js');
10
+ var ToJs = require('./ToJs-7f965106.js');
11
+ var SSRContext = require('./SSRContext-433c53e4.js');
12
12
 
13
13
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
14
 
@@ -78,7 +78,11 @@ const RouteLoader = ({
78
78
  trailingSlashRedirectCode = 302
79
79
  }) => {
80
80
  const location = reactRouterDom.useLocation();
81
- const cookies = new ToJs.CookieHelper(...reactCookie.useCookies());
81
+
82
+ // In SSR pass references to things in backing sagas
83
+ // we cannot access in a global scope
84
+ const ssrContext = SSRContext.useSSRContext();
85
+
82
86
  // Always ensure paths are trimmed of trailing slashes so urls are always unique
83
87
  const trimmedPath = getTrimmedPath(location.pathname);
84
88
 
@@ -116,7 +120,7 @@ const RouteLoader = ({
116
120
  serverPath = (_route$path2 = route.path) === null || _route$path2 === void 0 ? void 0 : _route$path2.split('/').filter(p => !p.startsWith(':')).join('/');
117
121
  }
118
122
  }
119
- setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, cookies);
123
+ setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, ssrContext);
120
124
  // eslint-disable-next-line react-hooks/exhaustive-deps
121
125
  }, [setNavigationPath,
122
126
  // staticRoute,
@@ -200,4 +204,4 @@ const mapDispatchToProps = {
200
204
  var RouteLoader$1 = reactHotLoader.hot(module)(reactRedux.connect(mapStateToPropsMemoized, mapDispatchToProps)(ToJs.toJS(RouteLoader)));
201
205
 
202
206
  exports.RouteLoader = RouteLoader$1;
203
- //# sourceMappingURL=RouteLoader-5e6ee174.js.map
207
+ //# sourceMappingURL=RouteLoader-4fb33db9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLoader-4fb33db9.js","sources":["../src/routing/components/NotFound.tsx","../src/routing/components/Status.tsx","../src/routing/components/RouteLoader.tsx"],"sourcesContent":["import React from 'react';\n\nconst NotFound = ({\n statusCode,\n statusText,\n}: {\n statusCode: number;\n statusText: string;\n}) => (\n <>\n <header>\n <h1>{statusCode || '404'} Page Not Found</h1>\n {statusText && (\n <h2\n style={{\n background: '#eee',\n color: '#666',\n fontSize: '100%',\n padding: '10px',\n }}\n >\n {statusText}\n </h2>\n )}\n </header>\n </>\n);\n\nexport default NotFound;\n","import React, { PropsWithChildren } from 'react';\nimport { Route } from 'react-router-dom';\n\nexport const Status = ({\n code,\n children,\n}: PropsWithChildren<{ code: number }>) => {\n return (\n <Route\n render={({ staticContext }) => {\n if (staticContext) staticContext.statusCode = code;\n return children;\n }}\n />\n );\n};\n","import React, { useEffect, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport { hot } from 'react-hot-loader';\nimport { Redirect, useLocation } from 'react-router-dom';\nimport { renderRoutes, matchRoutes, RouteConfig } from 'react-router-config';\nimport { createSelector } from 'reselect';\n\nimport NotFound from './NotFound';\nimport { Status } from './Status';\n\nimport {\n selectCurrentPath,\n selectCurrentProject,\n selectIsNotFound,\n selectMappedEntry,\n selectRouteEntry,\n selectRouteEntryContentTypeId,\n selectRouteErrorMessage,\n selectRouteIsError,\n selectRouteLoading,\n selectRouteStatusCode,\n} from '../redux/selectors';\nimport { setNavigationPath } from '../redux/actions';\n\nimport {\n selectUserGroups,\n selectUserIsAuthenticated,\n} from '~/user/redux/selectors';\nimport { matchUserGroup } from '~/user/util/matchGroups';\nimport { toJS } from '~/util/ToJs';\nimport { useSSRContext } from '~/util/SSRContext';\n\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { AppRootProps, RouteComponentProps, RouteLoaderProps } from '~/models';\n\nconst replaceDoubleSlashRecursive = (path: string) => {\n const nextPath = path.replace(/\\/\\//, '/');\n\n if (nextPath.match(/\\/\\//)) {\n return replaceDoubleSlashRecursive(nextPath);\n }\n\n return nextPath;\n};\n\nconst getTrimmedPath = path => {\n if (path !== '/') {\n const nextPath = replaceDoubleSlashRecursive(path);\n const lastChar = nextPath[nextPath.length - 1];\n if (lastChar === '/') {\n return nextPath.substring(0, nextPath.length - 1);\n }\n }\n return path;\n};\n\ninterface IReduxProps {\n contentTypeId: string | null;\n entry: Entry | null;\n isError: boolean;\n isNotFound: boolean;\n isLoading: boolean;\n isLoggedIn: boolean;\n mappedEntry: any;\n projectId: string;\n setNavigationPath: typeof setNavigationPath;\n statePath: string;\n statusCode: any;\n statusText: string;\n userGroups: any;\n}\n\nconst RouteLoader = ({\n contentTypeId,\n entry,\n isError,\n isLoading,\n isLoggedIn,\n isNotFound,\n loadingComponent,\n mappedEntry,\n notFoundComponent,\n projectId,\n routes,\n setNavigationPath,\n statePath,\n statusCode,\n statusText,\n userGroups,\n withEvents,\n trailingSlashRedirectCode = 302,\n}: AppRootProps & RouteLoaderProps & IReduxProps) => {\n const location = useLocation();\n\n // In SSR pass references to things in backing sagas\n // we cannot access in a global scope\n const ssrContext = useSSRContext();\n\n // Always ensure paths are trimmed of trailing slashes so urls are always unique\n const trimmedPath = getTrimmedPath(location.pathname);\n\n // Match any Static Routes a developer has defined\n const matchedStaticRoute = () =>\n matchRoutes(routes.StaticRoutes as RouteConfig[], location.pathname);\n const isStaticRoute = () => matchedStaticRoute().length > 0;\n\n const staticRoute = isStaticRoute() ? matchedStaticRoute()[0] : undefined;\n const routeRequiresLogin = staticRoute && staticRoute.route.requireLogin;\n\n const setPath = useCallback(() => {\n // Use serverPath to control the path we send to siteview node api to resolve a route\n let serverPath = '';\n if (staticRoute && staticRoute.match && staticRoute.match.isExact) {\n const { match, route } = staticRoute;\n\n if (route.path?.includes('*')) {\n // Send the whole url to api if we have matched route containing wildcard\n serverPath = match.url;\n } else if (typeof route.fetchNodeLevel === 'number') {\n // Send all url parts to a specified level to api\n serverPath = match.url\n .split('/')\n .splice(0, route.fetchNodeLevel + 1)\n .join('/');\n } else if (route.fetchNode?.params) {\n const fetchNodeParams: string[] = route.fetchNode.params;\n const routeParams: { [key: string]: string } = match.params;\n\n const regexExp = new RegExp(\n Object.keys(routeParams)\n .map(p => `:${p}`)\n .join('|'),\n 'g'\n );\n\n serverPath = match.path\n .replace(/\\?/g, '')\n .replace(regexExp, matched => {\n const param = matched.replace(':', '');\n if (fetchNodeParams.includes(param)) return routeParams[param];\n else return '';\n })\n .replace(/\\/$/, '');\n } else {\n // Send all non-parameterised url parts to api\n serverPath = (route.path as string)\n ?.split('/')\n .filter(p => !p.startsWith(':'))\n .join('/');\n }\n }\n\n setNavigationPath(\n serverPath || trimmedPath,\n location,\n staticRoute,\n withEvents,\n statePath,\n routes,\n ssrContext\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n setNavigationPath,\n // staticRoute,\n withEvents,\n location,\n routes,\n // statePath,\n trimmedPath,\n ]);\n\n if (typeof window == 'undefined') setPath();\n\n useEffect(() => {\n setPath();\n }, [location, setPath]);\n\n // Need to redirect when url endswith a /\n if (location.pathname.length > trimmedPath.length) {\n return (\n <Status code={trailingSlashRedirectCode}>\n <Redirect to={`${trimmedPath}${location.search}${location.hash}`} />\n </Status>\n );\n }\n\n // Render any Static Routes a developer has defined\n if (isStaticRoute() && !(!isLoggedIn && routeRequiresLogin)) {\n if (matchUserGroup(userGroups, routeRequiresLogin))\n return renderRoutes(\n routes.StaticRoutes as RouteConfig[],\n {\n projectId,\n contentTypeId,\n entry,\n mappedEntry,\n isLoggedIn,\n } as RouteComponentProps\n );\n }\n\n // Render a supplied Loading component if the route\n // is not a static route and is in a loading state\n if (isLoading && !isNotFound && loadingComponent) {\n const LoadingComponent = loadingComponent;\n return <LoadingComponent />;\n }\n\n // Match any defined Content Type Mappings\n if (contentTypeId && !(!isLoggedIn && routeRequiresLogin)) {\n const MatchedComponent = routes.ContentTypeMappings.find(\n item => item.contentTypeID === contentTypeId\n );\n\n if (MatchedComponent && !(MatchedComponent.requireLogin && !isLoggedIn)) {\n if (matchUserGroup(userGroups, MatchedComponent.requireLogin))\n return (\n <MatchedComponent.component\n projectId={projectId}\n contentTypeId={contentTypeId}\n entry={entry}\n mappedEntry={mappedEntry}\n isLoggedIn={isLoggedIn}\n />\n );\n }\n }\n\n const NotFoundComponent = notFoundComponent ? notFoundComponent : NotFound;\n if (isNotFound || isError) {\n console.info(\n `RouteLoader rendering NotFound component: statusCode ${statusCode}, isNotFound ${isNotFound}, isError ${isError}`\n );\n\n return (\n <Status code={statusCode}>\n <NotFoundComponent statusCode={statusCode} statusText={statusText} />\n </Status>\n );\n }\n\n return null;\n};\nconst mapStateToPropsMemoized = createSelector(\n selectRouteEntryContentTypeId,\n selectRouteEntry,\n selectRouteIsError,\n selectIsNotFound,\n selectRouteLoading,\n selectUserIsAuthenticated,\n selectMappedEntry,\n selectCurrentProject,\n selectCurrentPath,\n selectRouteStatusCode,\n selectRouteErrorMessage,\n selectUserGroups,\n (\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups\n ) => ({\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups,\n })\n);\n\nconst mapDispatchToProps = {\n setNavigationPath,\n};\n\nexport default hot(module)(\n connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader as any))\n) as unknown as (props: AppRootProps & RouteLoaderProps) => JSX.Element;\n"],"names":["NotFound","statusCode","statusText","React","createElement","Fragment","style","background","color","fontSize","padding","Status","code","children","Route","render","staticContext","replaceDoubleSlashRecursive","path","nextPath","replace","match","getTrimmedPath","lastChar","length","substring","RouteLoader","contentTypeId","entry","isError","isLoading","isLoggedIn","isNotFound","loadingComponent","mappedEntry","notFoundComponent","projectId","routes","setNavigationPath","statePath","userGroups","withEvents","trailingSlashRedirectCode","location","useLocation","ssrContext","useSSRContext","trimmedPath","pathname","matchedStaticRoute","matchRoutes","StaticRoutes","isStaticRoute","staticRoute","undefined","routeRequiresLogin","route","requireLogin","setPath","useCallback","serverPath","isExact","_route$path","_route$fetchNode","includes","url","fetchNodeLevel","split","splice","join","fetchNode","params","fetchNodeParams","routeParams","regexExp","RegExp","Object","keys","map","p","matched","param","_route$path2","filter","startsWith","window","useEffect","Redirect","to","search","hash","matchUserGroup","renderRoutes","LoadingComponent","MatchedComponent","ContentTypeMappings","find","item","contentTypeID","component","NotFoundComponent","console","info","mapStateToPropsMemoized","createSelector","selectRouteEntryContentTypeId","selectRouteEntry","selectRouteIsError","selectIsNotFound","selectRouteLoading","selectUserIsAuthenticated","selectMappedEntry","selectCurrentProject","selectCurrentPath","selectRouteStatusCode","selectRouteErrorMessage","selectUserGroups","mapDispatchToProps","hot","module","connect","toJS"],"mappings":"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"}