@pega/react-sdk-components 8.23.10 → 8.23.11-debug
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/lib/bridge/Context/StoreContext.d.ts +3 -2
- package/lib/bridge/Context/StoreContext.d.ts.map +1 -1
- package/lib/bridge/Context/StoreContext.js +2 -3
- package/lib/bridge/Context/StoreContext.js.map +1 -1
- package/lib/bridge/helpers/sdk_component_map.d.ts +1 -0
- package/lib/bridge/helpers/sdk_component_map.d.ts.map +1 -1
- package/lib/bridge/helpers/sdk_component_map.js +22 -0
- package/lib/bridge/helpers/sdk_component_map.js.map +1 -1
- package/lib/bridge/react_pconnect.d.ts.map +1 -1
- package/lib/bridge/react_pconnect.js +2 -14
- package/lib/bridge/react_pconnect.js.map +1 -1
- package/lib/components/designSystemExtension/AlertBanner/AlertBanner.d.ts +13 -0
- package/lib/components/designSystemExtension/AlertBanner/AlertBanner.d.ts.map +1 -0
- package/lib/components/designSystemExtension/AlertBanner/AlertBanner.js +26 -0
- package/lib/components/designSystemExtension/AlertBanner/AlertBanner.js.map +1 -0
- package/lib/components/designSystemExtension/AlertBanner/index.d.ts +2 -0
- package/lib/components/designSystemExtension/AlertBanner/index.d.ts.map +1 -0
- package/lib/components/designSystemExtension/AlertBanner/index.js +2 -0
- package/lib/components/designSystemExtension/AlertBanner/index.js.map +1 -0
- package/lib/components/designSystemExtension/FieldGroupList/FieldGroupList.d.ts.map +1 -1
- package/lib/components/designSystemExtension/FieldGroupList/FieldGroupList.js +1 -1
- package/lib/components/designSystemExtension/FieldGroupList/FieldGroupList.js.map +1 -1
- package/lib/components/designSystemExtension/Operator/Operator.d.ts.map +1 -1
- package/lib/components/designSystemExtension/Operator/Operator.js +12 -10
- package/lib/components/designSystemExtension/Operator/Operator.js.map +1 -1
- package/lib/components/designSystemExtension/WssQuickCreate/WssQuickCreate.js +2 -2
- package/lib/components/designSystemExtension/WssQuickCreate/WssQuickCreate.js.map +1 -1
- package/lib/components/field/CancelAlert/CancelAlert.d.ts.map +1 -1
- package/lib/components/field/CancelAlert/CancelAlert.js +9 -7
- package/lib/components/field/CancelAlert/CancelAlert.js.map +1 -1
- package/lib/components/field/Checkbox/Checkbox.d.ts.map +1 -1
- package/lib/components/field/Checkbox/Checkbox.js +3 -3
- package/lib/components/field/Checkbox/Checkbox.js.map +1 -1
- package/lib/components/field/Currency/currency-utils.d.ts +1 -1
- package/lib/components/field/Currency/currency-utils.d.ts.map +1 -1
- package/lib/components/field/Currency/currency-utils.js.map +1 -1
- package/lib/components/field/Date/Date.d.ts.map +1 -1
- package/lib/components/field/Date/Date.js +11 -5
- package/lib/components/field/Date/Date.js.map +1 -1
- package/lib/components/field/DateTime/DateTime.js +1 -1
- package/lib/components/field/DateTime/DateTime.js.map +1 -1
- package/lib/components/field/Decimal/Decimal.d.ts.map +1 -1
- package/lib/components/field/Decimal/Decimal.js +41 -8
- package/lib/components/field/Decimal/Decimal.js.map +1 -1
- package/lib/components/field/Dropdown/Dropdown.d.ts.map +1 -1
- package/lib/components/field/Dropdown/Dropdown.js +21 -7
- package/lib/components/field/Dropdown/Dropdown.js.map +1 -1
- package/lib/components/field/Phone/Phone.d.ts.map +1 -1
- package/lib/components/field/Phone/Phone.js +2 -1
- package/lib/components/field/Phone/Phone.js.map +1 -1
- package/lib/components/field/RadioButtons/RadioButtons.d.ts.map +1 -1
- package/lib/components/field/RadioButtons/RadioButtons.js +17 -4
- package/lib/components/field/RadioButtons/RadioButtons.js.map +1 -1
- package/lib/components/field/SemanticLink/utils.d.ts.map +1 -1
- package/lib/components/field/SemanticLink/utils.js.map +1 -1
- package/lib/components/field/TextInput/TextInput.d.ts.map +1 -1
- package/lib/components/field/TextInput/TextInput.js +20 -3
- package/lib/components/field/TextInput/TextInput.js.map +1 -1
- package/lib/components/field/Time/Time.d.ts.map +1 -1
- package/lib/components/field/Time/Time.js +6 -2
- package/lib/components/field/Time/Time.js.map +1 -1
- package/lib/components/field/URL/URL.d.ts.map +1 -1
- package/lib/components/field/URL/URL.js +6 -2
- package/lib/components/field/URL/URL.js.map +1 -1
- package/lib/components/field/UserReference/UserReference.d.ts.map +1 -1
- package/lib/components/field/UserReference/UserReference.js.map +1 -1
- package/lib/components/helpers/attachmentHelpers.d.ts +5 -5
- package/lib/components/helpers/attachmentHelpers.d.ts.map +1 -1
- package/lib/components/helpers/attachmentHelpers.js +2 -2
- package/lib/components/helpers/attachmentHelpers.js.map +1 -1
- package/lib/components/helpers/auth.d.ts.map +1 -1
- package/lib/components/helpers/auth.js +11 -3
- package/lib/components/helpers/auth.js.map +1 -1
- package/lib/components/helpers/authManager.d.ts.map +1 -1
- package/lib/components/helpers/authManager.js +15 -12
- package/lib/components/helpers/authManager.js.map +1 -1
- package/lib/components/helpers/case-utils.d.ts +20 -0
- package/lib/components/helpers/case-utils.d.ts.map +1 -0
- package/lib/components/helpers/case-utils.js +81 -0
- package/lib/components/helpers/case-utils.js.map +1 -0
- package/lib/components/helpers/common-utils.d.ts +2 -0
- package/lib/components/helpers/common-utils.d.ts.map +1 -0
- package/lib/components/helpers/common-utils.js +5 -0
- package/lib/components/helpers/common-utils.js.map +1 -0
- package/lib/components/helpers/config_access.d.ts.map +1 -1
- package/lib/components/helpers/config_access.js +75 -82
- package/lib/components/helpers/config_access.js.map +1 -1
- package/lib/components/helpers/data_page.d.ts.map +1 -1
- package/lib/components/helpers/data_page.js.map +1 -1
- package/lib/components/helpers/date-format-utils.d.ts.map +1 -1
- package/lib/components/helpers/date-format-utils.js +23 -14
- package/lib/components/helpers/date-format-utils.js.map +1 -1
- package/lib/components/helpers/event-utils.d.ts +1 -1
- package/lib/components/helpers/event-utils.d.ts.map +1 -1
- package/lib/components/helpers/event-utils.js.map +1 -1
- package/lib/components/helpers/field-group-utils.d.ts +15 -2
- package/lib/components/helpers/field-group-utils.d.ts.map +1 -1
- package/lib/components/helpers/field-group-utils.js +3 -3
- package/lib/components/helpers/field-group-utils.js.map +1 -1
- package/lib/components/helpers/formatters/Boolean.d.ts +3 -3
- package/lib/components/helpers/formatters/Boolean.d.ts.map +1 -1
- package/lib/components/helpers/formatters/Boolean.js.map +1 -1
- package/lib/components/helpers/formatters/Currency.d.ts.map +1 -1
- package/lib/components/helpers/formatters/Currency.js +4 -3
- package/lib/components/helpers/formatters/Currency.js.map +1 -1
- package/lib/components/helpers/formatters/CurrencyMap.d.ts +1132 -1399
- package/lib/components/helpers/formatters/CurrencyMap.d.ts.map +1 -1
- package/lib/components/helpers/formatters/CurrencyMap.js.map +1 -1
- package/lib/components/helpers/formatters/Date.d.ts.map +1 -1
- package/lib/components/helpers/formatters/Date.js +1 -1
- package/lib/components/helpers/formatters/Date.js.map +1 -1
- package/lib/components/helpers/formatters/common.d.ts +2 -2
- package/lib/components/helpers/formatters/common.d.ts.map +1 -1
- package/lib/components/helpers/formatters/common.js +4 -5
- package/lib/components/helpers/formatters/common.js.map +1 -1
- package/lib/components/helpers/formatters/index.d.ts +1 -1
- package/lib/components/helpers/formatters/index.d.ts.map +1 -1
- package/lib/components/helpers/formatters/index.js.map +1 -1
- package/lib/components/helpers/reactContextHelpers.d.ts +3 -2
- package/lib/components/helpers/reactContextHelpers.d.ts.map +1 -1
- package/lib/components/helpers/reactContextHelpers.js.map +1 -1
- package/lib/components/helpers/simpleTableHelpers.d.ts +2 -2
- package/lib/components/helpers/simpleTableHelpers.d.ts.map +1 -1
- package/lib/components/helpers/simpleTableHelpers.js +5 -2
- package/lib/components/helpers/simpleTableHelpers.js.map +1 -1
- package/lib/components/helpers/state-utils.d.ts +4 -0
- package/lib/components/helpers/state-utils.d.ts.map +1 -0
- package/lib/components/helpers/state-utils.js +36 -0
- package/lib/components/helpers/state-utils.js.map +1 -0
- package/lib/components/helpers/template-utils.d.ts.map +1 -1
- package/lib/components/helpers/template-utils.js +0 -1
- package/lib/components/helpers/template-utils.js.map +1 -1
- package/lib/components/helpers/utils.d.ts +1 -1
- package/lib/components/helpers/utils.d.ts.map +1 -1
- package/lib/components/helpers/utils.js +9 -3
- package/lib/components/helpers/utils.js.map +1 -1
- package/lib/components/helpers/versionHelpers.d.ts +0 -6
- package/lib/components/helpers/versionHelpers.d.ts.map +1 -1
- package/lib/components/helpers/versionHelpers.js +0 -6
- package/lib/components/helpers/versionHelpers.js.map +1 -1
- package/lib/components/infra/ActionButtons/ActionButtons.d.ts.map +1 -1
- package/lib/components/infra/ActionButtons/ActionButtons.js +4 -2
- package/lib/components/infra/ActionButtons/ActionButtons.js.map +1 -1
- package/lib/components/infra/Assignment/Assignment.d.ts +1 -0
- package/lib/components/infra/Assignment/Assignment.d.ts.map +1 -1
- package/lib/components/infra/Assignment/Assignment.js +27 -15
- package/lib/components/infra/Assignment/Assignment.js.map +1 -1
- package/lib/components/infra/Containers/FlowContainer/FlowContainer.d.ts.map +1 -1
- package/lib/components/infra/Containers/FlowContainer/FlowContainer.js +17 -9
- package/lib/components/infra/Containers/FlowContainer/FlowContainer.js.map +1 -1
- package/lib/components/infra/Containers/FlowContainer/helpers.d.ts +12 -12
- package/lib/components/infra/Containers/FlowContainer/helpers.d.ts.map +1 -1
- package/lib/components/infra/Containers/FlowContainer/helpers.js +17 -16
- package/lib/components/infra/Containers/FlowContainer/helpers.js.map +1 -1
- package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.d.ts.map +1 -1
- package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.js +17 -8
- package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.js.map +1 -1
- package/lib/components/infra/Containers/ViewContainer/ViewContainer.d.ts.map +1 -1
- package/lib/components/infra/Containers/ViewContainer/ViewContainer.js +4 -2
- package/lib/components/infra/Containers/ViewContainer/ViewContainer.js.map +1 -1
- package/lib/components/infra/DashboardFilter/DashboardFilter.d.ts.map +1 -1
- package/lib/components/infra/DashboardFilter/DashboardFilter.js.map +1 -1
- package/lib/components/infra/DashboardFilter/filterUtils.d.ts.map +1 -1
- package/lib/components/infra/DashboardFilter/filterUtils.js.map +1 -1
- package/lib/components/infra/DeferLoad/DeferLoad.d.ts.map +1 -1
- package/lib/components/infra/DeferLoad/DeferLoad.js.map +1 -1
- package/lib/components/infra/ErrorBoundary/ErrorBoundary.d.ts.map +1 -1
- package/lib/components/infra/ErrorBoundary/ErrorBoundary.js +7 -4
- package/lib/components/infra/ErrorBoundary/ErrorBoundary.js.map +1 -1
- package/lib/components/infra/MultiStep/MultiStep.js +2 -2
- package/lib/components/infra/MultiStep/MultiStep.js.map +1 -1
- package/lib/components/infra/NavBar/NavBar.d.ts.map +1 -1
- package/lib/components/infra/NavBar/NavBar.js +6 -4
- package/lib/components/infra/NavBar/NavBar.js.map +1 -1
- package/lib/components/infra/RootContainer/RootContainer.d.ts.map +1 -1
- package/lib/components/infra/RootContainer/RootContainer.js +12 -15
- package/lib/components/infra/RootContainer/RootContainer.js.map +1 -1
- package/lib/components/infra/Stages/Stages.d.ts.map +1 -1
- package/lib/components/infra/Stages/Stages.js +2 -1
- package/lib/components/infra/Stages/Stages.js.map +1 -1
- package/lib/components/infra/View/View.d.ts +1 -1
- package/lib/components/infra/View/View.d.ts.map +1 -1
- package/lib/components/infra/View/View.js +6 -34
- package/lib/components/infra/View/View.js.map +1 -1
- package/lib/components/template/AppShell/AppShell.d.ts.map +1 -1
- package/lib/components/template/AppShell/AppShell.js +8 -8
- package/lib/components/template/AppShell/AppShell.js.map +1 -1
- package/lib/components/template/CaseView/CaseView.d.ts +1 -1
- package/lib/components/template/CaseView/CaseView.d.ts.map +1 -1
- package/lib/components/template/CaseView/CaseView.js +37 -28
- package/lib/components/template/CaseView/CaseView.js.map +1 -1
- package/lib/components/template/CaseViewActionsMenu/CaseViewActionsMenu.d.ts +3 -1
- package/lib/components/template/CaseViewActionsMenu/CaseViewActionsMenu.d.ts.map +1 -1
- package/lib/components/template/CaseViewActionsMenu/CaseViewActionsMenu.js +13 -8
- package/lib/components/template/CaseViewActionsMenu/CaseViewActionsMenu.js.map +1 -1
- package/lib/components/template/Confirmation/Confirmation.d.ts.map +1 -1
- package/lib/components/template/Confirmation/Confirmation.js.map +1 -1
- package/lib/components/template/DataReference/DataReference.d.ts.map +1 -1
- package/lib/components/template/DataReference/DataReference.js.map +1 -1
- package/lib/components/template/DefaultForm/DefaultForm.d.ts.map +1 -1
- package/lib/components/template/DefaultForm/DefaultForm.js +9 -5
- package/lib/components/template/DefaultForm/DefaultForm.js.map +1 -1
- package/lib/components/template/DefaultForm/utils/index.d.ts +3 -0
- package/lib/components/template/DefaultForm/utils/index.d.ts.map +1 -0
- package/lib/components/template/DefaultForm/utils/index.js +27 -0
- package/lib/components/template/DefaultForm/utils/index.js.map +1 -0
- package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.d.ts.map +1 -1
- package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.js +1 -1
- package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.js.map +1 -1
- package/lib/components/template/ListView/DefaultViewMeta.d.ts +1 -90
- package/lib/components/template/ListView/DefaultViewMeta.d.ts.map +1 -1
- package/lib/components/template/ListView/DefaultViewMeta.js.map +1 -1
- package/lib/components/template/ListView/ListView.d.ts.map +1 -1
- package/lib/components/template/ListView/ListView.js +1 -1
- package/lib/components/template/ListView/ListView.js.map +1 -1
- package/lib/components/template/ListView/hooks.d.ts.map +1 -1
- package/lib/components/template/ListView/hooks.js +0 -1
- package/lib/components/template/ListView/hooks.js.map +1 -1
- package/lib/components/template/ListView/utils.d.ts +28 -16
- package/lib/components/template/ListView/utils.d.ts.map +1 -1
- package/lib/components/template/ListView/utils.js +1 -2
- package/lib/components/template/ListView/utils.js.map +1 -1
- package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.d.ts.map +1 -1
- package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.js.map +1 -1
- package/lib/components/template/PromotedFilters/PromotedFilters.d.ts.map +1 -1
- package/lib/components/template/PromotedFilters/PromotedFilters.js +2 -2
- package/lib/components/template/PromotedFilters/PromotedFilters.js.map +1 -1
- package/lib/components/template/SimpleTable/SimpleTable/SimpleTable.d.ts.map +1 -1
- package/lib/components/template/SimpleTable/SimpleTable/SimpleTable.js.map +1 -1
- package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.d.ts.map +1 -1
- package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.js +3 -3
- package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.js.map +1 -1
- package/lib/components/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.d.ts.map +1 -1
- package/lib/components/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.js.map +1 -1
- package/lib/components/template/SubTabs/tabUtils.d.ts.map +1 -1
- package/lib/components/template/SubTabs/tabUtils.js.map +1 -1
- package/lib/components/template/WssNavBar/WssNavBar.js +2 -2
- package/lib/components/template/WssNavBar/WssNavBar.js.map +1 -1
- package/lib/components/widget/Attachment/Attachment.css +15 -3
- package/lib/components/widget/Attachment/Attachment.d.ts.map +1 -1
- package/lib/components/widget/Attachment/Attachment.js +29 -25
- package/lib/components/widget/Attachment/Attachment.js.map +1 -1
- package/lib/components/widget/CaseHistory/CaseHistory.js +3 -3
- package/lib/components/widget/CaseHistory/CaseHistory.js.map +1 -1
- package/lib/components/widget/FileUtility/FileUtility/FileUtility.d.ts.map +1 -1
- package/lib/components/widget/FileUtility/FileUtility/FileUtility.js +17 -17
- package/lib/components/widget/FileUtility/FileUtility/FileUtility.js.map +1 -1
- package/lib/components/widget/QuickCreate/QuickCreate.d.ts.map +1 -1
- package/lib/components/widget/QuickCreate/QuickCreate.js +2 -2
- package/lib/components/widget/QuickCreate/QuickCreate.js.map +1 -1
- package/lib/components/widget/SummaryItem/SummaryItem.d.ts.map +1 -1
- package/lib/components/widget/SummaryItem/SummaryItem.js +2 -2
- package/lib/components/widget/SummaryItem/SummaryItem.js.map +1 -1
- package/lib/components/widget/ToDo/ToDo.d.ts.map +1 -1
- package/lib/components/widget/ToDo/ToDo.js +10 -6
- package/lib/components/widget/ToDo/ToDo.js.map +1 -1
- package/lib/components_map.d.ts +3 -3
- package/lib/components_map.d.ts.map +1 -1
- package/lib/components_map.js +819 -818
- package/lib/components_map.js.map +1 -1
- package/lib/doc/KeyReleaseUpdates.md +44 -9
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/components/helpers/auth.js"],"names":[],"mappings":"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","sourcesContent":["class PegaAuth {\n\n constructor(ssKeyConfig) {\n this.ssKeyConfig = ssKeyConfig;\n this.bEncodeSI = false;\n this.reloadConfig();\n }\n\n reloadConfig() {\n const peConfig = window.sessionStorage.getItem(this.ssKeyConfig);\n let obj = {};\n if( peConfig ) {\n try {\n obj = JSON.parse(peConfig);\n } catch (e) {\n try {\n obj = JSON.parse(window.atob(peConfig));\n } catch(e2) {\n obj = {};\n }\n }\n }\n\n this.config = peConfig ? obj : null;\n }\n\n #updateConfig() {\n const sSI = JSON.stringify(this.config);\n window.sessionStorage.setItem(this.ssKeyConfig, this.bEncodeSI ? window.btoa(sSI) : sSI);\n }\n\n // For PKCE the authorize includes a code_challenge & code_challenge_method as well\n async #buildAuthorizeUrl(state) {\n const {clientId, redirectUri, authorizeUri, authService, sessionIndex, appAlias, useLocking,\n userIdentifier, password} = this.config;\n\n // Generate random string of 64 chars for verifier. RFC 7636 says from 43-128 chars\n let buf = new Uint8Array(64);\n window.crypto.getRandomValues(buf);\n this.config.codeVerifier = this.#base64UrlSafeEncode(buf);\n // If sessionIndex exists then increment attempts count (we will stop sending session_index after two failures)\n if( sessionIndex ) {\n this.config.sessionIndexAttempts += 1;\n }\n // Persist codeVerifier in session storage so it survives the redirects that are to follow\n this.#updateConfig();\n\n if( !state ) {\n // Calc random state variable\n buf = new Uint8Array(32);\n window.crypto.getRandomValues(buf);\n state = this.#base64UrlSafeEncode(buf);\n }\n\n // Trim alias to include just the real alias piece\n const addtlScope = appAlias ? `+app.alias.${appAlias.replace(/^app\\//, '')}` : \"\";\n\n // Add explicit creds if specified to try to avoid login popup\n const moreAuthArgs =\n (authService ? `&authentication_service=${encodeURIComponent(authService)}` : \"\") +\n (sessionIndex && this.config.sessionIndexAttempts < 3 ? `&session_index=${sessionIndex}` : \"\") +\n (useLocking ? `&enable_psyncId=true` : '') +\n (userIdentifier ? `&UserIdentifier=${encodeURIComponent(userIdentifier)}` : '') +\n (userIdentifier && password ? `&Password=${encodeURIComponent(window.atob(password))}` : '');\n\n return this.#getCodeChallenge(this.config.codeVerifier).then( cc => {\n // Now includes new enable_psyncId=true and session_index params\n return `${authorizeUri}?client_id=${clientId}&response_type=code&redirect_uri=${redirectUri}&scope=openid+email+profile${addtlScope}&state=${state}&code_challenge=${cc}&code_challenge_method=S256${moreAuthArgs}`;\n });\n }\n\n async login() {\n const fnGetRedirectUriOrigin = () => {\n const redirectUri = this.config.redirectUri;\n const nRootOffset = redirectUri.indexOf(\"//\");\n const nFirstPathOffset = nRootOffset !== -1 ? redirectUri.indexOf(\"/\",nRootOffset+2) : -1;\n return nFirstPathOffset !== -1 ? redirectUri.substring(0,nFirstPathOffset) : redirectUri;\n };\n\n const redirectOrigin = fnGetRedirectUriOrigin();\n // eslint-disable-next-line no-restricted-globals\n const state = window.btoa(location.origin);\n\n return new Promise( (resolve, reject) => {\n\n this.#buildAuthorizeUrl(state).then((url) => {\n let myWindow = null; // popup or iframe\n let elIframe = null;\n let elCloseBtn = null\n const iframeTimeout = this.config.silentTimeout !== undefined ? this.config.silentTimeout : 5000;\n let bWinIframe = iframeTimeout > 0 && ((!!this.config.userIdentifier && !!this.config.password) || this.config.iframeLoginUI || this.config.authService !== \"pega\");\n let tmrAuthComplete = null;\n let checkWindowClosed = null;\n const myWinOnLoad = () => {\n try{\n if( bWinIframe ) {\n elIframe.contentWindow.postMessage({type:\"PegaAuth\"}, redirectOrigin);\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): loaded a page in iFrame\");\n } else {\n myWindow.postMessage({type:\"PegaAuth\"}, redirectOrigin);\n }\n } catch(e) {\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): Exception trying to postMessage on load\");\n }\n };\n const fnOpenPopup = () => {\n myWindow = window.open(url, '_blank', 'width=700,height=500,left=200,top=100');\n if( !myWindow ) {\n // Blocked by popup-blocker\n // eslint-disable-next-line prefer-promise-reject-errors\n return reject(\"blocked\");\n }\n checkWindowClosed = setInterval( () => {\n if( myWindow.closed ) {\n clearInterval(checkWindowClosed);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(\"closed\");\n }\n }, 500);\n try {\n myWindow.addEventListener(\"load\", myWinOnLoad, true);\n } catch(e) {\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): Exception trying to add onload handler to opened window;\")\n }\n };\n\n const fnCloseIframe = () => {\n elIframe.parentNode.removeChild(elIframe);\n elCloseBtn.parentNode.removeChild(elCloseBtn);\n // eslint-disable-next-line no-multi-assign\n elIframe = elCloseBtn = null;\n bWinIframe = false;\n };\n const fnCloseAndReject = () => {\n fnCloseIframe();\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(\"closed\");\n };\n // If there is a userIdentifier and password specified or an external SSO auth service,\n // we can try to use this silently in an iFrame first\n if( bWinIframe ) {\n const nFrameZLevel = 99999;\n elIframe = document.createElement('iframe');\n // eslint-disable-next-line prefer-template\n elIframe.id = 'pe'+this.config.clientId;\n const loginBoxWidth=500;\n const loginBoxHeight=700;\n const oStyle = elIframe.style;\n oStyle.position = 'absolute';\n oStyle.display = 'none';\n oStyle.zIndex = nFrameZLevel;\n oStyle.top=`${Math.round(Math.max(window.innerHeight-loginBoxHeight,0)/2)}px`;\n oStyle.left=`${Math.round(Math.max(window.innerWidth-loginBoxWidth,0)/2)}px`;\n oStyle.width='500px';\n oStyle.height='700px';\n // Add Iframe to top of document DOM to have it load\n document.body.insertBefore(elIframe,document.body.firstChild);\n // Add Iframe to DOM to have it load\n document.getElementsByTagName('body')[0].appendChild(elIframe);\n elIframe.addEventListener(\"load\", myWinOnLoad, true);\n // Disallow iframe content attempts to navigate main window\n elIframe.setAttribute(\"sandbox\",\"allow-scripts allow-forms allow-same-origin\");\n elIframe.setAttribute('src', url);\n\n const svgCloseBtn =\n `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <svg width=\"34px\" height=\"34px\" viewBox=\"0 0 34 34\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Dismiss - Black</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1.000000, 1.000000)\">\n <circle fill=\"#252C32\" cx=\"16\" cy=\"16\" r=\"16\"></circle>\n <g transform=\"translate(9.109375, 9.214844)\" fill=\"#FFFFFF\" fill-rule=\"nonzero\">\n <path d=\"M12.7265625,0 L0,12.6210938 L1.0546875,13.5703125 L13.78125,1.0546875 L12.7265625,0 Z M13.7460938,12.5507812 L1.01953125,0 L0,1.01953125 L12.7617188,13.6054688 L13.7460938,12.5507812 Z\"></path>\n </g>\n </g>\n </g>\n </svg>`;\n const bCloseWithinFrame = false;\n elCloseBtn = document.createElement('img');\n elCloseBtn.onclick = fnCloseAndReject;\n // eslint-disable-next-line prefer-template\n elCloseBtn.src = 'data:image/svg+xml;base64,' + window.btoa(svgCloseBtn);\n const oBtnStyle = elCloseBtn.style;\n oBtnStyle.cursor = 'pointer';\n // If svg doesn't set width and height might want to set oBtStyle width and height to something like '2em'\n oBtnStyle.position = 'absolute';\n oBtnStyle.display = 'none';\n oBtnStyle.zIndex = nFrameZLevel+1;\n const nTopOffset = bCloseWithinFrame ? 5 : -10;\n const nRightOffset = bCloseWithinFrame ? -34 : -20;\n oBtnStyle.top = `${Math.round(Math.max(window.innerHeight-loginBoxHeight,0)/2)+nTopOffset}px`;\n oBtnStyle.left = `${Math.round(Math.max(window.innerWidth-loginBoxWidth,0)/2)+loginBoxWidth+nRightOffset}px`;\n document.body.insertBefore(elCloseBtn,document.body.firstChild);\n // If the password was wrong, then the login screen will be in the iframe\n // ..and with Pega without realization of US-372314 it may replace the top (main portal) window\n // For now set a timer and if the timer expires, remove the iFrame and use same url within\n // visible window\n tmrAuthComplete = setTimeout( () => {\n clearTimeout(tmrAuthComplete);\n // remove password from config\n if( this.config.password ) {\n delete this.config.password;\n this.#updateConfig();\n }\n\n if( this.config.iframeLoginUI ) {\n elIframe.style.display=\"block\";\n elCloseBtn.style.display=\"block\";\n } else {\n fnCloseIframe();\n fnOpenPopup();\n }\n }, iframeTimeout);\n } else {\n fnOpenPopup();\n }\n\n let authMessageReceiver = null;\n /* Retrieve token(s) and close login window */\n const fnGetTokenAndFinish = (code) => {\n window.removeEventListener(\"message\", authMessageReceiver, false);\n this.getToken(code).then(token => {\n if( bWinIframe ) {\n clearTimeout(tmrAuthComplete);\n fnCloseIframe();\n } else {\n clearInterval(checkWindowClosed);\n myWindow.close();\n }\n resolve(token);\n })\n .catch(e => {\n reject(e);\n });\n };\n /* Handler to receive the auth code */\n authMessageReceiver = (event) => {\n // Check origin to make sure it is the redirect origin\n if( event.origin !== redirectOrigin )\n return;\n if( !event.data || !event.data.type || event.data.type !== \"PegaAuth\" )\n return;\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): postMessage received with code\");\n const code = event.data.code.toString();\n fnGetTokenAndFinish(code);\n };\n window.addEventListener(\"message\", authMessageReceiver, false);\n window.authCodeCallback = (code) => {\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): authCodeCallback used with code\");\n fnGetTokenAndFinish(code);\n };\n });\n });\n }\n\n // Login redirect\n loginRedirect() {\n // eslint-disable-next-line no-restricted-globals\n const state = btoa(location.origin);\n this.#buildAuthorizeUrl(state).then((url) => {\n // eslint-disable-next-line no-restricted-globals\n location.href = url;\n });\n }\n\n\n // For PKCE token endpoint includes code_verifier\n getToken(authCode) {\n // Reload config to pick up the previously stored codeVerifier\n this.reloadConfig();\n\n const {clientId, clientSecret, redirectUri, tokenUri, codeVerifier} = this.config;\n\n // eslint-disable-next-line no-restricted-globals\n const queryString = location.search;\n const urlParams = new URLSearchParams(queryString);\n const code = authCode || urlParams.get(\"code\");\n\n const formData = new URLSearchParams();\n formData.append(\"client_id\", clientId);\n if( clientSecret ) {\n formData.append(\"client_secret\", clientSecret);\n }\n formData.append(\"grant_type\", \"authorization_code\");\n formData.append(\"code\", code);\n formData.append(\"redirect_uri\", redirectUri);\n formData.append(\"code_verifier\", codeVerifier);\n\n return fetch(tokenUri, {\n method: \"POST\",\n headers: new Headers({\n \"content-type\": \"application/x-www-form-urlencoded\",\n }),\n\n body: formData.toString(),\n })\n .then((response) => response.json())\n .then(token => {\n // .expires_in contains the # of seconds before access token expires\n // add property to keep track of current time when the token expires\n token.eA = Date.now() + (token.expires_in * 1000);\n if( this.config.codeVerifier ) {\n delete this.config.codeVerifier;\n }\n // If there is a session_index then move this to the peConfig structure (as used on authorize)\n if( token.session_index ) {\n this.config.sessionIndex = token.session_index;\n }\n // If we got a token and have a session index, then reset the sessionIndexAttempts\n if( this.config.sessionIndex ) {\n this.config.sessionIndexAttempts = 0;\n }\n this.#updateConfig();\n return token;\n })\n .catch(e => {\n // eslint-disable-next-line no-console\n console.log(e)\n });\n }\n\n /* eslint-disable camelcase */\n async refreshToken(refresh_token) {\n const {clientId, clientSecret, tokenUri} = this.config;\n\n const formData = new URLSearchParams();\n formData.append(\"client_id\", clientId);\n if( clientSecret ) {\n formData.append(\"client_secret\", clientSecret);\n }\n formData.append(\"grant_type\", \"refresh_token\");\n formData.append(\"refresh_token\", refresh_token);\n\n return fetch(tokenUri, {\n method: \"POST\",\n headers: new Headers({\n \"content-type\": \"application/x-www-form-urlencoded\",\n }),\n\n body: formData.toString(),\n })\n .then((response) => {\n if( !response.ok && response.status === 401 ) {\n return null;\n }\n return response.json();\n })\n .then(token => {\n if( token ) {\n // .expires_in contains the # of seconds before access token expires\n // add property to keep track of current time when the token expires\n token.eA = Date.now() + (token.expires_in * 1000);\n }\n return token;\n })\n .catch(e => {\n // eslint-disable-next-line no-console\n console.log(e)\n });\n }\n\n async revokeTokens(access_token, refresh_token = null) {\n if( !this.config || !this.config.revokeUri) {\n // Must have a config structure and revokeUri to proceed\n return;\n }\n const {clientId, clientSecret, revokeUri} = this.config;\n\n const hdrs = {\"content-type\":\"application/x-www-form-urlencoded\"};\n if( clientSecret ) {\n const creds = `${clientId}:${clientSecret}`;\n hdrs.authorization = `Basic ${window.btoa(creds)}`;\n }\n const aTknProps = [\"access_token\"];\n if( refresh_token ) {\n aTknProps.push(\"refresh_token\");\n }\n aTknProps.forEach( (prop) => {\n const formData = new URLSearchParams();\n if( !clientSecret ) {\n formData.append(\"client_id\", clientId);\n }\n formData.append(\"token\", prop===\"access_token\" ? access_token : refresh_token);\n formData.append(\"token_type_hint\", prop);\n fetch(revokeUri, {\n method: \"POST\",\n headers: new Headers(hdrs),\n body: formData.toString(),\n })\n .then((response) => {\n if( !response.ok ) {\n // eslint-disable-next-line no-console\n console.log( `Error revoking ${prop}:${response.status}` );\n }\n })\n .catch(e => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n } );\n // Also clobber any sessionIndex\n if( this.config.sessionIndex ) {\n delete this.config.sessionIndex;\n this.#updateConfig();\n }\n }\n\n // For userinfo endpoint to return meaningful data, endpoint must include appAlias (if specified) and authorize must\n // specify profile and optionally email scope to get such info returned\n async getUserinfo(access_token) {\n if( !this.config || !this.config.userinfoUri ) {\n // Must have a config structure and userInfo to proceed\n return {};\n }\n const hdrs = {'authorization':`bearer ${access_token}`,'content-type':'application/json;charset=UTF-8'};\n return fetch(this.config.userinfoUri, {\n method: \"GET\",\n headers: new Headers(hdrs)})\n .then( response => {\n if( response.ok) {\n return response.json();\n } else {\n // eslint-disable-next-line no-console\n console.log( `Error invoking userinfo: ${response.status}` );\n }\n })\n .then( data => {\n return data;\n })\n .catch(e => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n }\n\n /* eslint-enable camelcase */\n\n // eslint-disable-next-line class-methods-use-this\n #sha256Hash(str) {\n return window.crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(str));\n }\n\n // Base64 encode\n // eslint-disable-next-line class-methods-use-this\n #encode64(buff) {\n return window.btoa(new Uint8Array(buff).reduce((s, b) => s + String.fromCharCode(b), ''));\n }\n\n /*\n * Base64 url safe encoding of an array\n */\n #base64UrlSafeEncode(buf) {\n const s = this.#encode64(buf).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n return s;\n }\n\n /* Calc code verifier if necessary\n */\n /* eslint-disable camelcase */\n #getCodeChallenge(code_verifier) {\n return this.#sha256Hash(code_verifier).then (\n (hashed) => {\n return this.#base64UrlSafeEncode(hashed)\n }\n ).catch(\n (error) => {\n // eslint-disable-next-line no-console\n console.log(error)\n }\n ).finally(\n () => { return null }\n )\n }\n /* eslint-enable camelcase */\n\n}\n\nexport default PegaAuth;\n"]}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/components/helpers/auth.js"],"names":[],"mappings":"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","sourcesContent":["class PegaAuth {\n\n constructor(ssKeyConfig) {\n this.ssKeyConfig = ssKeyConfig;\n this.bEncodeSI = false;\n this.reloadConfig();\n }\n\n reloadConfig() {\n const peConfig = window.sessionStorage.getItem(this.ssKeyConfig);\n let obj = {};\n if( peConfig ) {\n try {\n obj = JSON.parse(peConfig);\n } catch (e) {\n try {\n obj = JSON.parse(window.atob(peConfig));\n } catch(e2) {\n obj = {};\n }\n }\n }\n\n this.config = peConfig ? obj : null;\n }\n\n #updateConfig() {\n const sSI = JSON.stringify(this.config);\n window.sessionStorage.setItem(this.ssKeyConfig, this.bEncodeSI ? window.btoa(sSI) : sSI);\n }\n\n // For PKCE the authorize includes a code_challenge & code_challenge_method as well\n async #buildAuthorizeUrl(state) {\n const {clientId, redirectUri, authorizeUri, authService, sessionIndex, appAlias, useLocking,\n userIdentifier, password} = this.config;\n\n // Generate random string of 64 chars for verifier. RFC 7636 says from 43-128 chars\n let buf = new Uint8Array(64);\n window.crypto.getRandomValues(buf);\n this.config.codeVerifier = this.#base64UrlSafeEncode(buf);\n // If sessionIndex exists then increment attempts count (we will stop sending session_index after two failures)\n if( sessionIndex ) {\n this.config.sessionIndexAttempts += 1;\n }\n // Persist codeVerifier in session storage so it survives the redirects that are to follow\n this.#updateConfig();\n\n if( !state ) {\n // Calc random state variable\n buf = new Uint8Array(32);\n window.crypto.getRandomValues(buf);\n state = this.#base64UrlSafeEncode(buf);\n }\n\n // Trim alias to include just the real alias piece\n const addtlScope = appAlias ? `+app.alias.${appAlias.replace(/^app\\//, '')}` : \"\";\n\n // Add explicit creds if specified to try to avoid login popup\n const moreAuthArgs =\n (authService ? `&authentication_service=${encodeURIComponent(authService)}` : \"\") +\n (sessionIndex && this.config.sessionIndexAttempts < 3 ? `&session_index=${sessionIndex}` : \"\") +\n (useLocking ? `&enable_psyncId=true` : '') +\n (userIdentifier ? `&UserIdentifier=${encodeURIComponent(userIdentifier)}` : '') +\n (userIdentifier && password ? `&Password=${encodeURIComponent(window.atob(password))}` : '');\n\n return this.#getCodeChallenge(this.config.codeVerifier).then( cc => {\n // Now includes new enable_psyncId=true and session_index params\n return `${authorizeUri}?client_id=${clientId}&response_type=code&redirect_uri=${redirectUri}&scope=openid+email+profile${addtlScope}&state=${state}&code_challenge=${cc}&code_challenge_method=S256${moreAuthArgs}`;\n });\n }\n\n async login() {\n const fnGetRedirectUriOrigin = () => {\n const redirectUri = this.config.redirectUri;\n const nRootOffset = redirectUri.indexOf(\"//\");\n const nFirstPathOffset = nRootOffset !== -1 ? redirectUri.indexOf(\"/\",nRootOffset+2) : -1;\n return nFirstPathOffset !== -1 ? redirectUri.substring(0,nFirstPathOffset) : redirectUri;\n };\n\n const redirectOrigin = fnGetRedirectUriOrigin();\n // eslint-disable-next-line no-restricted-globals\n const state = window.btoa(location.origin);\n\n return new Promise( (resolve, reject) => {\n\n this.#buildAuthorizeUrl(state).then((url) => {\n let myWindow = null; // popup or iframe\n let elIframe = null;\n let elCloseBtn = null\n const iframeTimeout = this.config.silentTimeout !== undefined ? this.config.silentTimeout : 5000;\n let bWinIframe = iframeTimeout > 0 && ((!!this.config.userIdentifier && !!this.config.password) || this.config.iframeLoginUI || this.config.authService !== \"pega\");\n let tmrAuthComplete = null;\n let checkWindowClosed = null;\n const myWinOnLoad = () => {\n try{\n if( bWinIframe ) {\n elIframe.contentWindow.postMessage({type:\"PegaAuth\"}, redirectOrigin);\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): loaded a page in iFrame\");\n } else {\n myWindow.postMessage({type:\"PegaAuth\"}, redirectOrigin);\n }\n } catch(e) {\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): Exception trying to postMessage on load\");\n }\n };\n const fnOpenPopup = () => {\n myWindow = window.open(url, '_blank', 'width=700,height=500,left=200,top=100');\n if( !myWindow ) {\n // Blocked by popup-blocker\n // eslint-disable-next-line prefer-promise-reject-errors\n return reject(\"blocked\");\n }\n checkWindowClosed = setInterval( () => {\n if( myWindow.closed ) {\n clearInterval(checkWindowClosed);\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(\"closed\");\n }\n }, 500);\n try {\n myWindow.addEventListener(\"load\", myWinOnLoad, true);\n } catch(e) {\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): Exception trying to add onload handler to opened window;\")\n }\n };\n\n const fnCloseIframe = () => {\n elIframe.parentNode.removeChild(elIframe);\n elCloseBtn.parentNode.removeChild(elCloseBtn);\n // eslint-disable-next-line no-multi-assign\n elIframe = elCloseBtn = null;\n bWinIframe = false;\n };\n const fnCloseAndReject = () => {\n fnCloseIframe();\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(\"closed\");\n };\n // If there is a userIdentifier and password specified or an external SSO auth service,\n // we can try to use this silently in an iFrame first\n if( bWinIframe ) {\n const nFrameZLevel = 99999;\n elIframe = document.createElement('iframe');\n // eslint-disable-next-line prefer-template\n elIframe.id = 'pe'+this.config.clientId;\n const loginBoxWidth=500;\n const loginBoxHeight=700;\n const oStyle = elIframe.style;\n oStyle.position = 'absolute';\n oStyle.display = 'none';\n oStyle.zIndex = nFrameZLevel;\n oStyle.top=`${Math.round(Math.max(window.innerHeight-loginBoxHeight,0)/2)}px`;\n oStyle.left=`${Math.round(Math.max(window.innerWidth-loginBoxWidth,0)/2)}px`;\n oStyle.width='500px';\n oStyle.height='700px';\n // Add Iframe to top of document DOM to have it load\n document.body.insertBefore(elIframe,document.body.firstChild);\n // Add Iframe to DOM to have it load\n document.getElementsByTagName('body')[0].appendChild(elIframe);\n elIframe.addEventListener(\"load\", myWinOnLoad, true);\n // Disallow iframe content attempts to navigate main window\n elIframe.setAttribute(\"sandbox\",\"allow-scripts allow-forms allow-same-origin\");\n elIframe.setAttribute('src', url);\n\n const svgCloseBtn =\n `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <svg width=\"34px\" height=\"34px\" viewBox=\"0 0 34 34\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Dismiss - Black</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1.000000, 1.000000)\">\n <circle fill=\"#252C32\" cx=\"16\" cy=\"16\" r=\"16\"></circle>\n <g transform=\"translate(9.109375, 9.214844)\" fill=\"#FFFFFF\" fill-rule=\"nonzero\">\n <path d=\"M12.7265625,0 L0,12.6210938 L1.0546875,13.5703125 L13.78125,1.0546875 L12.7265625,0 Z M13.7460938,12.5507812 L1.01953125,0 L0,1.01953125 L12.7617188,13.6054688 L13.7460938,12.5507812 Z\"></path>\n </g>\n </g>\n </g>\n </svg>`;\n const bCloseWithinFrame = false;\n elCloseBtn = document.createElement('img');\n elCloseBtn.onclick = fnCloseAndReject;\n // eslint-disable-next-line prefer-template\n elCloseBtn.src = 'data:image/svg+xml;base64,' + window.btoa(svgCloseBtn);\n const oBtnStyle = elCloseBtn.style;\n oBtnStyle.cursor = 'pointer';\n // If svg doesn't set width and height might want to set oBtStyle width and height to something like '2em'\n oBtnStyle.position = 'absolute';\n oBtnStyle.display = 'none';\n oBtnStyle.zIndex = nFrameZLevel+1;\n const nTopOffset = bCloseWithinFrame ? 5 : -10;\n const nRightOffset = bCloseWithinFrame ? -34 : -20;\n oBtnStyle.top = `${Math.round(Math.max(window.innerHeight-loginBoxHeight,0)/2)+nTopOffset}px`;\n oBtnStyle.left = `${Math.round(Math.max(window.innerWidth-loginBoxWidth,0)/2)+loginBoxWidth+nRightOffset}px`;\n document.body.insertBefore(elCloseBtn,document.body.firstChild);\n // If the password was wrong, then the login screen will be in the iframe\n // ..and with Pega without realization of US-372314 it may replace the top (main portal) window\n // For now set a timer and if the timer expires, remove the iFrame and use same url within\n // visible window\n tmrAuthComplete = setTimeout( () => {\n clearTimeout(tmrAuthComplete);\n // remove password from config\n if( this.config.password ) {\n delete this.config.password;\n this.#updateConfig();\n }\n\n if( this.config.iframeLoginUI ) {\n elIframe.style.display=\"block\";\n elCloseBtn.style.display=\"block\";\n } else {\n fnCloseIframe();\n fnOpenPopup();\n }\n }, iframeTimeout);\n } else {\n fnOpenPopup();\n }\n\n let authMessageReceiver = null;\n /* Retrieve token(s) and close login window */\n const fnGetTokenAndFinish = (code) => {\n window.removeEventListener(\"message\", authMessageReceiver, false);\n this.getToken(code).then(token => {\n if( bWinIframe ) {\n clearTimeout(tmrAuthComplete);\n fnCloseIframe();\n } else {\n clearInterval(checkWindowClosed);\n try {\n myWindow.close();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(`attempt to close opened window failed`);\n }\n }\n resolve(token);\n })\n .catch(e => {\n reject(e);\n });\n };\n /* Handler to receive the auth code */\n authMessageReceiver = (event) => {\n // Check origin to make sure it is the redirect origin\n if( event.origin !== redirectOrigin ) {\n // eslint-disable-next-line no-console\n console.info(`Received event from unexpected origin: ${event.origin} (was expecting: ${redirectOrigin})`);\n }\n if( !event.data || !event.data.type || event.data.type !== \"PegaAuth\" )\n return;\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): postMessage received with code\");\n const code = event.data.code.toString();\n fnGetTokenAndFinish(code);\n };\n window.addEventListener(\"message\", authMessageReceiver, false);\n window.authCodeCallback = (code) => {\n // eslint-disable-next-line no-console\n console.log(\"authjs(login): authCodeCallback used with code\");\n fnGetTokenAndFinish(code);\n };\n });\n });\n }\n\n // Login redirect\n loginRedirect() {\n // eslint-disable-next-line no-restricted-globals\n const state = btoa(location.origin);\n this.#buildAuthorizeUrl(state).then((url) => {\n // eslint-disable-next-line no-restricted-globals\n location.href = url;\n });\n }\n\n\n // For PKCE token endpoint includes code_verifier\n getToken(authCode) {\n // Reload config to pick up the previously stored codeVerifier\n this.reloadConfig();\n\n const {clientId, clientSecret, redirectUri, tokenUri, codeVerifier} = this.config;\n\n // eslint-disable-next-line no-restricted-globals\n const queryString = location.search;\n const urlParams = new URLSearchParams(queryString);\n const code = authCode || urlParams.get(\"code\");\n\n const formData = new URLSearchParams();\n formData.append(\"client_id\", clientId);\n if( clientSecret ) {\n formData.append(\"client_secret\", clientSecret);\n }\n formData.append(\"grant_type\", \"authorization_code\");\n formData.append(\"code\", code);\n formData.append(\"redirect_uri\", redirectUri);\n formData.append(\"code_verifier\", codeVerifier);\n\n return fetch(tokenUri, {\n method: \"POST\",\n headers: new Headers({\n \"content-type\": \"application/x-www-form-urlencoded\",\n }),\n\n body: formData.toString(),\n })\n .then((response) => response.json())\n .then(token => {\n // .expires_in contains the # of seconds before access token expires\n // add property to keep track of current time when the token expires\n token.eA = Date.now() + (token.expires_in * 1000);\n if( this.config.codeVerifier ) {\n delete this.config.codeVerifier;\n }\n // If there is a session_index then move this to the peConfig structure (as used on authorize)\n if( token.session_index ) {\n this.config.sessionIndex = token.session_index;\n }\n // If we got a token and have a session index, then reset the sessionIndexAttempts\n if( this.config.sessionIndex ) {\n this.config.sessionIndexAttempts = 0;\n }\n this.#updateConfig();\n return token;\n })\n .catch(e => {\n // eslint-disable-next-line no-console\n console.log(e)\n });\n }\n\n /* eslint-disable camelcase */\n async refreshToken(refresh_token) {\n const {clientId, clientSecret, tokenUri} = this.config;\n\n const formData = new URLSearchParams();\n formData.append(\"client_id\", clientId);\n if( clientSecret ) {\n formData.append(\"client_secret\", clientSecret);\n }\n formData.append(\"grant_type\", \"refresh_token\");\n formData.append(\"refresh_token\", refresh_token);\n\n return fetch(tokenUri, {\n method: \"POST\",\n headers: new Headers({\n \"content-type\": \"application/x-www-form-urlencoded\",\n }),\n\n body: formData.toString(),\n })\n .then((response) => {\n if( !response.ok && response.status === 401 ) {\n return null;\n }\n return response.json();\n })\n .then(token => {\n if( token ) {\n // .expires_in contains the # of seconds before access token expires\n // add property to keep track of current time when the token expires\n token.eA = Date.now() + (token.expires_in * 1000);\n }\n return token;\n })\n .catch(e => {\n // eslint-disable-next-line no-console\n console.log(e)\n });\n }\n\n async revokeTokens(access_token, refresh_token = null) {\n if( !this.config || !this.config.revokeUri) {\n // Must have a config structure and revokeUri to proceed\n return;\n }\n const {clientId, clientSecret, revokeUri} = this.config;\n\n const hdrs = {\"content-type\":\"application/x-www-form-urlencoded\"};\n if( clientSecret ) {\n const creds = `${clientId}:${clientSecret}`;\n hdrs.authorization = `Basic ${window.btoa(creds)}`;\n }\n const aTknProps = [\"access_token\"];\n if( refresh_token ) {\n aTknProps.push(\"refresh_token\");\n }\n aTknProps.forEach( (prop) => {\n const formData = new URLSearchParams();\n if( !clientSecret ) {\n formData.append(\"client_id\", clientId);\n }\n formData.append(\"token\", prop===\"access_token\" ? access_token : refresh_token);\n formData.append(\"token_type_hint\", prop);\n fetch(revokeUri, {\n method: \"POST\",\n headers: new Headers(hdrs),\n body: formData.toString(),\n })\n .then((response) => {\n if( !response.ok ) {\n // eslint-disable-next-line no-console\n console.log( `Error revoking ${prop}:${response.status}` );\n }\n })\n .catch(e => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n } );\n // Also clobber any sessionIndex\n if( this.config.sessionIndex ) {\n delete this.config.sessionIndex;\n this.#updateConfig();\n }\n }\n\n // For userinfo endpoint to return meaningful data, endpoint must include appAlias (if specified) and authorize must\n // specify profile and optionally email scope to get such info returned\n async getUserinfo(access_token) {\n if( !this.config || !this.config.userinfoUri ) {\n // Must have a config structure and userInfo to proceed\n return {};\n }\n const hdrs = {'authorization':`bearer ${access_token}`,'content-type':'application/json;charset=UTF-8'};\n return fetch(this.config.userinfoUri, {\n method: \"GET\",\n headers: new Headers(hdrs)})\n .then( response => {\n if( response.ok) {\n return response.json();\n } else {\n // eslint-disable-next-line no-console\n console.log( `Error invoking userinfo: ${response.status}` );\n }\n })\n .then( data => {\n return data;\n })\n .catch(e => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n }\n\n /* eslint-enable camelcase */\n\n // eslint-disable-next-line class-methods-use-this\n #sha256Hash(str) {\n return window.crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(str));\n }\n\n // Base64 encode\n // eslint-disable-next-line class-methods-use-this\n #encode64(buff) {\n return window.btoa(new Uint8Array(buff).reduce((s, b) => s + String.fromCharCode(b), ''));\n }\n\n /*\n * Base64 url safe encoding of an array\n */\n #base64UrlSafeEncode(buf) {\n const s = this.#encode64(buf).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n return s;\n }\n\n /* Calc code verifier if necessary\n */\n /* eslint-disable camelcase */\n #getCodeChallenge(code_verifier) {\n return this.#sha256Hash(code_verifier).then (\n (hashed) => {\n return this.#base64UrlSafeEncode(hashed)\n }\n ).catch(\n (error) => {\n // eslint-disable-next-line no-console\n console.log(error)\n }\n ).finally(\n () => { return null }\n )\n }\n /* eslint-enable camelcase */\n\n}\n\nexport default PegaAuth;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authManager.d.ts","sourceRoot":"","sources":["../../../src/components/helpers/authManager.js"],"names":[],"mappings":"AAOA,+BAAmE;AAEnE,sCAAiF;AA+D1E,0CAEN;
|
|
1
|
+
{"version":3,"file":"authManager.d.ts","sourceRoot":"","sources":["../../../src/components/helpers/authManager.js"],"names":[],"mappings":"AAOA,+BAAmE;AAEnE,sCAAiF;AA+D1E,0CAEN;AAgIM,kDAEN;AAwGM,0CAGN;AAoFO,wEAwBP;AAEM,mDA0CN;AAEM,2EAiBN;AASM,0CALK,MAAM,mBACN,OAAO,eAEP,OAAO,6BAyClB;AAEM,qCAEN;AAGM,8CAGN;AAGM,uDAEN;AAEM,uCAwCN;AAGM,mDAEN;AAIM,uCAaN;AAIM,wDAYN;AAGM,yCAKN"}
|
|
@@ -129,7 +129,7 @@ const initOAuth = (bInit) => {
|
|
|
129
129
|
if ('silentTimeout' in sdkConfigAuth) {
|
|
130
130
|
authConfig.silentTimeout = sdkConfigAuth.silentTimeout;
|
|
131
131
|
}
|
|
132
|
-
if (bNoInitialRedirect) {
|
|
132
|
+
if (bNoInitialRedirect && sdkConfigAuth.mashupUserIdentifier && sdkConfigAuth.mashupPassword) {
|
|
133
133
|
authConfig.userIdentifier = sdkConfigAuth.mashupUserIdentifier;
|
|
134
134
|
authConfig.password = sdkConfigAuth.mashupPassword;
|
|
135
135
|
}
|
|
@@ -144,13 +144,19 @@ const initOAuth = (bInit) => {
|
|
|
144
144
|
if (sSI) {
|
|
145
145
|
try {
|
|
146
146
|
const oSI = JSON.parse(sSI);
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
147
|
+
const aProps = ['authorizeUri', 'appAlias', 'clientId', 'authService', 'userIdentifier'];
|
|
148
|
+
for (let i = 0; i < aProps.length; i += 1) {
|
|
149
|
+
const prop = aProps[i];
|
|
150
|
+
const currValue = oSI[prop];
|
|
151
|
+
const newValue = authConfig[prop];
|
|
152
|
+
if (currValue !== newValue) {
|
|
153
|
+
// eslint-disable-next-line no-console
|
|
154
|
+
console.warn(`Clearing credentials due to mismatch for property: ${prop};` +
|
|
155
|
+
`currValue (${currValue}) does not match new desired value (${newValue})`);
|
|
156
|
+
clearAuthMgr();
|
|
157
|
+
sSI = null;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
154
160
|
}
|
|
155
161
|
}
|
|
156
162
|
catch (e) {
|
|
@@ -250,21 +256,18 @@ const constellationInit = (authConfig, tokenInfo, authTokenUpdated, fnReauth) =>
|
|
|
250
256
|
window.myLoadMashup = bootstrapShell.loadMashup;
|
|
251
257
|
window.myLoadPortal = bootstrapShell.loadPortal;
|
|
252
258
|
window.myLoadDefaultPortal = bootstrapShell.loadDefaultPortal;
|
|
253
|
-
bootstrapShell.bootstrapWithAuthHeader(constellationBootConfig, '
|
|
259
|
+
bootstrapShell.bootstrapWithAuthHeader(constellationBootConfig, 'pega-root').then(() => {
|
|
254
260
|
// eslint-disable-next-line no-console
|
|
255
261
|
console.log('Bootstrap successful!');
|
|
256
262
|
gbC11NBootstrapInProgress = false;
|
|
257
263
|
// Setup listener for the reauth event
|
|
258
264
|
if (tokenInfo) {
|
|
259
|
-
// eslint-disable-next-line no-undef
|
|
260
265
|
PCore.getPubSubUtils().subscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_FULL_REAUTH, fnReauth, "authFullReauth");
|
|
261
266
|
}
|
|
262
267
|
else {
|
|
263
268
|
// customReauth event introduced with 8.8
|
|
264
|
-
// eslint-disable-next-line no-undef
|
|
265
269
|
const sEvent = PCore.getConstants().PUB_SUB_EVENTS.EVENT_CUSTOM_REAUTH;
|
|
266
270
|
if (sEvent) {
|
|
267
|
-
// eslint-disable-next-line no-undef
|
|
268
271
|
PCore.getPubSubUtils().subscribe(sEvent, fnReauth, "doReauth");
|
|
269
272
|
}
|
|
270
273
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authManager.js","sourceRoot":"","sources":["../../../src/components/helpers/authManager.js"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,8EAA8E;AAE9E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,QAAQ,MAAM,QAAQ,CAAC;AAE9B,qDAAqD;AACrD,MAAM,CAAC,IAAI,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;AACnE,qDAAqD;AACrD,MAAM,CAAC,IAAI,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACjF,2CAA2C;AAE3C,mCAAmC;AACnC,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,uHAAuH;AACvH,IAAI,wBAAwB,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC;AAC5E,IAAI,yBAAyB,GAAG,KAAK,CAAC;AACtC,sFAAsF;AACtF,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAE,MAAM,EAAG,EAAE;IACxC,IAAI,MAAM,EAAG;QACT,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC1C,wBAAwB,GAAG,IAAI,CAAC;KACnC;SAAM;QACH,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,wBAAwB,GAAG,KAAK,CAAC;KACpC;AACH,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,kBAAkB,EAAG,EAAE;IACnD,IAAI,kBAAkB,EAAG;QACvB,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3B,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;KAChD;SAAM;QACL,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;KAC9C;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7D,IAAI,WAAW,KAAK,IAAI,EAAG;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;KACzD;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,YAAY,GAAG,CAAC,WAAW,GAAC,KAAK,EAAE,EAAE;IACzC,wCAAwC;IACxC,IAAI,CAAC,YAAY,EAAG;QAClB,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACtC;IACD,IAAI,CAAC,WAAW,EAAG;QACjB,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACtC;IACD,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC5C,UAAU,GAAG,KAAK,CAAC;IACnB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAClC,mFAAmF;AACrF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,OAAO,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC;AAC3D,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;IAC1B,OAAO,YAAY,EAAE,CAAC,IAAI,CAAE,SAAS,CAAC,EAAE;QACtC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC;QAC3C,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC;QAC/C,IAAI,OAAO,GAAG,eAAe,CAAC,qBAAqB,CAAC;QACpD,MAAM,kBAAkB,GAAG,cAAc,EAAE,CAAC;QAE5C,kEAAkE;QAClE,IAAI,OAAO,EAAE;YACX,yCAAyC;YACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC1B,OAAO,IAAI,GAAG,CAAC;aAChB;YACD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;gBAC5B,aAAa,CAAC,SAAS,GAAG,GAAG,OAAO,mCAAmC,CAAC;aACzE;YACD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACxB,aAAa,CAAC,KAAK,GAAG,GAAG,OAAO,+BAA+B,CAAC;aACjE;YACD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBACzB,aAAa,CAAC,MAAM,GAAG,GAAG,OAAO,gCAAgC,CAAC;aACnE;YACD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAG;gBAC/B,aAAa,CAAC,WAAW,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACpF;YACD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAC3B,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvF,aAAa,CAAC,QAAQ,GAAG,GAAG,OAAO,GAAG,WAAW,mCAAmC,CAAC;aACtF;SACF;QACD,qBAAqB;QACrB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YAC9B,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC;SACpC;QAED,oFAAoF;QACpF,IAAI,kBAAkB,GAAC,aAAa,CAAC,WAAW,CAAC;QACjD,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzD,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAC,YAAY,GAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,kBAAkB,YAAY,CAAC;QAE5I,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc;YAC1F,YAAY,EAAE,aAAa,CAAC,SAAS;YACrC,QAAQ,EAAE,aAAa,CAAC,KAAK;YAC7B,SAAS,EAAE,aAAa,CAAC,MAAM;YAC/B,WAAW,EAAE,aAAa,CAAC,QAAQ;YACnC,WAAW,EAAE,kBAAkB,IAAI,wBAAwB;gBACvD,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,aAAa,CAAC,WAAW;YAC/B,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,QAAQ,EAAE,eAAe,CAAC,QAAQ,IAAI,EAAE;YACxC,UAAU,EAAE,IAAI;SACjB,CAAC;QACF,+DAA+D;QAC/D,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAG;YACzB,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO;SACR;QACD,IAAI,eAAe,IAAI,aAAa,EAAG;YACrC,UAAU,CAAC,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;SACxD;QACD,IAAI,kBAAkB,EAAG;YACvB,UAAU,CAAC,cAAc,GAAG,aAAa,CAAC,oBAAoB,CAAC;YAC/D,UAAU,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC;SACpD;QACD,IAAI,eAAe,IAAI,aAAa,EAAE;YACpC,UAAU,CAAC,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;SAC5F;QAED,gGAAgG;QAChG,+FAA+F;QAC/F,mDAAmD;QACnD,6EAA6E;QAC7E,IAAI,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,GAAG,EAAG;YACR,IAAI;gBACA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY;oBAC5C,GAAG,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ;oBACpC,GAAG,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ;oBACpC,GAAG,CAAC,cAAc,KAAK,UAAU,CAAC,cAAc;oBAChD,GAAG,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE;oBACtC,YAAY,EAAE,CAAC;oBACf,GAAG,GAAG,IAAI,CAAC;iBACd;aACJ;YAAC,OAAM,CAAC,EAAE;gBACT,aAAa;aACd;SACF;QAED,IAAI,CAAC,GAAG,IAAI,KAAK,EAAG;YAClB,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;SAC/D;QACD,OAAO,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAE,KAAK,EAAG,EAAE;IAC7B,OAAO,IAAI,OAAO,CAAE,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC7B,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAG;gBACzB,SAAS,CAAE,KAAK,CAAE,CAAC;aACpB;YACD,IAAG,OAAO,EAAE;gBACV,IAAI,WAAW,EAAG;oBAChB,aAAa,CAAC,WAAW,CAAC,CAAC;iBAC5B;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;aACzB;QACH,CAAC,CAAA;QACD,iBAAiB,EAAE,CAAC;QACpB,WAAW,GAAG,WAAW,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,OAAO,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE;IAC9E,MAAM,uBAAuB,GAAG,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,EAAE,CAAC;IAE7D,4EAA4E;IAC5E,uBAAuB,CAAC,eAAe,GAAG,IAAI,CAAC;IAC/C,uBAAuB,CAAC,aAAa,GAAG,eAAe,CAAC,qBAAqB,CAAC;IAC9E,2DAA2D;IAC3D,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAG;QACvD,eAAe,CAAC,mBAAmB,GAAG,GAAG,eAAe,CAAC,mBAAmB,GAAG,CAAC;KACjF;IACD,uBAAuB,CAAC,sBAAsB,GAAG,GAAG,eAAe,CAAC,mBAAmB,gBAAgB,CAAC;IACxG,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAG;QAClE,uBAAuB,CAAC,sBAAsB,GAAG,GAAG,uBAAuB,CAAC,sBAAsB,GAAG,CAAC;KACvG;IACD,gCAAgC;IAChC,IAAI,eAAe,CAAC,QAAQ,EAAG;QAC7B,uBAAuB,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;KAC7D;IAED,IAAI,SAAS,EAAG;QACd,qCAAqC;QACrC,uBAAuB,CAAC,QAAQ,GAAG;YACjC,QAAQ,EAAE,UAAU;YACpB,SAAS;YACT,0EAA0E;YAC1E,kFAAkF;YAClF,WAAW,EAAE,KAAK,CAAC,uBAAuB;YAC1C,SAAS,EAAE,UAAU,CAAC,QAAQ;YAC9B,sBAAsB,EAAE,UAAU,CAAC,WAAW;YAC9C,YAAY,EAAE,UAAU,CAAC,WAAW;YACpC,SAAS,EAAE;gBACP,SAAS,EAAE,UAAU,CAAC,YAAY;gBAClC,KAAK,EAAE,UAAU,CAAC,QAAQ;gBAC1B,MAAM,EAAE,UAAU,CAAC,SAAS;aAC/B;YACD,oDAAoD;YACpD,gBAAgB,EAAE,gBAAgB;SACnC,CAAA;KACF;SAAM;QACL,uBAAuB,CAAC,mBAAmB,GAAG,gBAAgB,EAAE,CAAC;KAClE;IAGD,yFAAyF;IACzF,uBAAuB,CAAC,qBAAqB,GAAG,KAAK,CAAC;IAEtD,IAAI,yBAAyB,EAAG;QAC9B,OAAO;KACR;SAAM;QACL,yBAAyB,GAAG,IAAI,CAAC;KAClC;IAED,6FAA6F;IAC7F,qGAAqG;IACrG,mDAAmD;IACnD,MAAM,CAAC,yBAAyB,CAAC,GAAG,uBAAuB,CAAC,sBAAsB,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;QAC9H,8EAA8E;QAC9E,gCAAgC;QAChC,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC,UAAU,CAAC;QAChD,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC,UAAU,CAAC;QAChD,MAAM,CAAC,mBAAmB,GAAG,cAAc,CAAC,iBAAiB,CAAC;QAE9D,cAAc,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACjF,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,yBAAyB,GAAG,KAAK,CAAC;YAElC,sCAAsC;YACtC,IAAI,SAAS,EAAG;gBACd,oCAAoC;gBACpC,KAAK,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;aACrH;iBAAM;gBACL,yCAAyC;gBACzC,oCAAoC;gBACpC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC;gBACvE,IAAI,MAAM,EAAG;oBACX,oCAAoC;oBACpC,KAAK,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;iBAChE;aACF;YAED,sGAAsG;YACtG,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAC3D,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC;aACD,KAAK,CAAE,CAAC,CAAC,EAAE;YACV,8EAA8E;YAC9E,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;YAChE,yBAAyB,GAAG,KAAK,CAAC;YAClC,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC;IACH,eAAe;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,UAAU,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAG,GAAG,EAAE;QACN,IAAI;YACF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC1B;QAAC,OAAM,CAAC,EAAE;YACT,MAAM,GAAG,IAAI,CAAC;SACf;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAC,IAAI,EAAE,EAAE;IACnD,IAAI,CAAC,KAAK,EAAG;QACX,iFAAiF;QACjF,KAAK,GAAG,gBAAgB,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAG;YACX,OAAO;SACR;KACF;IAED,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/E,iBAAiB,EAAE,CAAC;IAEpB,qDAAqD;IACrD,UAAU,GAAG,IAAI,CAAC;IAClB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC5C,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,GAAG,EAAG;QACR,IAAI;YACA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAChC;QAAC,OAAM,CAAC,EAAE;YACT,aAAa;SACd;KACF;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,EAAG;QAC/B,mEAAmE;QACnE,iBAAiB,CAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,CAAE,CAAC;KAC1E;IAEH;;;;QAII;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAE,KAAK,EAAE,SAAS,GAAC,IAAI,EAAG,EAAE;IACtD,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,KAAK,EAAG;QACjB,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC9C;SAAM;QACL,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;KACtC;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE;IAC/C,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,GAAG,EAAG;QACR,IAAI;YACA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAChC;QAAC,OAAM,CAAC,EAAE;YACT,aAAa;SACd;KACF;IACD,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;IACtC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,CAAC,CAAC;AAGF,iGAAiG;AACjG;;GAEG;AACF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,GAAC,IAAI,EAAE,EAAE;IAC1C,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,MAAM,IAAI,UAAU,EAAG;QACzB,IAAI;YACF,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAClC;QAAC,OAAM,CAAC,EAAE;YACT,aAAa;SACd;KACF;IACD,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,EAAE;QAC/B,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE;YAC3D,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,QAAQ,EAAG;gBACb,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC7D;iBAAM;gBACL,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aACtC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,WAAW,GAAC,KAAK,EAAE,EAAE;IAEzC,IAAI,YAAY;QAAG,OAAO;IAE1B,iBAAiB,GAAG,IAAI,CAAC;IACzB,gGAAgG;IAChG,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE1D,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,EAAE;QACtC,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,EAAE,CAAC;QACzD,IAAI,YAAY,GAAC,aAAa,CAAC,WAAW,CAAC;QAE3C,oGAAoG;QACpG,IAAI,aAAa,IAAI,CAAC,WAAW,EAAE;YACjC,qCAAqC;YACrC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACtC,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,0CAA0C;YAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACnC;aAAM;YACL,iCAAiC;YACjC,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACnD,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAC,YAAY,GAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,YAAY,CAAC;YAC1H,sCAAsC;YACtC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACtC,OAAO,IAAI,OAAO,CAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACtB,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAC3B,iBAAiB;oBACjB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC,CAAC,EAAE,EAAE;oBACZ,iBAAiB,GAAG,KAAK,CAAC;oBAC1B,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;oBAC5C,sCAAsC;oBACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACf,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAE,IAAI,EAAE,YAAY,GAAC,IAAI,EAAG,EAAE;IAChE,wCAAwC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEnC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,EAAE;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/B,IAAI,KAAK,IAAI,KAAK,CAAC,YAAY,EAAG;gBAC9B,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAClC,iBAAiB;gBACjB,IAAI,YAAY,EAAG;oBACf,YAAY,CAAE,KAAK,CAAC,YAAY,CAAE,CAAC;iBACtC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,cAAc,GAAC,KAAK,EAAE,UAAU,GAAC,KAAK,EAAE,EAAE;IAClF,+DAA+D;IAC/D,MAAM,kBAAkB,GAAG,cAAc,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,WAAW,IAAI,cAAc,KAAK,kBAAkB,EAAE;QACpE,YAAY,EAAE,CAAC;QACf,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;KACjD;IACD,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACrC,+CAA+C;IAC/C,IAAI,YAAY,EAAG;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG;YAClB,mEAAmE;YACnE,iBAAiB,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAE,CAAC;SACzD;QACD,OAAO;KACR;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAG;QACjD,qBAAqB;QACrB,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACjC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAE,EAAE;gBAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IACD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,iBAAiB,IAAI,cAAc,EAAE,CAAC,EAAG;QAC5D,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACjC,iBAAiB,EAAE,CAAC;YACpB,IAAI,UAAU,EAAG;gBACf,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACvC,iBAAiB;aAClB;iBAAM;gBACL,OAAO,KAAK,EAAE,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;KACJ;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AACtC,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,uHAAuH;IACvH,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC;AACxD,CAAC,CAAC;AAEF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAG,EAAE;IAC7C,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC7B,YAAY,EAAE,CAAC;YAEf,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;YACxC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE9B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,IAAI,YAAY,EAAG;YACjB,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACrC,iBAAiB,EAAE,CAAC;YACpB,OAAO;SACR;QACD,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,IAAI,SAAS,IAAI,SAAS,CAAC,YAAY,EAAG;YACtC,IAAI,MAAM,CAAC,KAAK,EAAG;gBACf,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;oBACjD,iBAAiB,EAAE,CAAC;gBACxB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,sCAAsC;oBACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;aACN;iBAAM;gBACL,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAE,CAAC,IAAI,EAAE,EAAE;oBAC/B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC;yBACjE,IAAI,CAAC,GAAG,EAAE;wBACT,gBAAgB;oBAClB,CAAC,CAAC;yBACD,OAAO,CAAC,GAAG,EAAE;wBACZ,iBAAiB,EAAE,CAAC;oBACtB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;SACJ;aAAM;YACH,iBAAiB,EAAE,CAAC;SACvB;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,EAAE;IACxC,mBAAmB,CAAE,KAAK,CAAE,CAAC;AAC/B,CAAC,CAAC;AAGF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,yEAAyE;IAEnG,IAAI,WAAW,EAAG;QAChB,qGAAqG;QACrG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,CAAC;KACb;SAAM;QACL,sGAAsG;QACtG,2EAA2E;QAC3E,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC7E,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC/B;AACH,CAAC,CAAC;AAEF,mFAAmF;AACnF,mCAAmC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,EAAE;IAC7C,kEAAkE;IAClE,IAAI,UAAU,EAAG;QACf,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC9C,yEAAyE;QACzE,IAAI,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,sBAAsB,EAAG;YACxD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;SAChE;KACF;SAAM;QACL,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACtC;IACD,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,uHAAuH;IACvH,qEAAqE;IACrE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/E,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC","sourcesContent":["// This file wraps various calls related to logging in, logging out, etc.\n// that use the auth.html/auth.js to do the work of logging in via OAuth 2.0.\n\nimport { getSdkConfig, SdkConfigAccess } from './config_access';\nimport PegaAuth from './auth';\n\n// eslint-disable-next-line import/no-mutable-exports\nexport let gbLoggedIn = sessionStorage.getItem('rsdk_AH') !== null;\n// eslint-disable-next-line import/no-mutable-exports\nexport let gbLoginInProgress = sessionStorage.getItem(\"rsdk_loggingIn\") !== null;\n// other sessionStorage items: rsdk_appName\n\n// will store the PegaAuth instance\nlet authMgr = null;\n// Since this variable is loaded in a separate instance in the popup scenario, use storage to coordinate across the two\nlet usePopupForRestOfSession = sessionStorage.getItem(\"rsdk_popup\") === \"1\";\nlet gbC11NBootstrapInProgress = false;\n// Some non Pega OAuth 2.0 Authentication in use (Basic or Custom for service package)\nlet gbCustomAuth = false;\n\n/*\n * Set to use popup experience for rest of session\n */\nconst forcePopupForReauths = ( bForce ) => {\n if( bForce ) {\n sessionStorage.setItem(\"rsdk_popup\", \"1\");\n usePopupForRestOfSession = true;\n } else {\n sessionStorage.removeItem(\"rsdk_popup\");\n usePopupForRestOfSession = false;\n }\n};\n\nconst setNoInitialRedirect = (bNoInitialRedirect ) => {\n if( bNoInitialRedirect ) {\n forcePopupForReauths(true);\n sessionStorage.setItem(\"rsdk_noRedirect\", \"1\");\n } else {\n sessionStorage.removeItem(\"rsdk_noRedirect\");\n }\n};\n\nconst isLoginExpired = () => {\n let bExpired = true;\n const sLoginStart = sessionStorage.getItem(\"rsdk_loggingIn\");\n if( sLoginStart !== null ) {\n const currTime = Date.now();\n bExpired = currTime - parseInt(sLoginStart, 10) > 60000;\n }\n return bExpired;\n};\n\n/**\n * Clean up any web storage allocated for the user session.\n */\nconst clearAuthMgr = (bFullReauth=false) => {\n // Remove any local storage for the user\n if( !gbCustomAuth ) {\n sessionStorage.removeItem('rsdk_AH');\n }\n if( !bFullReauth ) {\n sessionStorage.removeItem(\"rsdk_CI\");\n }\n sessionStorage.removeItem(\"rsdk_TI\");\n sessionStorage.removeItem(\"rsdk_UI\");\n sessionStorage.removeItem(\"rsdk_loggingIn\");\n gbLoggedIn = false;\n gbLoginInProgress = false;\n forcePopupForReauths(bFullReauth);\n // Not removing the authMgr structure itself...as it can be leveraged on next login\n};\n\nexport const authNoRedirect = () => {\n return sessionStorage.getItem(\"rsdk_noRedirect\") === \"1\";\n};\n\n/**\n * Initialize OAuth config structure members and create authMgr instance\n * bInit - governs whether to create new sessionStorage or load existing one\n */\nconst initOAuth = (bInit) => {\n return getSdkConfig().then( sdkConfig => {\n const sdkConfigAuth = sdkConfig.authConfig;\n const sdkConfigServer = sdkConfig.serverConfig;\n let pegaUrl = sdkConfigServer.infinityRestServerUrl;\n const bNoInitialRedirect = authNoRedirect();\n\n // Construct default OAuth endpoints (if not explicitly specified)\n if (pegaUrl) {\n // Cope with trailing slash being present\n if (!pegaUrl.endsWith('/')) {\n pegaUrl += '/';\n }\n if (!sdkConfigAuth.authorize) {\n sdkConfigAuth.authorize = `${pegaUrl}PRRestService/oauth2/v1/authorize`;\n }\n if (!sdkConfigAuth.token) {\n sdkConfigAuth.token = `${pegaUrl}PRRestService/oauth2/v1/token`;\n }\n if (!sdkConfigAuth.revoke) {\n sdkConfigAuth.revoke = `${pegaUrl}PRRestService/oauth2/v1/revoke`;\n }\n if( !sdkConfigAuth.redirectUri ) {\n sdkConfigAuth.redirectUri = `${window.location.origin}${window.location.pathname}`;\n }\n if (!sdkConfigAuth.userinfo) {\n const appAliasSeg = sdkConfigServer.appAlias ? `app/${sdkConfigServer.appAlias}/` : '';\n sdkConfigAuth.userinfo = `${pegaUrl}${appAliasSeg}api/oauthclients/v1/userinfo/JSON`;\n }\n }\n // Auth service alias\n if( !sdkConfigAuth.authService) {\n sdkConfigAuth.authService = \"pega\";\n }\n\n // Construct path to auth.html (used for case when not doing a main window redirect)\n let sNoMainRedirectUri=sdkConfigAuth.redirectUri;\n const nLastPathSep = sNoMainRedirectUri.lastIndexOf(\"/\");\n sNoMainRedirectUri = nLastPathSep !== -1 ? `${sNoMainRedirectUri.substring(0,nLastPathSep+1)}auth.html` : `${sNoMainRedirectUri}/auth.html`;\n\n const authConfig = {\n clientId: bNoInitialRedirect ? sdkConfigAuth.mashupClientId : sdkConfigAuth.portalClientId,\n authorizeUri: sdkConfigAuth.authorize,\n tokenUri: sdkConfigAuth.token,\n revokeUri: sdkConfigAuth.revoke,\n userinfoUri: sdkConfigAuth.userinfo,\n redirectUri: bNoInitialRedirect || usePopupForRestOfSession\n ? sNoMainRedirectUri\n : sdkConfigAuth.redirectUri,\n authService: sdkConfigAuth.authService,\n appAlias: sdkConfigServer.appAlias || '',\n useLocking: true\n };\n // If no clientId is specified assume not OAuth but custom auth\n if( !authConfig.clientId ) {\n gbCustomAuth = true;\n return;\n }\n if( 'silentTimeout' in sdkConfigAuth ) {\n authConfig.silentTimeout = sdkConfigAuth.silentTimeout;\n }\n if( bNoInitialRedirect ) {\n authConfig.userIdentifier = sdkConfigAuth.mashupUserIdentifier;\n authConfig.password = sdkConfigAuth.mashupPassword;\n }\n if( 'iframeLoginUI' in sdkConfigAuth ){\n authConfig.iframeLoginUI = sdkConfigAuth.iframeLoginUI.toString().toLowerCase() === 'true';\n }\n\n // Check if sessionStorage exists (and if so if for same authorize endpoint). Otherwise, assume\n // sessionStorage is out of date (user just edited endpoints). Else, logout required to clear\n // sessionStorage and get other endpoints updates.\n // Doing this as sessionIndex might have been added to this storage structure\n let sSI = sessionStorage.getItem(\"rsdk_CI\");\n if( sSI ) {\n try {\n const oSI = JSON.parse(sSI);\n if( oSI.authorizeUri !== authConfig.authorizeUri ||\n oSI.appAlias !== authConfig.appAlias ||\n oSI.clientId !== authConfig.clientId ||\n oSI.userIdentifier !== authConfig.userIdentifier ||\n oSI.password !== authConfig.password) {\n clearAuthMgr();\n sSI = null;\n }\n } catch(e) {\n // do nothing\n }\n }\n\n if( !sSI || bInit ) {\n sessionStorage.setItem('rsdk_CI', JSON.stringify(authConfig));\n }\n authMgr = new PegaAuth('rsdk_CI');\n });\n};\n\nconst getAuthMgr = ( bInit ) => {\n return new Promise( (resolve) => {\n let idNextCheck = null;\n const fnCheckForAuthMgr = () => {\n if( PegaAuth && !authMgr ) {\n initOAuth( bInit );\n }\n if(authMgr) {\n if( idNextCheck ) {\n clearInterval(idNextCheck);\n }\n return resolve(authMgr);\n }\n }\n fnCheckForAuthMgr();\n idNextCheck = setInterval(fnCheckForAuthMgr, 10);\n });\n};\n\nexport const sdkGetAuthHeader = () => {\n return sessionStorage.getItem(\"rsdk_AH\");\n};\n\n/**\n * Initiate the process to get the Constellation bootstrap shell loaded and initialized\n * @param {Object} authConfig\n * @param {Object} tokenInfo\n * @param {Function} authTokenUpdated - callback invoked when Constellation JS Engine silently updates\n * an expired access_token\n * @param {Function} fnReauth - callback invoked when a full or custom reauth is needed\n */\nconst constellationInit = (authConfig, tokenInfo, authTokenUpdated, fnReauth) => {\n const constellationBootConfig = {};\n const sdkConfigServer = SdkConfigAccess.getSdkConfigServer();\n\n // Set up constellationConfig with data that bootstrapWithAuthHeader expects\n constellationBootConfig.customRendering = true;\n constellationBootConfig.restServerUrl = sdkConfigServer.infinityRestServerUrl;\n // NOTE: Needs a trailing slash! So add one if not provided\n if( !sdkConfigServer.sdkContentServerUrl.endsWith('/') ) {\n sdkConfigServer.sdkContentServerUrl = `${sdkConfigServer.sdkContentServerUrl}/`;\n }\n constellationBootConfig.staticContentServerUrl = `${sdkConfigServer.sdkContentServerUrl}constellation/`;\n if( !constellationBootConfig.staticContentServerUrl.endsWith('/') ) {\n constellationBootConfig.staticContentServerUrl = `${constellationBootConfig.staticContentServerUrl}/`;\n }\n // If appAlias specified, use it\n if( sdkConfigServer.appAlias ) {\n constellationBootConfig.appAlias = sdkConfigServer.appAlias;\n }\n\n if( tokenInfo ) {\n // Pass in auth info to Constellation\n constellationBootConfig.authInfo = {\n authType: \"OAuth2.0\",\n tokenInfo,\n // Set whether we want constellation to try to do a full re-Auth or not ()\n // true doesn't seem to be working in SDK scenario so always passing false for now\n popupReauth: false /* !authNoRedirect() */,\n client_id: authConfig.clientId,\n authentication_service: authConfig.authService,\n redirect_uri: authConfig.redirectUri,\n endPoints: {\n authorize: authConfig.authorizeUri,\n token: authConfig.tokenUri,\n revoke: authConfig.revokeUri\n },\n // TODO: setup callback so we can update own storage\n onTokenRetrieval: authTokenUpdated\n }\n } else {\n constellationBootConfig.authorizationHeader = sdkGetAuthHeader();\n }\n\n\n // Turn off dynamic load components (should be able to do it here instead of after load?)\n constellationBootConfig.dynamicLoadComponents = false;\n\n if( gbC11NBootstrapInProgress ) {\n return;\n } else {\n gbC11NBootstrapInProgress = true;\n }\n\n // Note that staticContentServerUrl already ends with a slash (see above), so no slash added.\n // In order to have this import succeed and to have it done with the webpackIgnore magic comment tag.\n // See: https://webpack.js.org/api/module-methods/\n import(/* webpackIgnore: true */ `${constellationBootConfig.staticContentServerUrl}bootstrap-shell.js`).then((bootstrapShell) => {\n // NOTE: once this callback is done, we lose the ability to access loadMashup.\n // So, create a reference to it\n window.myLoadMashup = bootstrapShell.loadMashup;\n window.myLoadPortal = bootstrapShell.loadPortal;\n window.myLoadDefaultPortal = bootstrapShell.loadDefaultPortal;\n\n bootstrapShell.bootstrapWithAuthHeader(constellationBootConfig, 'shell').then(() => {\n // eslint-disable-next-line no-console\n console.log('Bootstrap successful!');\n gbC11NBootstrapInProgress = false;\n\n // Setup listener for the reauth event\n if( tokenInfo ) {\n // eslint-disable-next-line no-undef\n PCore.getPubSubUtils().subscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_FULL_REAUTH, fnReauth, \"authFullReauth\");\n } else {\n // customReauth event introduced with 8.8\n // eslint-disable-next-line no-undef\n const sEvent = PCore.getConstants().PUB_SUB_EVENTS.EVENT_CUSTOM_REAUTH;\n if( sEvent ) {\n // eslint-disable-next-line no-undef\n PCore.getPubSubUtils().subscribe(sEvent, fnReauth, \"doReauth\");\n }\n }\n\n // Fire SdkConstellationReady event so bridge and app route can do expected post PCore initializations\n const event = new CustomEvent('SdkConstellationReady', {});\n document.dispatchEvent(event);\n })\n .catch( e => {\n // Assume error caught is because token is not valid and attempt a full reauth\n // eslint-disable-next-line no-console\n console.error(`Constellation JS Engine bootstrap failed. ${e}`);\n gbC11NBootstrapInProgress = false;\n fnReauth();\n })\n });\n /* Ends here */\n};\n\nexport const updateLoginStatus = () => {\n const sAuthHdr = sdkGetAuthHeader();\n gbLoggedIn = sAuthHdr && sAuthHdr.length > 0;\n};\n\nconst getCurrentTokens = () => {\n let tokens = null;\n const sTI = sessionStorage.getItem('rsdk_TI');\n if(sTI) {\n try {\n tokens = JSON.parse(sTI);\n } catch(e) {\n tokens = null;\n }\n }\n return tokens;\n};\n\nconst fireTokenAvailable = (token, bLoadC11N=true) => {\n if( !token ) {\n // This is used on page reload to load the token from sessionStorage and carry on\n token = getCurrentTokens();\n if( !token ) {\n return;\n }\n }\n\n sessionStorage.setItem('rsdk_AH', `${token.token_type} ${token.access_token}`);\n updateLoginStatus();\n\n // gbLoggedIn is getting updated in updateLoginStatus\n gbLoggedIn = true;\n gbLoginInProgress = false;\n sessionStorage.removeItem(\"rsdk_loggingIn\");\n forcePopupForReauths(true);\n\n const sSI = sessionStorage.getItem(\"rsdk_CI\");\n let authConfig = null;\n if( sSI ) {\n try {\n authConfig = JSON.parse(sSI);\n } catch(e) {\n // do nothing\n }\n }\n\n if( !window.PCore && bLoadC11N ) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n constellationInit( authConfig, token, authTokenUpdated, authFullReauth );\n }\n\n/*\n // Create and dispatch the SdkLoggedIn event to trigger constellationInit\n const event = new CustomEvent('SdkLoggedIn', { detail: { authConfig, tokenInfo: token } });\n document.dispatchEvent(event);\n */\n};\n\nconst processTokenOnLogin = ( token, bLoadC11N=true ) => {\n sessionStorage.setItem(\"rsdk_TI\", JSON.stringify(token));\n if( window.PCore ) {\n window.PCore.getAuthUtils().setTokens(token);\n } else {\n fireTokenAvailable(token, bLoadC11N);\n }\n};\n\nconst updateRedirectUri = (aMgr, sRedirectUri) => {\n const sSI = sessionStorage.getItem(\"rsdk_CI\");\n let authConfig = null;\n if( sSI ) {\n try {\n authConfig = JSON.parse(sSI);\n } catch(e) {\n // do nothing\n }\n }\n authConfig.redirectUri = sRedirectUri;\n sessionStorage.setItem(\"rsdk_CI\", JSON.stringify(authConfig));\n aMgr.reloadConfig();\n};\n\n\n// TODO: Cope with 401 and refresh token if possible (or just hope that it succeeds during login)\n/**\n * Retrieve UserInfo for current authentication service\n */\n export const getUserInfo = (bUseSS=true) => {\n const ssUserInfo = sessionStorage.getItem(\"rsdk_UI\");\n let userInfo = null;\n if( bUseSS && ssUserInfo ) {\n try {\n userInfo = JSON.parse(ssUserInfo);\n return Promise.resolve(userInfo);\n } catch(e) {\n // do nothing\n }\n }\n getAuthMgr(false).then( (aMgr) => {\n const tokenInfo = getCurrentTokens();\n return aMgr.getUserinfo(tokenInfo.access_token).then( data => {\n userInfo = data;\n if( userInfo ) {\n sessionStorage.setItem(\"rsdk_UI\", JSON.stringify(userInfo));\n } else {\n sessionStorage.removeItem(\"rsdk_UI\");\n }\n return Promise.resolve(userInfo);\n });\n });\n\n};\n\nexport const login = (bFullReauth=false) => {\n\n if( gbCustomAuth ) return;\n\n gbLoginInProgress = true;\n // Needed so a redirect to login screen and back will know we are still in process of logging in\n sessionStorage.setItem(\"rsdk_loggingIn\", `${Date.now()}`);\n\n getAuthMgr(!bFullReauth).then( (aMgr) => {\n const bMainRedirect = !authNoRedirect();\n const sdkConfigAuth = SdkConfigAccess.getSdkConfigAuth();\n let sRedirectUri=sdkConfigAuth.redirectUri;\n\n // If initial main redirect is OK, redirect to main page, otherwise will authorize in a popup window\n if (bMainRedirect && !bFullReauth) {\n // update redirect uri to be the root\n updateRedirectUri(aMgr, sRedirectUri);\n aMgr.loginRedirect();\n // Don't have token til after the redirect\n return Promise.resolve(undefined);\n } else {\n // Construct path to redirect uri\n const nLastPathSep = sRedirectUri.lastIndexOf(\"/\");\n sRedirectUri = nLastPathSep !== -1 ? `${sRedirectUri.substring(0,nLastPathSep+1)}auth.html` : `${sRedirectUri}/auth.html`;\n // Set redirectUri to static auth.html\n updateRedirectUri(aMgr, sRedirectUri);\n return new Promise( (resolve, reject) => {\n aMgr.login().then(token => {\n processTokenOnLogin(token);\n // getUserInfo();\n resolve(token.access_token);\n }).catch( (e) => {\n gbLoginInProgress = false;\n sessionStorage.removeItem(\"rsdk_loggingIn\");\n // eslint-disable-next-line no-console\n console.log(e);\n reject(e);\n });\n });\n }\n });\n\n};\n\nexport const authRedirectCallback = ( href, fnLoggedInCB=null ) => {\n // Get code from href and swap for token\n const aHrefParts = href.split('?');\n const urlParams = new URLSearchParams(aHrefParts.length>1 ? `?${aHrefParts[1]}` : '');\n const code = urlParams.get(\"code\");\n\n getAuthMgr(false).then( (aMgr) => {\n aMgr.getToken(code).then(token => {\n if( token && token.access_token ) {\n processTokenOnLogin(token, false);\n // getUserInfo();\n if( fnLoggedInCB ) {\n fnLoggedInCB( token.access_token );\n }\n }\n });\n });\n};\n\n/**\n * Silent or visible login based on login status\n * @param {string} appName - unique name for application route (will be used to clear an session storage for another route)\n * @param {boolean} noMainRedirect - avoid the initial main window redirect that happens in scenarios where it is OK to transition\n * away from the main page\n * @param {boolean} deferLogin - defer logging in (if not already authenticated)\n */\nexport const loginIfNecessary = (appName, noMainRedirect=false, deferLogin=false) => {\n // If no initial redirect status of page changed...clearAuthMgr\n const currNoMainRedirect = authNoRedirect();\n const currAppName = sessionStorage.getItem(\"rsdk_appName\");\n if( appName !== currAppName || noMainRedirect !== currNoMainRedirect) {\n clearAuthMgr();\n sessionStorage.setItem(\"rsdk_appName\", appName);\n }\n setNoInitialRedirect(noMainRedirect);\n // If custom auth no need to do any OAuth logic\n if( gbCustomAuth ) {\n if( !window.PCore ) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n constellationInit( null, null, null, authCustomReauth );\n }\n return;\n }\n\n if( window.location.href.indexOf(\"?code\") !== -1 ) {\n // initialize authMgr\n initOAuth(false);\n return getAuthMgr(false).then(() => {\n authRedirectCallback(window.location.href, ()=> {\n window.location.href = window.location.pathname;\n });\n });\n }\n if( !deferLogin && (!gbLoginInProgress || isLoginExpired()) ) {\n initOAuth(false);\n return getAuthMgr(false).then(() => {\n updateLoginStatus();\n if( gbLoggedIn ) {\n fireTokenAvailable(getCurrentTokens());\n // getUserInfo();\n } else {\n return login();\n }\n });\n }\n};\n\nexport const getHomeUrl = () => {\n return `${window.location.origin}/`;\n};\n\n\nexport const authIsMainRedirect = () => {\n // Even with main redirect, we want to use it only for the first login (so it doesn't wipe out any state or the reload)\n return !authNoRedirect() && !usePopupForRestOfSession;\n};\n\n// Passive update where just session storage is updated so can be used on a window refresh\nexport const authTokenUpdated = (tokenInfo ) => {\n sessionStorage.setItem(\"rsdk_TI\", JSON.stringify(tokenInfo));\n};\n\nexport const logout = () => {\n sessionStorage.removeItem('rsdk_portalName');\n return new Promise((resolve) => {\n const fnClearAndResolve = () => {\n clearAuthMgr();\n\n const event = new Event('SdkLoggedOut');\n document.dispatchEvent(event);\n\n resolve();\n };\n if( gbCustomAuth ) {\n sessionStorage.removeItem(\"rsdk_AH\");\n fnClearAndResolve();\n return;\n }\n const tokenInfo = getCurrentTokens();\n if( tokenInfo && tokenInfo.access_token ) {\n if( window.PCore ) {\n window.PCore.getAuthUtils().revokeTokens().then(() => {\n fnClearAndResolve();\n }).catch(err => {\n // eslint-disable-next-line no-console\n console.log(\"Error:\",err?.message);\n });\n } else {\n getAuthMgr(false).then( (aMgr) => {\n aMgr.revokeTokens(tokenInfo.access_token, tokenInfo.refresh_token)\n .then(() => {\n // Go to finally\n })\n .finally(() => {\n fnClearAndResolve();\n });\n });\n }\n } else {\n fnClearAndResolve();\n }\n });\n};\n\n// Callback routine for custom event to ask for updated tokens\nexport const authUpdateTokens = (token) => {\n processTokenOnLogin( token );\n};\n\n\n// Initiate a full OAuth re-authorization (any refresh token has also expired).\nexport const authFullReauth = () => {\n const bHandleHere = true; // Other alternative is to raise an event and have someone else handle it\n\n if( bHandleHere ) {\n // Don't want to do a full clear of authMgr as will loose sessionIndex. Rather just clear the tokens\n clearAuthMgr(true);\n login(true);\n } else {\n // Fire the SdkFullReauth event to indicate a new token is needed (PCore.getAuthUtils.setTokens method\n // should be used to communicate the new token to Constellation JS Engine.\n const event = new CustomEvent('SdkFullReauth', { detail: authUpdateTokens });\n document.dispatchEvent(event);\n }\n};\n\n// Set the custom authorization header for the SDK (and Constellation JS Engine) to\n// utilize for every DX API request\nexport const sdkSetAuthHeader = (authHeader) => {\n // set this within session storage so it survives a browser reload\n if( authHeader ) {\n sessionStorage.setItem(\"rsdk_AH\", authHeader);\n // setAuthorizationHeader method not available til 8.8 so do safety check\n if( window.PCore?.getAuthUtils().setAuthorizationHeader ) {\n window.PCore.getAuthUtils().setAuthorizationHeader(authHeader);\n }\n } else {\n sessionStorage.removeItem(\"rsdk_AH\");\n }\n gbCustomAuth = true;\n};\n\n// Initiate a custom re-authorization.\nexport const authCustomReauth = () => {\n // Fire the SdkCustomReauth event to indicate a new authHeader is needed. Event listener should invoke sdkSetAuthHeader\n // to communicate the new token to sdk (and Constellation JS Engine)\n const event = new CustomEvent('SdkCustomReauth', { detail: sdkSetAuthHeader });\n document.dispatchEvent(event);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"authManager.js","sourceRoot":"","sources":["../../../src/components/helpers/authManager.js"],"names":[],"mappings":"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","sourcesContent":["// This file wraps various calls related to logging in, logging out, etc.\n// that use the auth.html/auth.js to do the work of logging in via OAuth 2.0.\n\nimport { getSdkConfig, SdkConfigAccess } from './config_access';\nimport PegaAuth from './auth';\n\n// eslint-disable-next-line import/no-mutable-exports\nexport let gbLoggedIn = sessionStorage.getItem('rsdk_AH') !== null;\n// eslint-disable-next-line import/no-mutable-exports\nexport let gbLoginInProgress = sessionStorage.getItem(\"rsdk_loggingIn\") !== null;\n// other sessionStorage items: rsdk_appName\n\n// will store the PegaAuth instance\nlet authMgr = null;\n// Since this variable is loaded in a separate instance in the popup scenario, use storage to coordinate across the two\nlet usePopupForRestOfSession = sessionStorage.getItem(\"rsdk_popup\") === \"1\";\nlet gbC11NBootstrapInProgress = false;\n// Some non Pega OAuth 2.0 Authentication in use (Basic or Custom for service package)\nlet gbCustomAuth = false;\n\n/*\n * Set to use popup experience for rest of session\n */\nconst forcePopupForReauths = ( bForce ) => {\n if( bForce ) {\n sessionStorage.setItem(\"rsdk_popup\", \"1\");\n usePopupForRestOfSession = true;\n } else {\n sessionStorage.removeItem(\"rsdk_popup\");\n usePopupForRestOfSession = false;\n }\n};\n\nconst setNoInitialRedirect = (bNoInitialRedirect ) => {\n if( bNoInitialRedirect ) {\n forcePopupForReauths(true);\n sessionStorage.setItem(\"rsdk_noRedirect\", \"1\");\n } else {\n sessionStorage.removeItem(\"rsdk_noRedirect\");\n }\n};\n\nconst isLoginExpired = () => {\n let bExpired = true;\n const sLoginStart = sessionStorage.getItem(\"rsdk_loggingIn\");\n if( sLoginStart !== null ) {\n const currTime = Date.now();\n bExpired = currTime - parseInt(sLoginStart, 10) > 60000;\n }\n return bExpired;\n};\n\n/**\n * Clean up any web storage allocated for the user session.\n */\nconst clearAuthMgr = (bFullReauth=false) => {\n // Remove any local storage for the user\n if( !gbCustomAuth ) {\n sessionStorage.removeItem('rsdk_AH');\n }\n if( !bFullReauth ) {\n sessionStorage.removeItem(\"rsdk_CI\");\n }\n sessionStorage.removeItem(\"rsdk_TI\");\n sessionStorage.removeItem(\"rsdk_UI\");\n sessionStorage.removeItem(\"rsdk_loggingIn\");\n gbLoggedIn = false;\n gbLoginInProgress = false;\n forcePopupForReauths(bFullReauth);\n // Not removing the authMgr structure itself...as it can be leveraged on next login\n};\n\nexport const authNoRedirect = () => {\n return sessionStorage.getItem(\"rsdk_noRedirect\") === \"1\";\n};\n\n/**\n * Initialize OAuth config structure members and create authMgr instance\n * bInit - governs whether to create new sessionStorage or load existing one\n */\nconst initOAuth = (bInit) => {\n return getSdkConfig().then( sdkConfig => {\n const sdkConfigAuth = sdkConfig.authConfig;\n const sdkConfigServer = sdkConfig.serverConfig;\n let pegaUrl = sdkConfigServer.infinityRestServerUrl;\n const bNoInitialRedirect = authNoRedirect();\n\n // Construct default OAuth endpoints (if not explicitly specified)\n if (pegaUrl) {\n // Cope with trailing slash being present\n if (!pegaUrl.endsWith('/')) {\n pegaUrl += '/';\n }\n if (!sdkConfigAuth.authorize) {\n sdkConfigAuth.authorize = `${pegaUrl}PRRestService/oauth2/v1/authorize`;\n }\n if (!sdkConfigAuth.token) {\n sdkConfigAuth.token = `${pegaUrl}PRRestService/oauth2/v1/token`;\n }\n if (!sdkConfigAuth.revoke) {\n sdkConfigAuth.revoke = `${pegaUrl}PRRestService/oauth2/v1/revoke`;\n }\n if( !sdkConfigAuth.redirectUri ) {\n sdkConfigAuth.redirectUri = `${window.location.origin}${window.location.pathname}`;\n }\n if (!sdkConfigAuth.userinfo) {\n const appAliasSeg = sdkConfigServer.appAlias ? `app/${sdkConfigServer.appAlias}/` : '';\n sdkConfigAuth.userinfo = `${pegaUrl}${appAliasSeg}api/oauthclients/v1/userinfo/JSON`;\n }\n }\n // Auth service alias\n if( !sdkConfigAuth.authService) {\n sdkConfigAuth.authService = \"pega\";\n }\n\n // Construct path to auth.html (used for case when not doing a main window redirect)\n let sNoMainRedirectUri=sdkConfigAuth.redirectUri;\n const nLastPathSep = sNoMainRedirectUri.lastIndexOf(\"/\");\n sNoMainRedirectUri = nLastPathSep !== -1 ? `${sNoMainRedirectUri.substring(0,nLastPathSep+1)}auth.html` : `${sNoMainRedirectUri}/auth.html`;\n\n const authConfig = {\n clientId: bNoInitialRedirect ? sdkConfigAuth.mashupClientId : sdkConfigAuth.portalClientId,\n authorizeUri: sdkConfigAuth.authorize,\n tokenUri: sdkConfigAuth.token,\n revokeUri: sdkConfigAuth.revoke,\n userinfoUri: sdkConfigAuth.userinfo,\n redirectUri: bNoInitialRedirect || usePopupForRestOfSession\n ? sNoMainRedirectUri\n : sdkConfigAuth.redirectUri,\n authService: sdkConfigAuth.authService,\n appAlias: sdkConfigServer.appAlias || '',\n useLocking: true\n };\n // If no clientId is specified assume not OAuth but custom auth\n if( !authConfig.clientId ) {\n gbCustomAuth = true;\n return;\n }\n if( 'silentTimeout' in sdkConfigAuth ) {\n authConfig.silentTimeout = sdkConfigAuth.silentTimeout;\n }\n if( bNoInitialRedirect && sdkConfigAuth.mashupUserIdentifier && sdkConfigAuth.mashupPassword ) {\n authConfig.userIdentifier = sdkConfigAuth.mashupUserIdentifier;\n authConfig.password = sdkConfigAuth.mashupPassword;\n }\n if( 'iframeLoginUI' in sdkConfigAuth ){\n authConfig.iframeLoginUI = sdkConfigAuth.iframeLoginUI.toString().toLowerCase() === 'true';\n }\n\n // Check if sessionStorage exists (and if so if for same authorize endpoint). Otherwise, assume\n // sessionStorage is out of date (user just edited endpoints). Else, logout required to clear\n // sessionStorage and get other endpoints updates.\n // Doing this as sessionIndex might have been added to this storage structure\n let sSI = sessionStorage.getItem(\"rsdk_CI\");\n if( sSI ) {\n try {\n const oSI = JSON.parse(sSI);\n const aProps = ['authorizeUri', 'appAlias', 'clientId', 'authService', 'userIdentifier'];\n for( let i = 0; i < aProps.length; i += 1 ) {\n const prop = aProps[i];\n const currValue = oSI[prop];\n const newValue = authConfig[prop];\n if( currValue !== newValue ) {\n // eslint-disable-next-line no-console\n console.warn(`Clearing credentials due to mismatch for property: ${prop};` +\n `currValue (${currValue}) does not match new desired value (${newValue})`);\n clearAuthMgr();\n sSI = null;\n break;\n }\n }\n } catch(e) {\n // do nothing\n }\n }\n\n if( !sSI || bInit ) {\n sessionStorage.setItem('rsdk_CI', JSON.stringify(authConfig));\n }\n authMgr = new PegaAuth('rsdk_CI');\n });\n};\n\nconst getAuthMgr = ( bInit ) => {\n return new Promise( (resolve) => {\n let idNextCheck = null;\n const fnCheckForAuthMgr = () => {\n if( PegaAuth && !authMgr ) {\n initOAuth( bInit );\n }\n if(authMgr) {\n if( idNextCheck ) {\n clearInterval(idNextCheck);\n }\n return resolve(authMgr);\n }\n }\n fnCheckForAuthMgr();\n idNextCheck = setInterval(fnCheckForAuthMgr, 10);\n });\n};\n\nexport const sdkGetAuthHeader = () => {\n return sessionStorage.getItem(\"rsdk_AH\");\n};\n\n/**\n * Initiate the process to get the Constellation bootstrap shell loaded and initialized\n * @param {Object} authConfig\n * @param {Object} tokenInfo\n * @param {Function} authTokenUpdated - callback invoked when Constellation JS Engine silently updates\n * an expired access_token\n * @param {Function} fnReauth - callback invoked when a full or custom reauth is needed\n */\nconst constellationInit = (authConfig, tokenInfo, authTokenUpdated, fnReauth) => {\n const constellationBootConfig = {};\n const sdkConfigServer = SdkConfigAccess.getSdkConfigServer();\n\n // Set up constellationConfig with data that bootstrapWithAuthHeader expects\n constellationBootConfig.customRendering = true;\n constellationBootConfig.restServerUrl = sdkConfigServer.infinityRestServerUrl;\n // NOTE: Needs a trailing slash! So add one if not provided\n if( !sdkConfigServer.sdkContentServerUrl.endsWith('/') ) {\n sdkConfigServer.sdkContentServerUrl = `${sdkConfigServer.sdkContentServerUrl}/`;\n }\n constellationBootConfig.staticContentServerUrl = `${sdkConfigServer.sdkContentServerUrl}constellation/`;\n if( !constellationBootConfig.staticContentServerUrl.endsWith('/') ) {\n constellationBootConfig.staticContentServerUrl = `${constellationBootConfig.staticContentServerUrl}/`;\n }\n // If appAlias specified, use it\n if( sdkConfigServer.appAlias ) {\n constellationBootConfig.appAlias = sdkConfigServer.appAlias;\n }\n\n if( tokenInfo ) {\n // Pass in auth info to Constellation\n constellationBootConfig.authInfo = {\n authType: \"OAuth2.0\",\n tokenInfo,\n // Set whether we want constellation to try to do a full re-Auth or not ()\n // true doesn't seem to be working in SDK scenario so always passing false for now\n popupReauth: false /* !authNoRedirect() */,\n client_id: authConfig.clientId,\n authentication_service: authConfig.authService,\n redirect_uri: authConfig.redirectUri,\n endPoints: {\n authorize: authConfig.authorizeUri,\n token: authConfig.tokenUri,\n revoke: authConfig.revokeUri\n },\n // TODO: setup callback so we can update own storage\n onTokenRetrieval: authTokenUpdated\n }\n } else {\n constellationBootConfig.authorizationHeader = sdkGetAuthHeader();\n }\n\n\n // Turn off dynamic load components (should be able to do it here instead of after load?)\n constellationBootConfig.dynamicLoadComponents = false;\n\n if( gbC11NBootstrapInProgress ) {\n return;\n } else {\n gbC11NBootstrapInProgress = true;\n }\n\n // Note that staticContentServerUrl already ends with a slash (see above), so no slash added.\n // In order to have this import succeed and to have it done with the webpackIgnore magic comment tag.\n // See: https://webpack.js.org/api/module-methods/\n import(/* webpackIgnore: true */ `${constellationBootConfig.staticContentServerUrl}bootstrap-shell.js`).then((bootstrapShell) => {\n // NOTE: once this callback is done, we lose the ability to access loadMashup.\n // So, create a reference to it\n window.myLoadMashup = bootstrapShell.loadMashup;\n window.myLoadPortal = bootstrapShell.loadPortal;\n window.myLoadDefaultPortal = bootstrapShell.loadDefaultPortal;\n\n bootstrapShell.bootstrapWithAuthHeader(constellationBootConfig, 'pega-root').then(() => {\n // eslint-disable-next-line no-console\n console.log('Bootstrap successful!');\n gbC11NBootstrapInProgress = false;\n\n // Setup listener for the reauth event\n if( tokenInfo ) {\n PCore.getPubSubUtils().subscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_FULL_REAUTH, fnReauth, \"authFullReauth\");\n } else {\n // customReauth event introduced with 8.8\n const sEvent = PCore.getConstants().PUB_SUB_EVENTS.EVENT_CUSTOM_REAUTH;\n if( sEvent ) {\n PCore.getPubSubUtils().subscribe(sEvent, fnReauth, \"doReauth\");\n }\n }\n\n // Fire SdkConstellationReady event so bridge and app route can do expected post PCore initializations\n const event = new CustomEvent('SdkConstellationReady', {});\n document.dispatchEvent(event);\n })\n .catch( e => {\n // Assume error caught is because token is not valid and attempt a full reauth\n // eslint-disable-next-line no-console\n console.error(`Constellation JS Engine bootstrap failed. ${e}`);\n gbC11NBootstrapInProgress = false;\n fnReauth();\n })\n });\n /* Ends here */\n};\n\nexport const updateLoginStatus = () => {\n const sAuthHdr = sdkGetAuthHeader();\n gbLoggedIn = sAuthHdr && sAuthHdr.length > 0;\n};\n\nconst getCurrentTokens = () => {\n let tokens = null;\n const sTI = sessionStorage.getItem('rsdk_TI');\n if(sTI) {\n try {\n tokens = JSON.parse(sTI);\n } catch(e) {\n tokens = null;\n }\n }\n return tokens;\n};\n\nconst fireTokenAvailable = (token, bLoadC11N=true) => {\n if( !token ) {\n // This is used on page reload to load the token from sessionStorage and carry on\n token = getCurrentTokens();\n if( !token ) {\n return;\n }\n }\n\n sessionStorage.setItem('rsdk_AH', `${token.token_type} ${token.access_token}`);\n updateLoginStatus();\n\n // gbLoggedIn is getting updated in updateLoginStatus\n gbLoggedIn = true;\n gbLoginInProgress = false;\n sessionStorage.removeItem(\"rsdk_loggingIn\");\n forcePopupForReauths(true);\n\n const sSI = sessionStorage.getItem(\"rsdk_CI\");\n let authConfig = null;\n if( sSI ) {\n try {\n authConfig = JSON.parse(sSI);\n } catch(e) {\n // do nothing\n }\n }\n\n if( !window.PCore && bLoadC11N ) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n constellationInit( authConfig, token, authTokenUpdated, authFullReauth );\n }\n\n/*\n // Create and dispatch the SdkLoggedIn event to trigger constellationInit\n const event = new CustomEvent('SdkLoggedIn', { detail: { authConfig, tokenInfo: token } });\n document.dispatchEvent(event);\n */\n};\n\nconst processTokenOnLogin = ( token, bLoadC11N=true ) => {\n sessionStorage.setItem(\"rsdk_TI\", JSON.stringify(token));\n if( window.PCore ) {\n window.PCore.getAuthUtils().setTokens(token);\n } else {\n fireTokenAvailable(token, bLoadC11N);\n }\n};\n\nconst updateRedirectUri = (aMgr, sRedirectUri) => {\n const sSI = sessionStorage.getItem(\"rsdk_CI\");\n let authConfig = null;\n if( sSI ) {\n try {\n authConfig = JSON.parse(sSI);\n } catch(e) {\n // do nothing\n }\n }\n authConfig.redirectUri = sRedirectUri;\n sessionStorage.setItem(\"rsdk_CI\", JSON.stringify(authConfig));\n aMgr.reloadConfig();\n};\n\n\n// TODO: Cope with 401 and refresh token if possible (or just hope that it succeeds during login)\n/**\n * Retrieve UserInfo for current authentication service\n */\n export const getUserInfo = (bUseSS=true) => {\n const ssUserInfo = sessionStorage.getItem(\"rsdk_UI\");\n let userInfo = null;\n if( bUseSS && ssUserInfo ) {\n try {\n userInfo = JSON.parse(ssUserInfo);\n return Promise.resolve(userInfo);\n } catch(e) {\n // do nothing\n }\n }\n getAuthMgr(false).then( (aMgr) => {\n const tokenInfo = getCurrentTokens();\n return aMgr.getUserinfo(tokenInfo.access_token).then( data => {\n userInfo = data;\n if( userInfo ) {\n sessionStorage.setItem(\"rsdk_UI\", JSON.stringify(userInfo));\n } else {\n sessionStorage.removeItem(\"rsdk_UI\");\n }\n return Promise.resolve(userInfo);\n });\n });\n\n};\n\nexport const login = (bFullReauth=false) => {\n\n if( gbCustomAuth ) return;\n\n gbLoginInProgress = true;\n // Needed so a redirect to login screen and back will know we are still in process of logging in\n sessionStorage.setItem(\"rsdk_loggingIn\", `${Date.now()}`);\n\n getAuthMgr(!bFullReauth).then( (aMgr) => {\n const bMainRedirect = !authNoRedirect();\n const sdkConfigAuth = SdkConfigAccess.getSdkConfigAuth();\n let sRedirectUri=sdkConfigAuth.redirectUri;\n\n // If initial main redirect is OK, redirect to main page, otherwise will authorize in a popup window\n if (bMainRedirect && !bFullReauth) {\n // update redirect uri to be the root\n updateRedirectUri(aMgr, sRedirectUri);\n aMgr.loginRedirect();\n // Don't have token til after the redirect\n return Promise.resolve(undefined);\n } else {\n // Construct path to redirect uri\n const nLastPathSep = sRedirectUri.lastIndexOf(\"/\");\n sRedirectUri = nLastPathSep !== -1 ? `${sRedirectUri.substring(0,nLastPathSep+1)}auth.html` : `${sRedirectUri}/auth.html`;\n // Set redirectUri to static auth.html\n updateRedirectUri(aMgr, sRedirectUri);\n return new Promise( (resolve, reject) => {\n aMgr.login().then(token => {\n processTokenOnLogin(token);\n // getUserInfo();\n resolve(token.access_token);\n }).catch( (e) => {\n gbLoginInProgress = false;\n sessionStorage.removeItem(\"rsdk_loggingIn\");\n // eslint-disable-next-line no-console\n console.log(e);\n reject(e);\n });\n });\n }\n });\n\n};\n\nexport const authRedirectCallback = ( href, fnLoggedInCB=null ) => {\n // Get code from href and swap for token\n const aHrefParts = href.split('?');\n const urlParams = new URLSearchParams(aHrefParts.length>1 ? `?${aHrefParts[1]}` : '');\n const code = urlParams.get(\"code\");\n\n getAuthMgr(false).then( (aMgr) => {\n aMgr.getToken(code).then(token => {\n if( token && token.access_token ) {\n processTokenOnLogin(token, false);\n // getUserInfo();\n if( fnLoggedInCB ) {\n fnLoggedInCB( token.access_token );\n }\n }\n });\n });\n};\n\n/**\n * Silent or visible login based on login status\n * @param {string} appName - unique name for application route (will be used to clear an session storage for another route)\n * @param {boolean} noMainRedirect - avoid the initial main window redirect that happens in scenarios where it is OK to transition\n * away from the main page\n * @param {boolean} deferLogin - defer logging in (if not already authenticated)\n */\nexport const loginIfNecessary = (appName, noMainRedirect=false, deferLogin=false) => {\n // If no initial redirect status of page changed...clearAuthMgr\n const currNoMainRedirect = authNoRedirect();\n const currAppName = sessionStorage.getItem(\"rsdk_appName\");\n if( appName !== currAppName || noMainRedirect !== currNoMainRedirect) {\n clearAuthMgr();\n sessionStorage.setItem(\"rsdk_appName\", appName);\n }\n setNoInitialRedirect(noMainRedirect);\n // If custom auth no need to do any OAuth logic\n if( gbCustomAuth ) {\n if( !window.PCore ) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n constellationInit( null, null, null, authCustomReauth );\n }\n return;\n }\n\n if( window.location.href.indexOf(\"?code\") !== -1 ) {\n // initialize authMgr\n initOAuth(false);\n return getAuthMgr(false).then(() => {\n authRedirectCallback(window.location.href, ()=> {\n window.location.href = window.location.pathname;\n });\n });\n }\n if( !deferLogin && (!gbLoginInProgress || isLoginExpired()) ) {\n initOAuth(false);\n return getAuthMgr(false).then(() => {\n updateLoginStatus();\n if( gbLoggedIn ) {\n fireTokenAvailable(getCurrentTokens());\n // getUserInfo();\n } else {\n return login();\n }\n });\n }\n};\n\nexport const getHomeUrl = () => {\n return `${window.location.origin}/`;\n};\n\n\nexport const authIsMainRedirect = () => {\n // Even with main redirect, we want to use it only for the first login (so it doesn't wipe out any state or the reload)\n return !authNoRedirect() && !usePopupForRestOfSession;\n};\n\n// Passive update where just session storage is updated so can be used on a window refresh\nexport const authTokenUpdated = (tokenInfo ) => {\n sessionStorage.setItem(\"rsdk_TI\", JSON.stringify(tokenInfo));\n};\n\nexport const logout = () => {\n sessionStorage.removeItem('rsdk_portalName');\n return new Promise((resolve) => {\n const fnClearAndResolve = () => {\n clearAuthMgr();\n\n const event = new Event('SdkLoggedOut');\n document.dispatchEvent(event);\n\n resolve();\n };\n if( gbCustomAuth ) {\n sessionStorage.removeItem(\"rsdk_AH\");\n fnClearAndResolve();\n return;\n }\n const tokenInfo = getCurrentTokens();\n if( tokenInfo && tokenInfo.access_token ) {\n if( window.PCore ) {\n window.PCore.getAuthUtils().revokeTokens().then(() => {\n fnClearAndResolve();\n }).catch(err => {\n // eslint-disable-next-line no-console\n console.log(\"Error:\",err?.message);\n });\n } else {\n getAuthMgr(false).then( (aMgr) => {\n aMgr.revokeTokens(tokenInfo.access_token, tokenInfo.refresh_token)\n .then(() => {\n // Go to finally\n })\n .finally(() => {\n fnClearAndResolve();\n });\n });\n }\n } else {\n fnClearAndResolve();\n }\n });\n};\n\n// Callback routine for custom event to ask for updated tokens\nexport const authUpdateTokens = (token) => {\n processTokenOnLogin( token );\n};\n\n\n// Initiate a full OAuth re-authorization (any refresh token has also expired).\nexport const authFullReauth = () => {\n const bHandleHere = true; // Other alternative is to raise an event and have someone else handle it\n\n if( bHandleHere ) {\n // Don't want to do a full clear of authMgr as will loose sessionIndex. Rather just clear the tokens\n clearAuthMgr(true);\n login(true);\n } else {\n // Fire the SdkFullReauth event to indicate a new token is needed (PCore.getAuthUtils.setTokens method\n // should be used to communicate the new token to Constellation JS Engine.\n const event = new CustomEvent('SdkFullReauth', { detail: authUpdateTokens });\n document.dispatchEvent(event);\n }\n};\n\n// Set the custom authorization header for the SDK (and Constellation JS Engine) to\n// utilize for every DX API request\nexport const sdkSetAuthHeader = (authHeader) => {\n // set this within session storage so it survives a browser reload\n if( authHeader ) {\n sessionStorage.setItem(\"rsdk_AH\", authHeader);\n // setAuthorizationHeader method not available til 8.8 so do safety check\n if( window.PCore?.getAuthUtils().setAuthorizationHeader ) {\n window.PCore.getAuthUtils().setAuthorizationHeader(authHeader);\n }\n } else {\n sessionStorage.removeItem(\"rsdk_AH\");\n }\n gbCustomAuth = true;\n};\n\n// Initiate a custom re-authorization.\nexport const authCustomReauth = () => {\n // Fire the SdkCustomReauth event to indicate a new authHeader is needed. Event listener should invoke sdkSetAuthHeader\n // to communicate the new token to sdk (and Constellation JS Engine)\n const event = new CustomEvent('SdkCustomReauth', { detail: sdkSetAuthHeader });\n document.dispatchEvent(event);\n};\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function that accepts array of messages as input and group them by their type and returns the resulting object
|
|
3
|
+
* @param {Array} inputMessages
|
|
4
|
+
* Eg: [
|
|
5
|
+
* {message: 'First Name is required', type: 'error'},
|
|
6
|
+
* {message: 'Last Name is required', type: 'error'},
|
|
7
|
+
* {message: 'Address field should be clear and precise', type: 'info'}
|
|
8
|
+
* ]
|
|
9
|
+
*
|
|
10
|
+
* @returns {object}
|
|
11
|
+
*
|
|
12
|
+
* Eg: {
|
|
13
|
+
* error: ['First Name is required', 'Last Name is required'],
|
|
14
|
+
* info: ['Address field should be clear and precise']
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
declare function getMessagesGrouped(inputMessages: any): {};
|
|
18
|
+
declare function getBanners(config: any): any;
|
|
19
|
+
export { getMessagesGrouped, getBanners };
|
|
20
|
+
//# sourceMappingURL=case-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-utils.d.ts","sourceRoot":"","sources":["../../../src/components/helpers/case-utils.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;GAeG;AAEH,iBAAS,kBAAkB,CAAC,aAAa,KAAA,MAUxC;AA+BD,iBAAS,UAAU,CAAC,MAAM,KAAA,OAsCzB;AAED,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import AlertBanner from '../designSystemExtension/AlertBanner';
|
|
3
|
+
/**
|
|
4
|
+
* Function that accepts array of messages as input and group them by their type and returns the resulting object
|
|
5
|
+
* @param {Array} inputMessages
|
|
6
|
+
* Eg: [
|
|
7
|
+
* {message: 'First Name is required', type: 'error'},
|
|
8
|
+
* {message: 'Last Name is required', type: 'error'},
|
|
9
|
+
* {message: 'Address field should be clear and precise', type: 'info'}
|
|
10
|
+
* ]
|
|
11
|
+
*
|
|
12
|
+
* @returns {object}
|
|
13
|
+
*
|
|
14
|
+
* Eg: {
|
|
15
|
+
* error: ['First Name is required', 'Last Name is required'],
|
|
16
|
+
* info: ['Address field should be clear and precise']
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
function getMessagesGrouped(inputMessages) {
|
|
20
|
+
const messages = {};
|
|
21
|
+
if (inputMessages && inputMessages instanceof Array && inputMessages.length > 0) {
|
|
22
|
+
inputMessages.forEach(item => {
|
|
23
|
+
const { message, type } = item;
|
|
24
|
+
messages[type] = [...(messages[type] || []), message];
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return messages;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Function accepts a error type and variant of the banner
|
|
31
|
+
* @param {string} type
|
|
32
|
+
* Eg: 'error'
|
|
33
|
+
* @returns {string}
|
|
34
|
+
* Eg: 'urgent'
|
|
35
|
+
*/
|
|
36
|
+
function getVariant(type) {
|
|
37
|
+
const { BANNER_VARIANT_SUCCESS, BANNER_VARIANT_INFO, BANNER_VARIANT_URGENT, MESSAGES } = PCore.getConstants();
|
|
38
|
+
const { MESSAGES_TYPE_ERROR, MESSAGES_TYPE_INFO, MESSAGES_TYPE_SUCCESS } = MESSAGES;
|
|
39
|
+
let variant;
|
|
40
|
+
switch (type) {
|
|
41
|
+
case MESSAGES_TYPE_ERROR:
|
|
42
|
+
variant = BANNER_VARIANT_URGENT;
|
|
43
|
+
break;
|
|
44
|
+
case MESSAGES_TYPE_INFO:
|
|
45
|
+
variant = BANNER_VARIANT_INFO;
|
|
46
|
+
break;
|
|
47
|
+
case MESSAGES_TYPE_SUCCESS:
|
|
48
|
+
variant = BANNER_VARIANT_SUCCESS;
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
variant = '';
|
|
52
|
+
}
|
|
53
|
+
return variant;
|
|
54
|
+
}
|
|
55
|
+
function getBanners(config) {
|
|
56
|
+
const { target, pageMessages, httpMessages } = config;
|
|
57
|
+
const { PAGE } = PCore.getConstants();
|
|
58
|
+
const { clearMessages } = PCore.getMessageManager();
|
|
59
|
+
const banners = [];
|
|
60
|
+
const groupedPageMessages = getMessagesGrouped(pageMessages);
|
|
61
|
+
Object.keys(groupedPageMessages).forEach(type => {
|
|
62
|
+
const messagesByType = groupedPageMessages[type];
|
|
63
|
+
const variant = getVariant(type);
|
|
64
|
+
const pageMessagesBannerID = `${target}_${PAGE}_${type}`.toLowerCase().replace('/', '_');
|
|
65
|
+
banners.push(React.createElement(AlertBanner, { id: pageMessagesBannerID, variant: variant, messages: messagesByType, onDismiss: variant === 'urgent'
|
|
66
|
+
? ''
|
|
67
|
+
: () => {
|
|
68
|
+
clearMessages({
|
|
69
|
+
category: PAGE,
|
|
70
|
+
type,
|
|
71
|
+
context: target
|
|
72
|
+
});
|
|
73
|
+
} }));
|
|
74
|
+
});
|
|
75
|
+
if (httpMessages && httpMessages.length > 0) {
|
|
76
|
+
banners.push(React.createElement(AlertBanner, { id: 'modalViewContainerBanner', variant: 'urgent', messages: httpMessages }));
|
|
77
|
+
}
|
|
78
|
+
return banners;
|
|
79
|
+
}
|
|
80
|
+
export { getMessagesGrouped, getBanners };
|
|
81
|
+
//# sourceMappingURL=case-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-utils.js","sourceRoot":"","sources":["../../../src/components/helpers/case-utils.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport AlertBanner from '../designSystemExtension/AlertBanner';\n\ndeclare let PCore: any;\n\n/**\n * Function that accepts array of messages as input and group them by their type and returns the resulting object\n * @param {Array} inputMessages\n * Eg: [\n * {message: 'First Name is required', type: 'error'},\n * {message: 'Last Name is required', type: 'error'},\n * {message: 'Address field should be clear and precise', type: 'info'}\n * ]\n *\n * @returns {object}\n *\n * Eg: {\n * error: ['First Name is required', 'Last Name is required'],\n * info: ['Address field should be clear and precise']\n * }\n */\n\nfunction getMessagesGrouped(inputMessages) {\n const messages = {};\n\n if (inputMessages && inputMessages instanceof Array && inputMessages.length > 0) {\n inputMessages.forEach(item => {\n const { message, type } = item;\n messages[type] = [...(messages[type] || []), message];\n });\n }\n return messages;\n}\n\n/**\n * Function accepts a error type and variant of the banner\n * @param {string} type\n * Eg: 'error'\n * @returns {string}\n * Eg: 'urgent'\n */\nfunction getVariant(type) {\n const { BANNER_VARIANT_SUCCESS, BANNER_VARIANT_INFO, BANNER_VARIANT_URGENT, MESSAGES } =\n PCore.getConstants();\n const { MESSAGES_TYPE_ERROR, MESSAGES_TYPE_INFO, MESSAGES_TYPE_SUCCESS } = MESSAGES;\n\n let variant;\n switch (type) {\n case MESSAGES_TYPE_ERROR:\n variant = BANNER_VARIANT_URGENT;\n break;\n case MESSAGES_TYPE_INFO:\n variant = BANNER_VARIANT_INFO;\n break;\n case MESSAGES_TYPE_SUCCESS:\n variant = BANNER_VARIANT_SUCCESS;\n break;\n default:\n variant = '';\n }\n return variant;\n}\n\nfunction getBanners(config) {\n const { target, pageMessages, httpMessages } = config;\n const { PAGE } = PCore.getConstants();\n const { clearMessages } = PCore.getMessageManager();\n const banners: any = [];\n const groupedPageMessages = getMessagesGrouped(pageMessages);\n\n Object.keys(groupedPageMessages).forEach(type => {\n const messagesByType = groupedPageMessages[type];\n const variant = getVariant(type);\n const pageMessagesBannerID = `${target}_${PAGE}_${type}`.toLowerCase().replace('/', '_');\n banners.push(\n <AlertBanner\n id={pageMessagesBannerID}\n variant={variant}\n messages={messagesByType}\n onDismiss={\n variant === 'urgent'\n ? ''\n : () => {\n clearMessages({\n category: PAGE,\n type,\n context: target\n });\n }\n }\n />\n );\n });\n\n if (httpMessages && httpMessages.length > 0) {\n banners.push(\n <AlertBanner id='modalViewContainerBanner' variant='urgent' messages={httpMessages} />\n );\n }\n\n return banners;\n}\n\nexport { getMessagesGrouped, getBanners };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-utils.d.ts","sourceRoot":"","sources":["../../../src/components/helpers/common-utils.ts"],"names":[],"mappings":"AACA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-utils.js","sourceRoot":"","sources":["../../../src/components/helpers/common-utils.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACvC,CAAC","sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport function isEmptyObject(obj: Object): Boolean {\n return Object.keys(obj).length === 0;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config_access.d.ts","sourceRoot":"","sources":["../../../src/components/helpers/config_access.js"],"names":[],"mappings":"AAQA,gCAAoB;
|
|
1
|
+
{"version":3,"file":"config_access.d.ts","sourceRoot":"","sources":["../../../src/components/helpers/config_access.js"],"names":[],"mappings":"AAQA,gCAAoB;AAoNpB,6CAgCC"}
|