udp-react-enterprise-component-library 25.1.0-beta.9 → 25.1.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AmbientGridTemplate-BqlMt5Su.js → AmbientGridTemplate-6xfwTiz-.js} +24 -62
- package/dist/AmbientGridTemplate-6xfwTiz-.js.map +1 -0
- package/dist/ClientSideUdpGrid-CEhDqIId.js +56 -0
- package/dist/ClientSideUdpGrid-CEhDqIId.js.map +1 -0
- package/dist/{EnvironmentRibbon-DaDmKAPO.js → EnvironmentRibbon-oEmbWjEq.js} +4 -148
- package/dist/EnvironmentRibbon-oEmbWjEq.js.map +1 -0
- package/dist/{MenuPage-CO6_GWwB.js → MenuPage-CZHpoopY.js} +12 -13
- package/dist/{MenuPage-CO6_GWwB.js.map → MenuPage-CZHpoopY.js.map} +1 -1
- package/dist/{MyExportsPage-CX9tzqHk.js → MyExportsPage-CS2Bw2mF.js} +56 -69
- package/dist/{MyExportsPage-CX9tzqHk.js.map → MyExportsPage-CS2Bw2mF.js.map} +1 -1
- package/dist/MyExportsPage-hyX42CN6.js +11 -0
- package/dist/{PageContainer-k8KCfGsM.js → PageContainer-BPHLFGju.js} +12 -17
- package/dist/PageContainer-BPHLFGju.js.map +1 -0
- package/dist/{PageNotFoundRoute-CxYZNEhN.js → PageNotFoundRoute-D9dLbM_w.js} +1 -1
- package/dist/{PageNotFoundRoute-CxYZNEhN.js.map → PageNotFoundRoute-D9dLbM_w.js.map} +1 -1
- package/dist/PageNotFoundRoute-DUj0Q9J8.js +3 -0
- package/dist/{PasswordResetRedirect-BHnkAW40.js → PasswordResetRedirect-C3g8L0vA.js} +2 -3
- package/dist/{PasswordResetRedirect-BHnkAW40.js.map → PasswordResetRedirect-C3g8L0vA.js.map} +1 -1
- package/dist/PasswordResetRedirect-Dh-S5Ril.js +3 -0
- package/dist/{SearchUtilities-Bor3HbfB.js → SearchUtilities-Btugro8y.js} +11 -20
- package/dist/{SearchUtilities-Bor3HbfB.js.map → SearchUtilities-Btugro8y.js.map} +1 -1
- package/dist/{SideSheet-DUsxG1FN.js → SideSheet-BsDoeNmq.js} +7 -47
- package/dist/SideSheet-BsDoeNmq.js.map +1 -0
- package/dist/UdpMaintenanceConfigPage-DcHntunS.js +88 -0
- package/dist/UdpMaintenanceConfigPage-DcHntunS.js.map +1 -0
- package/dist/UdpPublicForm-DTt-lMfk.js +4 -0
- package/dist/{UdpPublicForm-Caa1tH6z.js → UdpPublicForm-LDSuOwV2.js} +2 -2
- package/dist/{UdpPublicForm-Caa1tH6z.js.map → UdpPublicForm-LDSuOwV2.js.map} +1 -1
- package/dist/{UtilitySideBar-D4CXGtW2.js → UtilitySideBar-95k0edSA.js} +45 -89
- package/dist/{UtilitySideBar-D4CXGtW2.js.map → UtilitySideBar-95k0edSA.js.map} +1 -1
- package/dist/{VirtualBrowser-BXL0hdy0.js → VirtualBrowser-_epMjUkE.js} +23 -29
- package/dist/{VirtualBrowser-BXL0hdy0.js.map → VirtualBrowser-_epMjUkE.js.map} +1 -1
- package/dist/{WorkflowContainer-DrqzuQtU.js → WorkflowContainer-ClPvY2mG.js} +14 -20
- package/dist/{WorkflowContainer-DrqzuQtU.js.map → WorkflowContainer-ClPvY2mG.js.map} +1 -1
- package/dist/WorkflowContainer-D0QUOc-f.js +11 -0
- package/dist/{apiHelpers-DZots3og.js → apiHelpers-CmM6DWAT.js} +7 -12
- package/dist/{apiHelpers-DZots3og.js.map → apiHelpers-CmM6DWAT.js.map} +1 -1
- package/dist/entityUtilities-Dy-jsB5c.js +22 -0
- package/dist/entityUtilities-Dy-jsB5c.js.map +1 -0
- package/dist/index.js +1528 -2114
- package/dist/index.js.map +1 -1
- package/dist/{propertyTypeEnums-Civy7RJv.js → propertyTypeEnums-BCCGQqVB.js} +2 -2
- package/dist/{propertyTypeEnums-Civy7RJv.js.map → propertyTypeEnums-BCCGQqVB.js.map} +1 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/maintenanceEngine/crudBrowser/CrudTableColumnDefs.d.ts +1 -9
- package/dist/types/maintenanceEngine/crudBrowser/crudHelper.d.ts +1 -0
- package/dist/types/menuPage/MenuPage.d.ts +2 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/udp/pages/UdpMaintenanceConfigPage.d.ts +2 -1
- package/dist/useAxiosGet-Dh5pVURP.js +144 -0
- package/dist/useAxiosGet-Dh5pVURP.js.map +1 -0
- package/dist/useAxiosMutate-DlG255x9.js +43 -0
- package/dist/useAxiosMutate-DlG255x9.js.map +1 -0
- package/package.json +2 -2
- package/dist/AmbientGridTemplate-BqlMt5Su.js.map +0 -1
- package/dist/EnvironmentRibbon-DaDmKAPO.js.map +0 -1
- package/dist/MyExportsPage-CkzQ0MRq.js +0 -8
- package/dist/PageContainer-k8KCfGsM.js.map +0 -1
- package/dist/PageNotFoundRoute-BbBtA9Cz.js +0 -3
- package/dist/PasswordResetRedirect-tUV2yEkH.js +0 -3
- package/dist/SideSheet-DUsxG1FN.js.map +0 -1
- package/dist/UdpPublicForm-Cvw5tOHe.js +0 -4
- package/dist/WorkflowContainer-Q8gtuaB7.js +0 -9
- package/dist/types/maintenanceEngine/crudBrowser/CrudTableActionRender.d.ts +0 -3
|
@@ -21,8 +21,7 @@ async function initSignInAuthProvider() {
|
|
|
21
21
|
const applicationID = ConfigService.config.MSAL_CLIENT_ID;
|
|
22
22
|
const reactRedirectUri = `${REDIRECT_URL_BASE}/${ConfigService.config.USE_AAD_REDIRECT ? "aad_redirect" : "aad_callback"}`;
|
|
23
23
|
const tenantSubdomain = tenant.split(".")[0];
|
|
24
|
-
const
|
|
25
|
-
const signInAuthority = `${instance}${tenant}/${signInPolicy}`;
|
|
24
|
+
const signInAuthority = `${`https://${tenantSubdomain}.b2clogin.com/`}${tenant}/${signInPolicy}`;
|
|
26
25
|
apiAccessScopeValue = `https://${tenant}/${ConfigService.config.MSAL_API_ACCESS_SCOPE}`;
|
|
27
26
|
const ua = window.navigator.userAgent;
|
|
28
27
|
const msie = ua.indexOf("MSIE ");
|
|
@@ -118,8 +117,7 @@ const whitelistedPaths = [
|
|
|
118
117
|
*/
|
|
119
118
|
const useLoginAction = () => loginRedirect;
|
|
120
119
|
const loginRedirect = () => {
|
|
121
|
-
|
|
122
|
-
signInAuthProvider.loginRedirect(getLoginRequest());
|
|
120
|
+
getSignInAuthProvider().loginRedirect(getLoginRequest());
|
|
123
121
|
};
|
|
124
122
|
function useLogoutAction() {
|
|
125
123
|
return async () => {
|
|
@@ -136,8 +134,7 @@ async function acquireAccessToken() {
|
|
|
136
134
|
}).then((response) => {
|
|
137
135
|
return response.accessToken;
|
|
138
136
|
}).catch(async (error) => {
|
|
139
|
-
|
|
140
|
-
if (!currentPathIsWhitelisted) signInAuthProvider.loginRedirect(getLoginRequest());
|
|
137
|
+
if (!whitelistedPaths.includes(window.location.pathname)) signInAuthProvider.loginRedirect(getLoginRequest());
|
|
141
138
|
});
|
|
142
139
|
}
|
|
143
140
|
|
|
@@ -145,8 +142,7 @@ async function acquireAccessToken() {
|
|
|
145
142
|
//#region src/utilities/storage/UnitySessionStorage.js
|
|
146
143
|
const TenantStorageKey = "active-tenant";
|
|
147
144
|
const storeInitialTenant = () => {
|
|
148
|
-
const
|
|
149
|
-
const urlTenantId = urlParams.get("tenantId");
|
|
145
|
+
const urlTenantId = new URLSearchParams(window.location.search).get("tenantId");
|
|
150
146
|
if (urlTenantId) storeTenant(urlTenantId);
|
|
151
147
|
};
|
|
152
148
|
const storeTenant = (tenantId) => {
|
|
@@ -215,7 +211,7 @@ const useHandleAxiosSnackbar = () => {
|
|
|
215
211
|
if (preCallBack && !showMessage) return;
|
|
216
212
|
let successMessage = message ?? fallbackSuccessMessage;
|
|
217
213
|
if (typeof successMessage !== "string" || !successMessage || successMessage.length === 0) successMessage = fallbackSuccessMessage;
|
|
218
|
-
|
|
214
|
+
enqueueSnackbar(successMessage, {
|
|
219
215
|
variant: "default",
|
|
220
216
|
anchorOrigin: {
|
|
221
217
|
vertical: "top",
|
|
@@ -235,8 +231,7 @@ const useHandleAxiosSnackbar = () => {
|
|
|
235
231
|
dismissSnackbar(key);
|
|
236
232
|
}
|
|
237
233
|
}, "Ok"))
|
|
238
|
-
};
|
|
239
|
-
enqueueSnackbar(successMessage, options);
|
|
234
|
+
});
|
|
240
235
|
}, [dismissSnackbar, enqueueSnackbar]);
|
|
241
236
|
return {
|
|
242
237
|
handleErrorSnackbar,
|
|
@@ -246,4 +241,4 @@ const useHandleAxiosSnackbar = () => {
|
|
|
246
241
|
|
|
247
242
|
//#endregion
|
|
248
243
|
export { ClickOpenEnums, UdpPageEnums, acquireAccessToken, clearStoredTenant, getAccessToken, getApiAccessScope, getLoginRequest, getMergedConfig, getSignInAuthProvider, getStoredTenant, getTokenRequest, handleResponseErrors, initSignInAuthProvider, loginRedirect, storeInitialTenant, storeTenant, useHandleAxiosSnackbar, useLoginAction, useLogoutAction, whitelistedPaths };
|
|
249
|
-
//# sourceMappingURL=apiHelpers-
|
|
244
|
+
//# sourceMappingURL=apiHelpers-CmM6DWAT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiHelpers-DZots3og.js","names":["useLoginAction: LoginFunction","loginRedirect: () => void"],"sources":["../src/utilities/auth/signInAuthProvider.js","../src/enums/pageEnums.ts","../src/utilities/auth/whitelistedPaths.js","../src/utilities/auth/authActions.ts","../src/utilities/storage/UnitySessionStorage.js","../src/utilities/apiHelpers.jsx"],"sourcesContent":["import { PublicClientApplication, EventType } from '@azure/msal-browser';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nlet signInAuthProviderInstance = null;\nlet loginRequestInstance = null;\nlet tokenRequestInstance = null;\nlet apiAccessScopeValue = null;\n\nexport async function initSignInAuthProvider() {\n if (signInAuthProviderInstance) {\n return; // Already initialized\n }\n\n const PUBLIC_URL = new URL(\n import.meta.env.BASE_URL || '/',\n window.location.origin\n ).href.replace(/\\/$/, '');\n\n const REDIRECT_URL_BASE = ConfigService.config.USE_AAD_REDIRECT\n ? ConfigService.config.UNITY_URL\n : PUBLIC_URL;\n\n if (!ConfigService.config.MSAL_TENANT)\n throw new Error('MSAL_TENANT not configured');\n if (!ConfigService.config.MSAL_CLIENT_ID)\n throw new Error('MSAL_CLIENT_ID not configured');\n\n const tenant = ConfigService.config.MSAL_TENANT;\n const signInPolicy = ConfigService.config.SIGN_IN_POLICY;\n const applicationID = ConfigService.config.MSAL_CLIENT_ID;\n const reactRedirectUri = `${REDIRECT_URL_BASE}/${\n ConfigService.config.USE_AAD_REDIRECT ? 'aad_redirect' : 'aad_callback'\n }`;\n const tenantSubdomain = tenant.split('.')[0];\n const instance = `https://${tenantSubdomain}.b2clogin.com/`;\n const signInAuthority = `${instance}${tenant}/${signInPolicy}`;\n apiAccessScopeValue = `https://${tenant}/${ConfigService.config.MSAL_API_ACCESS_SCOPE}`;\n\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n const msie11 = ua.indexOf('Trident/');\n const msedge = ua.indexOf('Edge/');\n const firefox = ua.indexOf('Firefox');\n const isIE = msie > 0 || msie11 > 0;\n const isEdge = msedge > 0;\n const isFirefox = firefox > 0; // Only needed if you need to support the redirect flow in Firefox incognito\n\n // Msal Configurations\n const signInConfig = {\n auth: {\n authority: signInAuthority,\n knownAuthorities: [`${tenantSubdomain}.b2clogin.com`],\n clientId: applicationID,\n redirectUri: reactRedirectUri,\n postLogoutRedirectUri: PUBLIC_URL + '/',\n navigateToLoginRequestUrl: false,\n },\n cache: {\n cacheLocation: 'sessionStorage',\n storeAuthStateInCookie: isIE || isEdge || isFirefox,\n },\n system: {\n allowRedirectInIframe: true,\n },\n };\n\n signInAuthProviderInstance = new PublicClientApplication(signInConfig);\n\n await signInAuthProviderInstance.initialize();\n\n if (\n !signInAuthProviderInstance.getActiveAccount() &&\n signInAuthProviderInstance.getAllAccounts().length > 0\n ) {\n signInAuthProviderInstance.setActiveAccount(\n signInAuthProviderInstance.getAllAccounts()[0]\n );\n }\n\n signInAuthProviderInstance.addEventCallback((event) => {\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload.account) {\n const account = event.payload.account;\n signInAuthProviderInstance.setActiveAccount(account);\n }\n });\n\n tokenRequestInstance = { scopes: [apiAccessScopeValue] };\n\n loginRequestInstance = {\n scopes: [apiAccessScopeValue, 'openid', 'offline_access'],\n state: `${PUBLIC_URL}/aad_callback`,\n };\n}\n\nexport const getSignInAuthProvider = () => {\n if (!signInAuthProviderInstance) {\n throw new Error(\n 'signInAuthProvider is not initialized. Call initSignInAuthProvider first.'\n );\n }\n return signInAuthProviderInstance;\n};\n\nexport const getLoginRequest = () => {\n if (!loginRequestInstance) {\n throw new Error(\n 'loginRequest is not initialized. Call initSignInAuthProvider first.'\n );\n }\n return loginRequestInstance;\n};\n\nexport const getTokenRequest = () => {\n if (!tokenRequestInstance) {\n throw new Error(\n 'tokenRequest is not initialized. Call initSignInAuthProvider first.'\n );\n }\n return tokenRequestInstance;\n};\n\nexport const getApiAccessScope = () => {\n if (!apiAccessScopeValue) {\n throw new Error(\n 'apiAccessScope is not initialized. Call initSignInAuthProvider first.'\n );\n }\n return apiAccessScopeValue;\n};\n","export enum ClickOpenEnums {\n SideSheet = 'sideSheet',\n Dialog = 'dialog',\n SplitScreen = 'splitScreen'\n}\n\nexport enum UdpPageEnums {\n Udp_Maintenance_Engine_Page = '32f32abb-e633-494e-b4c7-8e187c731e95',\n Udp_Data_Browser_Page = 'efaa7518-c943-4cd3-ad44-d78941de3211',\n Udp_Notes_Page = 'ef18c935-4d7b-4923-a87e-975d71f019a2',\n Udp_Reminders_Page = '308d9644-60db-4a0f-88c6-3a1309600ebc',\n Udp_Reports_Page = '35eb68db-cadc-497a-b915-de4e4b709459',\n Udp_Inquiry_Explore_Page = '8118a06e-5e26-437f-8661-8171f9e2ab16',\n Udp_Public_Forms_Page = '0a2f83f1-6f74-4088-b954-7d5762d93cfa'\n}\n","import { UdpPageEnums } from \"../../enums/pageEnums\";\n\nexport const whitelistedPaths = [\n '/verify', \n `/page/${UdpPageEnums.Udp_Public_Forms_Page}`, // Public forms page\n '/aad_redirect',\n '/passwordresetsuccess'\n];\n","import {\n getSignInAuthProvider,\n getTokenRequest,\n getLoginRequest,\n} from './signInAuthProvider';\nimport { BrowserUtils } from '@azure/msal-browser';\nimport { storeCurrentPath } from '../redirect/LocalRedirectUrlStorage';\nimport { whitelistedPaths } from './whitelistedPaths';\nexport type LoginFunction = () => void;\nexport type LogoutFunction = () => void;\n/**\n * Hook providing auth \"actions\" such as login/logout\n */\n\nexport const useLoginAction: LoginFunction = () => loginRedirect;\nexport const loginRedirect: () => void = () => {\n const signInAuthProvider = getSignInAuthProvider();\n signInAuthProvider.loginRedirect(getLoginRequest());\n};\n\nexport function useLogoutAction(): LogoutFunction {\n return async () => {\n const signInAuthProvider = getSignInAuthProvider();\n await signInAuthProvider.logoutRedirect({\n account: signInAuthProvider.getActiveAccount(),\n });\n };\n}\n\nexport async function acquireAccessToken(): Promise<string | void> {\n const signInAuthProvider = getSignInAuthProvider();\n const account = signInAuthProvider.getActiveAccount() ?? undefined;\n\n if (account) {\n return signInAuthProvider\n .acquireTokenSilent({ ...getTokenRequest(), account })\n .then((response) => {\n return response.accessToken;\n })\n .catch(async (error) => {\n const currentPathIsWhitelisted = whitelistedPaths.includes(\n window.location.pathname\n );\n if (!currentPathIsWhitelisted) {\n signInAuthProvider.loginRedirect(getLoginRequest());\n }\n });\n }\n}\n","const TenantStorageKey = 'active-tenant';\n\nexport const storeInitialTenant = () => {\n const urlParams = new URLSearchParams(window.location.search);\n const urlTenantId = urlParams.get('tenantId');\n\n if (urlTenantId) {\n storeTenant(urlTenantId);\n }\n};\n\nexport const storeTenant = (tenantId) => {\n window.sessionStorage.setItem(TenantStorageKey, tenantId);\n};\n\nexport const getStoredTenant = () => {\n return window.sessionStorage.getItem(TenantStorageKey);\n};\n\nexport const clearStoredTenant = () => {\n window.sessionStorage.removeItem(TenantStorageKey);\n};\n","import React from \"react\";\nimport { acquireAccessToken } from './auth/authActions';\nimport { InteractionRequiredAuthError } from '@azure/msal-browser';\nimport { getStoredTenant } from './storage/UnitySessionStorage';\nimport { useSnackbar } from 'notistack';\nimport { Button } from '@material-ui/core';\nimport { useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nexport const getMergedConfig = (accessToken, config) => {\n const headers = config?.headers ?? {};\n\n headers.currentTenantId ||= getStoredTenant();\n if (accessToken) headers.Authorization ||= `Bearer ${accessToken}`;\n\n config.headers = headers;\n return config;\n};\n\nexport const handleResponseErrors = async (error) => {\n if (error?.response?.status === 401) {\n await acquireAccessToken();\n }\n};\n\nexport const getAccessToken = async () => {\n return await acquireAccessToken();\n};\n\n/**\n * Checks to make sure the error isn't cancelled, if so just return w/o doing anything\n *Otherwise call a pre-method, create a snackbar, then call a post-method\n *preCallBack returns a bool, true = show snackbar\n */\nexport const useHandleAxiosSnackbar = () => {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const history = useHistory();\n\n const dismissSnackbar = useCallback(\n (key, callback) => {\n closeSnackbar(key);\n callback?.();\n },\n [closeSnackbar]\n );\n\n const handleErrorSnackbar = useCallback(\n (error, customMessage, preCallBack, callback) => {\n const fallbackErrorMessage = 'Error executing request';\n if (\n error?.toString()?.toLowerCase() === 'cancel' ||\n error?.code === 'ERR_CANCELED'\n )\n return;\n\n // Don't call the preCallback unless we actually failed.\n const showSnackBar = preCallBack?.();\n if (preCallBack && !showSnackBar) return;\n\n let errorMessage =\n customMessage ??\n (error?.response?.data || error?.message || fallbackErrorMessage);\n if (\n typeof errorMessage !== 'string' ||\n !errorMessage ||\n errorMessage.length === 0\n ) {\n errorMessage = fallbackErrorMessage;\n }\n\n enqueueSnackbar(errorMessage, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <Button\n color='secondary'\n size='small'\n onClick={() => {\n dismissSnackbar(key);\n }}\n >\n Ok\n </Button>\n )\n });\n\n callback?.();\n },\n [dismissSnackbar, enqueueSnackbar]\n );\n\n const handleSuccessSnackbar = useCallback(\n (message, preCallBack, callback, navigationPath, buttonText) => {\n const fallbackSuccessMessage = 'Executed request successfully';\n const showMessage = preCallBack?.();\n if (preCallBack && !showMessage) return;\n\n let successMessage = message ?? fallbackSuccessMessage;\n if (\n typeof successMessage !== 'string' ||\n !successMessage ||\n successMessage.length === 0\n ) {\n successMessage = fallbackSuccessMessage;\n }\n\n const options = {\n variant: 'default',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <>\n {navigationPath && (\n <Button\n color='secondary'\n size='small'\n onClick={() => {\n history.push(navigationPath);\n dismissSnackbar(key);\n }}\n >\n {buttonText? buttonText : 'Go to page'}\n </Button>\n )}\n <Button\n color='secondary'\n size='small'\n onClick={() => {\n dismissSnackbar(key);\n }}\n >\n Ok\n </Button>\n </>\n )\n };\n\n enqueueSnackbar(successMessage, options);\n },\n [dismissSnackbar, enqueueSnackbar]\n );\n\n return { handleErrorSnackbar, handleSuccessSnackbar };\n};\n"],"mappings":";;;;;;;;AAGA,IAAI,6BAA6B;AACjC,IAAI,uBAAuB;AAC3B,IAAI,uBAAuB;AAC3B,IAAI,sBAAsB;AAE1B,eAAsB,yBAAyB;AAC7C,KAAI,2BACF;CAGF,MAAM,aAAa,IAAI,IACrB,OAAO,KAAK,IAAI,YAAY,KAC5B,OAAO,SAAS,QAChB,KAAK,QAAQ,OAAO;CAEtB,MAAM,oBAAoB,cAAc,OAAO,mBAC3C,cAAc,OAAO,YACrB;AAEJ,KAAI,CAAC,cAAc,OAAO,YACxB,OAAM,IAAI,MAAM;AAClB,KAAI,CAAC,cAAc,OAAO,eACxB,OAAM,IAAI,MAAM;CAElB,MAAM,SAAS,cAAc,OAAO;CACpC,MAAM,eAAe,cAAc,OAAO;CAC1C,MAAM,gBAAgB,cAAc,OAAO;CAC3C,MAAM,mBAAmB,GAAG,kBAAkB,GAC5C,cAAc,OAAO,mBAAmB,iBAAiB;CAE3D,MAAM,kBAAkB,OAAO,MAAM,KAAK;CAC1C,MAAM,WAAW,WAAW,gBAAgB;CAC5C,MAAM,kBAAkB,GAAG,WAAW,OAAO,GAAG;AAChD,uBAAsB,WAAW,OAAO,GAAG,cAAc,OAAO;CAEhE,MAAM,KAAK,OAAO,UAAU;CAC5B,MAAM,OAAO,GAAG,QAAQ;CACxB,MAAM,SAAS,GAAG,QAAQ;CAC1B,MAAM,SAAS,GAAG,QAAQ;CAC1B,MAAM,UAAU,GAAG,QAAQ;CAC3B,MAAM,OAAO,OAAO,KAAK,SAAS;CAClC,MAAM,SAAS,SAAS;CACxB,MAAM,YAAY,UAAU;CAG5B,MAAM,eAAe;EACnB,MAAM;GACJ,WAAW;GACX,kBAAkB,CAAC,GAAG,gBAAgB;GACtC,UAAU;GACV,aAAa;GACb,uBAAuB,aAAa;GACpC,2BAA2B;;EAE7B,OAAO;GACL,eAAe;GACf,wBAAwB,QAAQ,UAAU;;EAE5C,QAAQ,EACN,uBAAuB;;AAI3B,8BAA6B,IAAI,wBAAwB;AAEzD,OAAM,2BAA2B;AAEjC,KACE,CAAC,2BAA2B,sBAC5B,2BAA2B,iBAAiB,SAAS,EAErD,4BAA2B,iBACzB,2BAA2B,iBAAiB;AAIhD,4BAA2B,kBAAkB,UAAU;AACrD,MAAI,MAAM,cAAc,UAAU,iBAAiB,MAAM,QAAQ,SAAS;GACxE,MAAM,UAAU,MAAM,QAAQ;AAC9B,8BAA2B,iBAAiB;;;AAIhD,wBAAuB,EAAE,QAAQ,CAAC;AAElC,wBAAuB;EACrB,QAAQ;GAAC;GAAqB;GAAU;;EACxC,OAAO,GAAG,WAAW;;;AAIzB,MAAa,8BAA8B;AACzC,KAAI,CAAC,2BACH,OAAM,IAAI,MACR;AAGJ,QAAO;;AAGT,MAAa,wBAAwB;AACnC,KAAI,CAAC,qBACH,OAAM,IAAI,MACR;AAGJ,QAAO;;AAGT,MAAa,wBAAwB;AACnC,KAAI,CAAC,qBACH,OAAM,IAAI,MACR;AAGJ,QAAO;;AAGT,MAAa,0BAA0B;AACrC,KAAI,CAAC,oBACH,OAAM,IAAI,MACR;AAGJ,QAAO;;;;;AC/HT,IAAY,4DAAL;AACL;AACA;AACA;;;AAGF,IAAY,wDAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACXF,MAAa,mBAAmB;CAC5B;CACA,SAAS,aAAa;CACtB;CACA;;;;;;;;ACQJ,MAAaA,uBAAsC;AACnD,MAAaC,sBAAkC;CAC7C,MAAM,qBAAqB;AAC3B,oBAAmB,cAAc;;AAGnC,SAAgB,kBAAkC;AAChD,QAAO,YAAY;EACjB,MAAM,qBAAqB;AAC3B,QAAM,mBAAmB,eAAe,EACtC,SAAS,mBAAmB;;;AAKlC,eAAsB,qBAA6C;CACjE,MAAM,qBAAqB;CAC3B,MAAM,UAAU,mBAAmB,sBAAsB;AAEzD,KAAI,QACF,QAAO,mBACJ,mBAAmB;EAAE,GAAG;EAAmB;IAC3C,MAAM,aAAa;AAClB,SAAO,SAAS;IAEjB,MAAM,OAAO,UAAU;EACtB,MAAM,2BAA2B,iBAAiB,SAChD,OAAO,SAAS;AAElB,MAAI,CAAC,yBACH,oBAAmB,cAAc;;;;;;AC5C3C,MAAM,mBAAmB;AAEzB,MAAa,2BAA2B;CACtC,MAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS;CACtD,MAAM,cAAc,UAAU,IAAI;AAElC,KAAI,YACF,aAAY;;AAIhB,MAAa,eAAe,aAAa;AACvC,QAAO,eAAe,QAAQ,kBAAkB;;AAGlD,MAAa,wBAAwB;AACnC,QAAO,OAAO,eAAe,QAAQ;;AAGvC,MAAa,0BAA0B;AACrC,QAAO,eAAe,WAAW;;;;;ACXnC,MAAa,mBAAmB,aAAa,WAAW;CACtD,MAAM,UAAU,QAAQ,WAAW;AAEnC,SAAQ,oBAAoB;AAC5B,KAAI,YAAa,SAAQ,kBAAkB,UAAU;AAErD,QAAO,UAAU;AACjB,QAAO;;AAGT,MAAa,uBAAuB,OAAO,UAAU;AACnD,KAAI,OAAO,UAAU,WAAW,IAC5B,OAAM;;AAIZ,MAAa,iBAAiB,YAAY;AACxC,QAAO,MAAM;;;;;;;AAQf,MAAa,+BAA+B;CAC1C,MAAM,EAAE,iBAAiB,kBAAkB;CAC3C,MAAM,UAAU;CAEhB,MAAM,kBAAkB,aACrB,KAAK,aAAa;AACjB,gBAAc;AACd;IAEF,CAAC;CAGH,MAAM,sBAAsB,aACzB,OAAO,eAAe,aAAa,aAAa;EAC/C,MAAM,uBAAuB;AAC7B,MACE,OAAO,YAAY,kBAAkB,YACrC,OAAO,SAAS,eAEhB;EAGF,MAAM,eAAe;AACrB,MAAI,eAAe,CAAC,aAAc;EAElC,IAAI,eACF,kBACC,OAAO,UAAU,QAAQ,OAAO,WAAW;AAC9C,MACE,OAAO,iBAAiB,YACxB,CAAC,gBACD,aAAa,WAAW,EAExB,gBAAe;AAGjB,kBAAgB,cAAc;GAC5B,SAAS;GACT,cAAc;IACZ,UAAU;IACV,YAAY;;GAEd,SAAS,QACP,oCAAC;IACC,OAAM;IACN,MAAK;IACL,eAAe;AACb,qBAAgB;;MAEnB;;AAML;IAEF,CAAC,iBAAiB;CAGpB,MAAM,wBAAwB,aAC3B,SAAS,aAAa,UAAU,gBAAgB,eAAe;EAC9D,MAAM,yBAAyB;EAC/B,MAAM,cAAc;AACpB,MAAI,eAAe,CAAC,YAAa;EAEjC,IAAI,iBAAiB,WAAW;AAChC,MACE,OAAO,mBAAmB,YAC1B,CAAC,kBACD,eAAe,WAAW,EAE1B,kBAAiB;EAGnB,MAAM,UAAU;GACd,SAAS;GACT,cAAc;IACZ,UAAU;IACV,YAAY;;GAEd,SAAS,QACP,0DACG,kBACC,oCAAC;IACC,OAAM;IACN,MAAK;IACL,eAAe;AACb,aAAQ,KAAK;AACb,qBAAgB;;MAGjB,aAAY,aAAa,eAG9B,oCAAC;IACC,OAAM;IACN,MAAK;IACL,eAAe;AACb,qBAAgB;;MAEnB;;AAOP,kBAAgB,gBAAgB;IAElC,CAAC,iBAAiB;AAGpB,QAAO;EAAE;EAAqB"}
|
|
1
|
+
{"version":3,"file":"apiHelpers-CmM6DWAT.js","names":["useLoginAction: LoginFunction","loginRedirect: () => void"],"sources":["../src/utilities/auth/signInAuthProvider.js","../src/enums/pageEnums.ts","../src/utilities/auth/whitelistedPaths.js","../src/utilities/auth/authActions.ts","../src/utilities/storage/UnitySessionStorage.js","../src/utilities/apiHelpers.jsx"],"sourcesContent":["import { PublicClientApplication, EventType } from '@azure/msal-browser';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nlet signInAuthProviderInstance = null;\nlet loginRequestInstance = null;\nlet tokenRequestInstance = null;\nlet apiAccessScopeValue = null;\n\nexport async function initSignInAuthProvider() {\n if (signInAuthProviderInstance) {\n return; // Already initialized\n }\n\n const PUBLIC_URL = new URL(\n import.meta.env.BASE_URL || '/',\n window.location.origin\n ).href.replace(/\\/$/, '');\n\n const REDIRECT_URL_BASE = ConfigService.config.USE_AAD_REDIRECT\n ? ConfigService.config.UNITY_URL\n : PUBLIC_URL;\n\n if (!ConfigService.config.MSAL_TENANT)\n throw new Error('MSAL_TENANT not configured');\n if (!ConfigService.config.MSAL_CLIENT_ID)\n throw new Error('MSAL_CLIENT_ID not configured');\n\n const tenant = ConfigService.config.MSAL_TENANT;\n const signInPolicy = ConfigService.config.SIGN_IN_POLICY;\n const applicationID = ConfigService.config.MSAL_CLIENT_ID;\n const reactRedirectUri = `${REDIRECT_URL_BASE}/${\n ConfigService.config.USE_AAD_REDIRECT ? 'aad_redirect' : 'aad_callback'\n }`;\n const tenantSubdomain = tenant.split('.')[0];\n const instance = `https://${tenantSubdomain}.b2clogin.com/`;\n const signInAuthority = `${instance}${tenant}/${signInPolicy}`;\n apiAccessScopeValue = `https://${tenant}/${ConfigService.config.MSAL_API_ACCESS_SCOPE}`;\n\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n const msie11 = ua.indexOf('Trident/');\n const msedge = ua.indexOf('Edge/');\n const firefox = ua.indexOf('Firefox');\n const isIE = msie > 0 || msie11 > 0;\n const isEdge = msedge > 0;\n const isFirefox = firefox > 0; // Only needed if you need to support the redirect flow in Firefox incognito\n\n // Msal Configurations\n const signInConfig = {\n auth: {\n authority: signInAuthority,\n knownAuthorities: [`${tenantSubdomain}.b2clogin.com`],\n clientId: applicationID,\n redirectUri: reactRedirectUri,\n postLogoutRedirectUri: PUBLIC_URL + '/',\n navigateToLoginRequestUrl: false,\n },\n cache: {\n cacheLocation: 'sessionStorage',\n storeAuthStateInCookie: isIE || isEdge || isFirefox,\n },\n system: {\n allowRedirectInIframe: true,\n },\n };\n\n signInAuthProviderInstance = new PublicClientApplication(signInConfig);\n\n await signInAuthProviderInstance.initialize();\n\n if (\n !signInAuthProviderInstance.getActiveAccount() &&\n signInAuthProviderInstance.getAllAccounts().length > 0\n ) {\n signInAuthProviderInstance.setActiveAccount(\n signInAuthProviderInstance.getAllAccounts()[0]\n );\n }\n\n signInAuthProviderInstance.addEventCallback((event) => {\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload.account) {\n const account = event.payload.account;\n signInAuthProviderInstance.setActiveAccount(account);\n }\n });\n\n tokenRequestInstance = { scopes: [apiAccessScopeValue] };\n\n loginRequestInstance = {\n scopes: [apiAccessScopeValue, 'openid', 'offline_access'],\n state: `${PUBLIC_URL}/aad_callback`,\n };\n}\n\nexport const getSignInAuthProvider = () => {\n if (!signInAuthProviderInstance) {\n throw new Error(\n 'signInAuthProvider is not initialized. Call initSignInAuthProvider first.'\n );\n }\n return signInAuthProviderInstance;\n};\n\nexport const getLoginRequest = () => {\n if (!loginRequestInstance) {\n throw new Error(\n 'loginRequest is not initialized. Call initSignInAuthProvider first.'\n );\n }\n return loginRequestInstance;\n};\n\nexport const getTokenRequest = () => {\n if (!tokenRequestInstance) {\n throw new Error(\n 'tokenRequest is not initialized. Call initSignInAuthProvider first.'\n );\n }\n return tokenRequestInstance;\n};\n\nexport const getApiAccessScope = () => {\n if (!apiAccessScopeValue) {\n throw new Error(\n 'apiAccessScope is not initialized. Call initSignInAuthProvider first.'\n );\n }\n return apiAccessScopeValue;\n};\n","export enum ClickOpenEnums {\n SideSheet = 'sideSheet',\n Dialog = 'dialog',\n SplitScreen = 'splitScreen'\n}\n\nexport enum UdpPageEnums {\n Udp_Maintenance_Engine_Page = '32f32abb-e633-494e-b4c7-8e187c731e95',\n Udp_Data_Browser_Page = 'efaa7518-c943-4cd3-ad44-d78941de3211',\n Udp_Notes_Page = 'ef18c935-4d7b-4923-a87e-975d71f019a2',\n Udp_Reminders_Page = '308d9644-60db-4a0f-88c6-3a1309600ebc',\n Udp_Reports_Page = '35eb68db-cadc-497a-b915-de4e4b709459',\n Udp_Inquiry_Explore_Page = '8118a06e-5e26-437f-8661-8171f9e2ab16',\n Udp_Public_Forms_Page = '0a2f83f1-6f74-4088-b954-7d5762d93cfa'\n}\n","import { UdpPageEnums } from \"../../enums/pageEnums\";\n\nexport const whitelistedPaths = [\n '/verify', \n `/page/${UdpPageEnums.Udp_Public_Forms_Page}`, // Public forms page\n '/aad_redirect',\n '/passwordresetsuccess'\n];\n","import {\n getSignInAuthProvider,\n getTokenRequest,\n getLoginRequest,\n} from './signInAuthProvider';\nimport { BrowserUtils } from '@azure/msal-browser';\nimport { storeCurrentPath } from '../redirect/LocalRedirectUrlStorage';\nimport { whitelistedPaths } from './whitelistedPaths';\nexport type LoginFunction = () => void;\nexport type LogoutFunction = () => void;\n/**\n * Hook providing auth \"actions\" such as login/logout\n */\n\nexport const useLoginAction: LoginFunction = () => loginRedirect;\nexport const loginRedirect: () => void = () => {\n const signInAuthProvider = getSignInAuthProvider();\n signInAuthProvider.loginRedirect(getLoginRequest());\n};\n\nexport function useLogoutAction(): LogoutFunction {\n return async () => {\n const signInAuthProvider = getSignInAuthProvider();\n await signInAuthProvider.logoutRedirect({\n account: signInAuthProvider.getActiveAccount(),\n });\n };\n}\n\nexport async function acquireAccessToken(): Promise<string | void> {\n const signInAuthProvider = getSignInAuthProvider();\n const account = signInAuthProvider.getActiveAccount() ?? undefined;\n\n if (account) {\n return signInAuthProvider\n .acquireTokenSilent({ ...getTokenRequest(), account })\n .then((response) => {\n return response.accessToken;\n })\n .catch(async (error) => {\n const currentPathIsWhitelisted = whitelistedPaths.includes(\n window.location.pathname\n );\n if (!currentPathIsWhitelisted) {\n signInAuthProvider.loginRedirect(getLoginRequest());\n }\n });\n }\n}\n","const TenantStorageKey = 'active-tenant';\n\nexport const storeInitialTenant = () => {\n const urlParams = new URLSearchParams(window.location.search);\n const urlTenantId = urlParams.get('tenantId');\n\n if (urlTenantId) {\n storeTenant(urlTenantId);\n }\n};\n\nexport const storeTenant = (tenantId) => {\n window.sessionStorage.setItem(TenantStorageKey, tenantId);\n};\n\nexport const getStoredTenant = () => {\n return window.sessionStorage.getItem(TenantStorageKey);\n};\n\nexport const clearStoredTenant = () => {\n window.sessionStorage.removeItem(TenantStorageKey);\n};\n","import React from \"react\";\nimport { acquireAccessToken } from './auth/authActions';\nimport { InteractionRequiredAuthError } from '@azure/msal-browser';\nimport { getStoredTenant } from './storage/UnitySessionStorage';\nimport { useSnackbar } from 'notistack';\nimport { Button } from '@material-ui/core';\nimport { useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nexport const getMergedConfig = (accessToken, config) => {\n const headers = config?.headers ?? {};\n\n headers.currentTenantId ||= getStoredTenant();\n if (accessToken) headers.Authorization ||= `Bearer ${accessToken}`;\n\n config.headers = headers;\n return config;\n};\n\nexport const handleResponseErrors = async (error) => {\n if (error?.response?.status === 401) {\n await acquireAccessToken();\n }\n};\n\nexport const getAccessToken = async () => {\n return await acquireAccessToken();\n};\n\n/**\n * Checks to make sure the error isn't cancelled, if so just return w/o doing anything\n *Otherwise call a pre-method, create a snackbar, then call a post-method\n *preCallBack returns a bool, true = show snackbar\n */\nexport const useHandleAxiosSnackbar = () => {\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const history = useHistory();\n\n const dismissSnackbar = useCallback(\n (key, callback) => {\n closeSnackbar(key);\n callback?.();\n },\n [closeSnackbar]\n );\n\n const handleErrorSnackbar = useCallback(\n (error, customMessage, preCallBack, callback) => {\n const fallbackErrorMessage = 'Error executing request';\n if (\n error?.toString()?.toLowerCase() === 'cancel' ||\n error?.code === 'ERR_CANCELED'\n )\n return;\n\n // Don't call the preCallback unless we actually failed.\n const showSnackBar = preCallBack?.();\n if (preCallBack && !showSnackBar) return;\n\n let errorMessage =\n customMessage ??\n (error?.response?.data || error?.message || fallbackErrorMessage);\n if (\n typeof errorMessage !== 'string' ||\n !errorMessage ||\n errorMessage.length === 0\n ) {\n errorMessage = fallbackErrorMessage;\n }\n\n enqueueSnackbar(errorMessage, {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <Button\n color='secondary'\n size='small'\n onClick={() => {\n dismissSnackbar(key);\n }}\n >\n Ok\n </Button>\n )\n });\n\n callback?.();\n },\n [dismissSnackbar, enqueueSnackbar]\n );\n\n const handleSuccessSnackbar = useCallback(\n (message, preCallBack, callback, navigationPath, buttonText) => {\n const fallbackSuccessMessage = 'Executed request successfully';\n const showMessage = preCallBack?.();\n if (preCallBack && !showMessage) return;\n\n let successMessage = message ?? fallbackSuccessMessage;\n if (\n typeof successMessage !== 'string' ||\n !successMessage ||\n successMessage.length === 0\n ) {\n successMessage = fallbackSuccessMessage;\n }\n\n const options = {\n variant: 'default',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <>\n {navigationPath && (\n <Button\n color='secondary'\n size='small'\n onClick={() => {\n history.push(navigationPath);\n dismissSnackbar(key);\n }}\n >\n {buttonText? buttonText : 'Go to page'}\n </Button>\n )}\n <Button\n color='secondary'\n size='small'\n onClick={() => {\n dismissSnackbar(key);\n }}\n >\n Ok\n </Button>\n </>\n )\n };\n\n enqueueSnackbar(successMessage, options);\n },\n [dismissSnackbar, enqueueSnackbar]\n );\n\n return { handleErrorSnackbar, handleSuccessSnackbar };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { toTitleCase } from "./useAxiosGet-Dh5pVURP.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utilities/entities/entityUtilities.js
|
|
4
|
+
const getCommonEntityName = (entityName) => {
|
|
5
|
+
if (!entityName) return entityName;
|
|
6
|
+
return toTitleCase(getSanitizedName(entityName));
|
|
7
|
+
};
|
|
8
|
+
const getSanitizedName = (entityName) => {
|
|
9
|
+
if (!entityName) return "";
|
|
10
|
+
const entityNameParts = entityName.split(".");
|
|
11
|
+
return entityNameParts[entityNameParts.length - 1];
|
|
12
|
+
};
|
|
13
|
+
const getFullyQualifiedName = (udpObjectInfo) => {
|
|
14
|
+
if (!udpObjectInfo) return "";
|
|
15
|
+
const modelNameSpace = udpObjectInfo.namespaceStructure?.model;
|
|
16
|
+
if (modelNameSpace) return `${modelNameSpace}.Models.${udpObjectInfo.sanitizedName}`;
|
|
17
|
+
else return "";
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { getCommonEntityName, getFullyQualifiedName, getSanitizedName };
|
|
22
|
+
//# sourceMappingURL=entityUtilities-Dy-jsB5c.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityUtilities-Dy-jsB5c.js","names":[],"sources":["../src/utilities/entities/entityUtilities.js"],"sourcesContent":["import { toTitleCase } from '../input/StringUtilities';\nexport const getCommonEntityName = (entityName) => {\n if (!entityName) return entityName;\n return toTitleCase(getSanitizedName(entityName));\n};\n\nexport const getSanitizedName = (entityName) => {\n if (!entityName) return '';\n const entityNameParts = entityName.split('.');\n return entityNameParts[entityNameParts.length - 1];\n};\n\nexport const getFullyQualifiedName = (udpObjectInfo) => {\n if (!udpObjectInfo) return '';\n const modelNameSpace = udpObjectInfo.namespaceStructure?.model;\n if (modelNameSpace) {\n return `${modelNameSpace}.Models.${udpObjectInfo.sanitizedName}`;\n } else {\n return '';\n }\n};\n"],"mappings":";;;AACA,MAAa,uBAAuB,eAAe;AACjD,KAAI,CAAC,WAAY,QAAO;AACxB,QAAO,YAAY,iBAAiB,WAAW,CAAC;;AAGlD,MAAa,oBAAoB,eAAe;AAC9C,KAAI,CAAC,WAAY,QAAO;CACxB,MAAM,kBAAkB,WAAW,MAAM,IAAI;AAC7C,QAAO,gBAAgB,gBAAgB,SAAS;;AAGlD,MAAa,yBAAyB,kBAAkB;AACtD,KAAI,CAAC,cAAe,QAAO;CAC3B,MAAM,iBAAiB,cAAc,oBAAoB;AACzD,KAAI,eACF,QAAO,GAAG,eAAe,UAAU,cAAc;KAEjD,QAAO"}
|