@databiosphere/findable-ui 19.0.0 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +11 -0
- package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.d.ts +2 -0
- package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.js +29 -0
- package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/types.d.ts +6 -0
- package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/types.js +1 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.d.ts +2 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.js +17 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.d.ts +5 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.js +12 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.d.ts +4 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.js +1 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.d.ts +15 -0
- package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.js +53 -0
- package/lib/components/ComponentCreator/ComponentCreator.js +2 -3
- package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.js +2 -2
- package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.js +1 -1
- package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.js +8 -3
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.d.ts +2 -1
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.js +17 -14
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.d.ts +3 -4
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.js +15 -24
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.js +2 -2
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.d.ts +2 -0
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.js +14 -0
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.js +3 -2
- package/lib/components/Layout/components/Header/header.js +1 -1
- package/lib/components/Login/components/Button/button.d.ts +2 -0
- package/lib/components/Login/components/Button/button.js +6 -0
- package/lib/components/Login/components/Button/button.styles.d.ts +5 -0
- package/lib/components/Login/components/Button/button.styles.js +11 -0
- package/lib/components/Login/components/Button/constants.d.ts +2 -0
- package/lib/components/Login/components/Button/constants.js +6 -0
- package/lib/components/Login/components/Button/types.d.ts +3 -0
- package/lib/components/Login/components/Button/types.js +1 -0
- package/lib/components/Login/login.d.ts +2 -9
- package/lib/components/Login/login.js +9 -10
- package/lib/components/Login/types.d.ts +10 -0
- package/lib/components/Login/types.js +1 -0
- package/lib/components/common/Banner/components/SessionTimeout/sessionTimeout.js +1 -1
- package/lib/components/common/CustomIcon/common/entities.d.ts +1 -4
- package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.d.ts +2 -2
- package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.js +1 -1
- package/lib/config/entities.d.ts +22 -23
- package/lib/hooks/authentication/auth/useAuthReducer.d.ts +2 -0
- package/lib/hooks/authentication/auth/useAuthReducer.js +8 -0
- package/lib/hooks/authentication/authentication/useAuthenticationReducer.d.ts +2 -0
- package/lib/hooks/authentication/authentication/useAuthenticationReducer.js +8 -0
- package/lib/hooks/authentication/config/useAuthenticationConfig.d.ts +6 -0
- package/lib/hooks/authentication/config/useAuthenticationConfig.js +9 -0
- package/lib/hooks/authentication/credentials/useCredentialsReducer.d.ts +2 -0
- package/lib/hooks/authentication/credentials/useCredentialsReducer.js +7 -0
- package/lib/hooks/authentication/profile/types.d.ts +5 -0
- package/lib/hooks/authentication/profile/types.js +1 -0
- package/lib/hooks/authentication/profile/useProfile.d.ts +6 -0
- package/lib/hooks/authentication/profile/useProfile.js +15 -0
- package/lib/hooks/authentication/providers/types.d.ts +6 -0
- package/lib/hooks/authentication/providers/types.js +1 -0
- package/lib/hooks/authentication/providers/useProviders.d.ts +6 -0
- package/lib/hooks/authentication/providers/useProviders.js +14 -0
- package/lib/hooks/authentication/session/useSessionActive.d.ts +12 -0
- package/lib/hooks/authentication/session/useSessionActive.js +36 -0
- package/lib/hooks/authentication/session/useSessionCallbackUrl.d.ts +4 -0
- package/lib/hooks/authentication/session/useSessionCallbackUrl.js +20 -0
- package/lib/hooks/authentication/session/useSessionIdleTimer.d.ts +6 -0
- package/lib/hooks/authentication/session/useSessionIdleTimer.js +8 -0
- package/lib/hooks/{useSessionTimeout.js → authentication/session/useSessionTimeout.js} +2 -2
- package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.d.ts +0 -1
- package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.js +6 -9
- package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.js +3 -4
- package/lib/hooks/authentication/token/types.d.ts +4 -0
- package/lib/hooks/authentication/token/types.js +1 -0
- package/lib/hooks/authentication/token/useToken.d.ts +2 -0
- package/lib/hooks/authentication/token/useToken.js +5 -0
- package/lib/hooks/authentication/token/useTokenReducer.d.ts +7 -0
- package/lib/hooks/authentication/token/useTokenReducer.js +12 -0
- package/lib/hooks/useEntityList.js +2 -2
- package/lib/hooks/useFetchEntity.js +4 -3
- package/lib/hooks/useFileManifest/useFetchFilesFacets.js +2 -3
- package/lib/hooks/useFileManifest/useFetchSummary.js +2 -3
- package/lib/hooks/useRequestFileLocation.js +2 -3
- package/lib/hooks/useRouteHistory.d.ts +14 -0
- package/lib/hooks/useRouteHistory.js +40 -0
- package/lib/hooks/useRouteRoot.d.ts +1 -0
- package/lib/hooks/useRouteRoot.js +8 -0
- package/lib/hooks/useSummary.js +3 -3
- package/lib/providers/authentication/auth/actions.d.ts +8 -0
- package/lib/providers/authentication/auth/actions.js +12 -0
- package/lib/providers/authentication/auth/constants.d.ts +2 -0
- package/lib/providers/authentication/auth/constants.js +5 -0
- package/lib/providers/authentication/auth/context.d.ts +2 -0
- package/lib/providers/authentication/auth/context.js +7 -0
- package/lib/providers/authentication/auth/dispatch.d.ts +23 -0
- package/lib/providers/authentication/auth/dispatch.js +43 -0
- package/lib/providers/authentication/auth/hook.d.ts +6 -0
- package/lib/providers/authentication/auth/hook.js +9 -0
- package/lib/providers/authentication/auth/reducer.d.ts +8 -0
- package/lib/providers/authentication/auth/reducer.js +24 -0
- package/lib/providers/authentication/auth/types.d.ts +48 -0
- package/lib/providers/authentication/auth/types.js +11 -0
- package/lib/providers/authentication/authentication/actions.d.ts +8 -0
- package/lib/providers/authentication/authentication/actions.js +12 -0
- package/lib/providers/authentication/authentication/constants.d.ts +2 -0
- package/lib/providers/authentication/authentication/constants.js +5 -0
- package/lib/providers/authentication/authentication/context.d.ts +2 -0
- package/lib/providers/authentication/authentication/context.js +6 -0
- package/lib/providers/authentication/authentication/dispatch.d.ts +22 -0
- package/lib/providers/authentication/authentication/dispatch.js +42 -0
- package/lib/providers/authentication/authentication/hook.d.ts +6 -0
- package/lib/providers/authentication/authentication/hook.js +9 -0
- package/lib/providers/authentication/authentication/reducer.d.ts +9 -0
- package/lib/providers/authentication/authentication/reducer.js +25 -0
- package/lib/providers/authentication/authentication/types.d.ts +47 -0
- package/lib/providers/authentication/authentication/types.js +11 -0
- package/lib/providers/authentication/authentication/utils.d.ts +12 -0
- package/lib/providers/authentication/authentication/utils.js +18 -0
- package/lib/providers/authentication/common/types.d.ts +1 -0
- package/lib/providers/authentication/common/types.js +1 -0
- package/lib/providers/authentication/common/utils.d.ts +6 -0
- package/lib/providers/authentication/common/utils.js +11 -0
- package/lib/providers/authentication/credentials/actions.d.ts +8 -0
- package/lib/providers/authentication/credentials/actions.js +12 -0
- package/lib/providers/authentication/credentials/constants.d.ts +2 -0
- package/lib/providers/authentication/credentials/constants.js +3 -0
- package/lib/providers/authentication/credentials/context.d.ts +2 -0
- package/lib/providers/authentication/credentials/context.js +6 -0
- package/lib/providers/authentication/credentials/dispatch.d.ts +12 -0
- package/lib/providers/authentication/credentials/dispatch.js +22 -0
- package/lib/providers/authentication/credentials/hook.d.ts +6 -0
- package/lib/providers/authentication/credentials/hook.js +9 -0
- package/lib/providers/authentication/credentials/reducer.d.ts +8 -0
- package/lib/providers/authentication/credentials/reducer.js +22 -0
- package/lib/providers/authentication/credentials/types.d.ts +24 -0
- package/lib/providers/authentication/credentials/types.js +5 -0
- package/lib/providers/authentication/terra/context.d.ts +2 -0
- package/lib/providers/authentication/terra/context.js +7 -0
- package/lib/providers/authentication/terra/hook.d.ts +6 -0
- package/lib/providers/authentication/terra/hook.js +9 -0
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.d.ts +2 -0
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.js +7 -0
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.d.ts +3 -7
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.js +1 -5
- package/lib/providers/authentication/terra/hooks/useFetchProfiles.d.ts +13 -0
- package/lib/providers/authentication/terra/hooks/useFetchProfiles.js +31 -0
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.js +11 -6
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.js +11 -6
- package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.js +11 -6
- package/lib/providers/authentication/terra/hooks/utils.d.ts +16 -0
- package/lib/providers/authentication/terra/hooks/utils.js +19 -0
- package/lib/providers/authentication/terra/provider.d.ts +2 -0
- package/lib/providers/authentication/terra/provider.js +42 -0
- package/lib/providers/authentication/terra/types.d.ts +20 -0
- package/lib/providers/authentication/terra/types.js +6 -0
- package/lib/providers/authentication/terra/utils.d.ts +19 -0
- package/lib/providers/authentication/terra/utils.js +36 -0
- package/lib/providers/authentication/token/constants.d.ts +2 -0
- package/lib/providers/authentication/token/constants.js +4 -0
- package/lib/providers/authentication/token/dispatch.d.ts +12 -0
- package/lib/providers/authentication/token/dispatch.js +22 -0
- package/lib/providers/authentication/token/reducer.d.ts +8 -0
- package/lib/providers/authentication/token/reducer.js +22 -0
- package/lib/providers/authentication/token/types.d.ts +28 -0
- package/lib/providers/authentication/token/types.js +5 -0
- package/lib/providers/exploreState.js +3 -5
- package/lib/providers/googleSignInAuthentication/common/types.d.ts +17 -0
- package/lib/providers/googleSignInAuthentication/common/types.js +1 -0
- package/lib/providers/googleSignInAuthentication/constants.d.ts +4 -0
- package/lib/providers/googleSignInAuthentication/constants.js +12 -0
- package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.d.ts +3 -0
- package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.js +36 -0
- package/lib/providers/googleSignInAuthentication/profile/types.d.ts +14 -0
- package/lib/providers/googleSignInAuthentication/profile/types.js +1 -0
- package/lib/providers/googleSignInAuthentication/profile/utils.d.ts +8 -0
- package/lib/providers/googleSignInAuthentication/profile/utils.js +25 -0
- package/lib/providers/googleSignInAuthentication/provider.d.ts +2 -0
- package/lib/providers/googleSignInAuthentication/provider.js +40 -0
- package/lib/providers/googleSignInAuthentication/service/constants.d.ts +4 -0
- package/lib/providers/googleSignInAuthentication/service/constants.js +9 -0
- package/lib/providers/googleSignInAuthentication/service/service.d.ts +6 -0
- package/lib/providers/googleSignInAuthentication/service/service.js +43 -0
- package/lib/providers/googleSignInAuthentication/types.d.ts +6 -0
- package/lib/providers/googleSignInAuthentication/types.js +1 -0
- package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.d.ts +2 -0
- package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.js +14 -0
- package/lib/providers/nextAuthAuthentication/provider.d.ts +2 -0
- package/lib/providers/nextAuthAuthentication/provider.js +30 -0
- package/lib/providers/nextAuthAuthentication/service/service.d.ts +6 -0
- package/lib/providers/nextAuthAuthentication/service/service.js +12 -0
- package/lib/providers/nextAuthAuthentication/types.d.ts +8 -0
- package/lib/providers/nextAuthAuthentication/types.js +1 -0
- package/lib/routes/constants.d.ts +3 -0
- package/lib/routes/constants.js +3 -0
- package/lib/styles/common/mui/button.d.ts +3 -0
- package/lib/styles/common/mui/button.js +17 -0
- package/lib/styles/common/mui/paper.d.ts +2 -0
- package/lib/styles/common/mui/paper.js +9 -0
- package/lib/styles/common/mui/popover.d.ts +3 -0
- package/lib/styles/common/mui/popover.js +10 -0
- package/lib/theme/common/entities.d.ts +6 -0
- package/lib/theme/common/entities.js +1 -0
- package/lib/views/LoginView/loginView.d.ts +5 -1
- package/lib/views/LoginView/loginView.js +6 -4
- package/package.json +3 -2
- package/src/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.tsx +38 -0
- package/src/components/Authentication/components/SessionController/components/GoogleSessionController/types.ts +7 -0
- package/src/components/Authentication/components/SessionController/components/NextSessionController/SessionController.tsx +23 -0
- package/src/components/Authentication/components/SessionController/components/NextSessionController/constants.ts +21 -0
- package/src/components/Authentication/components/SessionController/components/NextSessionController/types.ts +5 -0
- package/src/components/Authentication/components/SessionController/components/NextSessionController/utils.ts +74 -0
- package/src/components/ComponentCreator/ComponentCreator.tsx +4 -3
- package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.tsx +4 -4
- package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.tsx +1 -1
- package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.tsx +9 -6
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.tsx +27 -25
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.ts +2 -2
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.tsx +18 -42
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.ts +19 -0
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.ts +3 -2
- package/src/components/Layout/components/Header/header.tsx +1 -1
- package/src/components/Login/components/Button/button.styles.ts +12 -0
- package/src/components/Login/components/Button/button.tsx +8 -0
- package/src/components/Login/components/Button/constants.ts +8 -0
- package/src/components/Login/components/Button/types.ts +4 -0
- package/src/components/Login/login.tsx +28 -28
- package/src/components/Login/types.ts +11 -0
- package/src/components/common/Banner/components/SessionTimeout/sessionTimeout.tsx +1 -1
- package/src/components/common/CustomIcon/common/entities.ts +1 -4
- package/src/components/common/CustomIcon/components/GoogleIcon/googleIcon.tsx +3 -4
- package/src/config/entities.ts +20 -25
- package/src/hooks/authentication/auth/useAuthReducer.ts +16 -0
- package/src/hooks/authentication/authentication/useAuthenticationReducer.ts +16 -0
- package/src/hooks/authentication/config/useAuthenticationConfig.ts +13 -0
- package/src/hooks/authentication/credentials/useCredentialsReducer.ts +13 -0
- package/src/hooks/authentication/profile/types.ts +9 -0
- package/src/hooks/authentication/profile/useProfile.ts +21 -0
- package/src/hooks/authentication/providers/types.ts +7 -0
- package/src/hooks/authentication/providers/useProviders.ts +23 -0
- package/src/hooks/authentication/session/useSessionActive.ts +51 -0
- package/src/hooks/authentication/session/useSessionCallbackUrl.ts +25 -0
- package/src/hooks/authentication/session/useSessionIdleTimer.ts +10 -0
- package/src/hooks/{useSessionTimeout.ts → authentication/session/useSessionTimeout.ts} +2 -2
- package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.ts +8 -13
- package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.ts +3 -4
- package/src/hooks/authentication/token/types.ts +5 -0
- package/src/hooks/authentication/token/useToken.ts +9 -0
- package/src/hooks/authentication/token/useTokenReducer.ts +19 -0
- package/src/hooks/useEntityList.ts +2 -2
- package/src/hooks/useFetchEntity.tsx +3 -3
- package/src/hooks/useFileManifest/useFetchFilesFacets.ts +2 -3
- package/src/hooks/useFileManifest/useFetchSummary.ts +2 -3
- package/src/hooks/useRequestFileLocation.ts +2 -3
- package/src/hooks/useRouteHistory.ts +65 -0
- package/src/hooks/useRouteRoot.ts +11 -0
- package/src/hooks/useSummary.ts +3 -3
- package/src/providers/authentication/auth/actions.ts +17 -0
- package/src/providers/authentication/auth/constants.ts +6 -0
- package/src/providers/authentication/auth/context.ts +9 -0
- package/src/providers/authentication/auth/dispatch.ts +58 -0
- package/src/providers/authentication/auth/hook.ts +11 -0
- package/src/providers/authentication/auth/reducer.ts +25 -0
- package/src/providers/authentication/auth/types.ts +63 -0
- package/src/providers/authentication/authentication/actions.ts +17 -0
- package/src/providers/authentication/authentication/constants.ts +6 -0
- package/src/providers/authentication/authentication/context.ts +8 -0
- package/src/providers/authentication/authentication/dispatch.ts +55 -0
- package/src/providers/authentication/authentication/hook.ts +11 -0
- package/src/providers/authentication/authentication/reducer.ts +34 -0
- package/src/providers/authentication/authentication/types.ts +64 -0
- package/src/providers/authentication/authentication/utils.ts +25 -0
- package/src/providers/authentication/common/types.ts +1 -0
- package/src/providers/authentication/common/utils.ts +11 -0
- package/src/providers/authentication/credentials/actions.ts +17 -0
- package/src/providers/authentication/credentials/constants.ts +5 -0
- package/src/providers/authentication/credentials/context.ts +8 -0
- package/src/providers/authentication/credentials/dispatch.ts +31 -0
- package/src/providers/authentication/credentials/hook.ts +11 -0
- package/src/providers/authentication/credentials/reducer.ts +30 -0
- package/src/providers/authentication/credentials/types.ts +33 -0
- package/src/providers/authentication/terra/context.ts +16 -0
- package/src/providers/authentication/terra/hook.ts +11 -0
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.ts +9 -0
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.ts +1 -7
- package/src/providers/authentication/terra/hooks/useFetchProfiles.ts +61 -0
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.ts +18 -7
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.ts +18 -7
- package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.ts +18 -7
- package/src/providers/authentication/terra/hooks/utils.ts +29 -0
- package/src/providers/authentication/terra/provider.tsx +60 -0
- package/src/providers/authentication/terra/types.ts +23 -0
- package/src/providers/authentication/terra/utils.ts +49 -0
- package/src/providers/authentication/token/constants.ts +6 -0
- package/src/providers/authentication/token/dispatch.ts +29 -0
- package/src/providers/authentication/token/reducer.ts +26 -0
- package/src/providers/authentication/token/types.ts +36 -0
- package/src/providers/exploreState.tsx +3 -4
- package/src/providers/googleSignInAuthentication/common/types.ts +28 -0
- package/src/providers/googleSignInAuthentication/constants.ts +17 -0
- package/src/providers/googleSignInAuthentication/hooks/useGoogleSignInService.ts +53 -0
- package/src/providers/googleSignInAuthentication/profile/types.ts +15 -0
- package/src/providers/googleSignInAuthentication/profile/utils.ts +29 -0
- package/src/providers/googleSignInAuthentication/provider.tsx +53 -0
- package/src/providers/googleSignInAuthentication/service/constants.ts +16 -0
- package/src/providers/googleSignInAuthentication/service/service.ts +68 -0
- package/src/providers/googleSignInAuthentication/types.ts +7 -0
- package/src/providers/nextAuthAuthentication/hooks/useNextAuthService.ts +26 -0
- package/src/providers/nextAuthAuthentication/provider.tsx +42 -0
- package/src/providers/nextAuthAuthentication/service/service.ts +14 -0
- package/src/providers/nextAuthAuthentication/types.ts +9 -0
- package/src/routes/constants.ts +3 -0
- package/src/styles/common/mui/button.ts +20 -0
- package/src/styles/common/mui/paper.ts +11 -0
- package/src/styles/common/mui/popover.ts +19 -0
- package/src/theme/common/entities.ts +7 -0
- package/src/views/LoginView/loginView.tsx +15 -9
- package/tests/getProfileStatus.test.ts +290 -0
- package/tests/terraProfileProvider.test.tsx +121 -0
- package/tests/transformRoute.test.ts +21 -0
- package/tests/useRouteHistory.test.ts +97 -0
- package/tests/useSessionActive.test.ts +107 -0
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.d.ts +0 -5
- package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.js +0 -29
- package/lib/components/Login/login.stories.d.ts +0 -6
- package/lib/components/Login/login.stories.js +0 -31
- package/lib/components/common/Button/components/LoginButton/loginButton.d.ts +0 -3
- package/lib/components/common/Button/components/LoginButton/loginButton.js +0 -6
- package/lib/components/common/Button/components/LoginButton/loginButton.styles.d.ts +0 -7
- package/lib/components/common/Button/components/LoginButton/loginButton.styles.js +0 -11
- package/lib/hooks/useAuthentication/useAuthentication.d.ts +0 -6
- package/lib/hooks/useAuthentication/useAuthentication.js +0 -9
- package/lib/hooks/useAuthentication/useAuthenticationComplete.d.ts +0 -6
- package/lib/hooks/useAuthentication/useAuthenticationComplete.js +0 -55
- package/lib/hooks/useAuthentication/useAuthenticationStatus.d.ts +0 -20
- package/lib/hooks/useAuthentication/useAuthenticationStatus.js +0 -32
- package/lib/hooks/useAuthentication/useFetchGoogleProfile.d.ts +0 -21
- package/lib/hooks/useAuthentication/useFetchGoogleProfile.js +0 -41
- package/lib/hooks/useAuthentication/useTokenClient.d.ts +0 -11
- package/lib/hooks/useAuthentication/useTokenClient.js +0 -29
- package/lib/hooks/useAuthenticationConfig.d.ts +0 -6
- package/lib/hooks/useAuthenticationConfig.js +0 -14
- package/lib/providers/authentication.d.ts +0 -51
- package/lib/providers/authentication.js +0 -110
- package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.tsx +0 -35
- package/src/components/Login/login.stories.tsx +0 -43
- package/src/components/common/Button/components/LoginButton/loginButton.styles.ts +0 -13
- package/src/components/common/Button/components/LoginButton/loginButton.tsx +0 -16
- package/src/hooks/useAuthentication/useAuthentication.tsx +0 -10
- package/src/hooks/useAuthentication/useAuthenticationComplete.ts +0 -66
- package/src/hooks/useAuthentication/useAuthenticationStatus.ts +0 -49
- package/src/hooks/useAuthentication/useFetchGoogleProfile.ts +0 -68
- package/src/hooks/useAuthentication/useTokenClient.ts +0 -54
- package/src/hooks/useAuthenticationConfig.ts +0 -18
- package/src/providers/authentication.tsx +0 -181
- package/tests/authentication.test.ts +0 -142
- package/tests/useAuthenticationStatus.test.ts +0 -155
- /package/lib/hooks/{useSessionTimeout.d.ts → authentication/session/useSessionTimeout.d.ts} +0 -0
- /package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.d.ts +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.d.ts +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.js +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.d.ts +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.d.ts +0 -0
- /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.d.ts +0 -0
- /package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.ts +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { jest } from "@jest/globals";
|
|
2
|
+
import { render } from "@testing-library/react";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { DEFAULT_AUTHENTICATION_STATE } from "../src/providers/authentication/authentication/constants";
|
|
5
|
+
import { authenticationComplete } from "../src/providers/authentication/authentication/dispatch";
|
|
6
|
+
import { DEFAULT_CREDENTIALS_STATE } from "../src/providers/authentication/credentials/constants";
|
|
7
|
+
import { updateCredentials } from "../src/providers/authentication/credentials/dispatch";
|
|
8
|
+
|
|
9
|
+
const TOKEN = "test-token";
|
|
10
|
+
|
|
11
|
+
const PROFILE_PENDING = {
|
|
12
|
+
isComplete: false,
|
|
13
|
+
isProfileActive: false,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const PROFILE_SETTLED_ACTIVE = {
|
|
17
|
+
isComplete: true,
|
|
18
|
+
isProfileActive: true,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const PROFILE_SETTLED_INACTIVE = {
|
|
22
|
+
isComplete: true,
|
|
23
|
+
isProfileActive: false,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
jest.unstable_mockModule(
|
|
27
|
+
"../src/providers/authentication/authentication/hook",
|
|
28
|
+
() => ({
|
|
29
|
+
useAuthentication: jest.fn(),
|
|
30
|
+
})
|
|
31
|
+
);
|
|
32
|
+
jest.unstable_mockModule(
|
|
33
|
+
"../src/providers/authentication/credentials/hook",
|
|
34
|
+
() => ({
|
|
35
|
+
useCredentials: jest.fn(),
|
|
36
|
+
})
|
|
37
|
+
);
|
|
38
|
+
jest.unstable_mockModule(
|
|
39
|
+
"../src/providers/authentication/terra/hooks/useFetchProfiles",
|
|
40
|
+
() => ({
|
|
41
|
+
useFetchProfiles: jest.fn(),
|
|
42
|
+
})
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const { useAuthentication } = await import(
|
|
46
|
+
"../src/providers/authentication/authentication/hook"
|
|
47
|
+
);
|
|
48
|
+
const { useCredentials } = await import(
|
|
49
|
+
"../src/providers/authentication/credentials/hook"
|
|
50
|
+
);
|
|
51
|
+
const { useFetchProfiles } = await import(
|
|
52
|
+
"../src/providers/authentication/terra/hooks/useFetchProfiles"
|
|
53
|
+
);
|
|
54
|
+
const { TerraProfileProvider } = await import(
|
|
55
|
+
"../src/providers/authentication/terra/provider"
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const MOCK_AUTHENTICATION_DISPATCH = jest.fn();
|
|
59
|
+
const MOCK_CREDENTIALS_DISPATCH = jest.fn();
|
|
60
|
+
const MOCK_USE_AUTHENTICATION = useAuthentication as jest.MockedFunction<
|
|
61
|
+
typeof useAuthentication
|
|
62
|
+
>;
|
|
63
|
+
const MOCK_USE_CREDENTIALS = useCredentials as jest.MockedFunction<
|
|
64
|
+
typeof useCredentials
|
|
65
|
+
>;
|
|
66
|
+
const MOCK_USE_FETCH_PROFILES = useFetchProfiles as jest.MockedFunction<
|
|
67
|
+
() => Partial<ReturnType<typeof useFetchProfiles>>
|
|
68
|
+
>;
|
|
69
|
+
|
|
70
|
+
describe("TerraProfileProvider", () => {
|
|
71
|
+
beforeEach(() => {
|
|
72
|
+
jest.clearAllMocks();
|
|
73
|
+
MOCK_USE_AUTHENTICATION.mockReturnValue({
|
|
74
|
+
authenticationDispatch: MOCK_AUTHENTICATION_DISPATCH,
|
|
75
|
+
authenticationState: DEFAULT_AUTHENTICATION_STATE,
|
|
76
|
+
});
|
|
77
|
+
MOCK_USE_CREDENTIALS.mockReturnValue({
|
|
78
|
+
credentialsDispatch: MOCK_CREDENTIALS_DISPATCH,
|
|
79
|
+
credentialsState: DEFAULT_CREDENTIALS_STATE,
|
|
80
|
+
});
|
|
81
|
+
MOCK_USE_FETCH_PROFILES.mockReturnValue(PROFILE_PENDING);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it("does not dispatch actions when terra profile is incomplete", () => {
|
|
85
|
+
render(
|
|
86
|
+
<TerraProfileProvider token={TOKEN}>
|
|
87
|
+
<div>Child Component</div>
|
|
88
|
+
</TerraProfileProvider>
|
|
89
|
+
);
|
|
90
|
+
expect(MOCK_AUTHENTICATION_DISPATCH).not.toHaveBeenCalled();
|
|
91
|
+
expect(MOCK_CREDENTIALS_DISPATCH).not.toHaveBeenCalled();
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it("calls authenticationComplete dispatch when terra profile is SETTLED and INACTIVE", () => {
|
|
95
|
+
MOCK_USE_FETCH_PROFILES.mockReturnValue(PROFILE_SETTLED_INACTIVE);
|
|
96
|
+
render(
|
|
97
|
+
<TerraProfileProvider token={TOKEN}>
|
|
98
|
+
<div>Child Component</div>
|
|
99
|
+
</TerraProfileProvider>
|
|
100
|
+
);
|
|
101
|
+
expect(MOCK_AUTHENTICATION_DISPATCH).toHaveBeenCalledWith(
|
|
102
|
+
authenticationComplete()
|
|
103
|
+
);
|
|
104
|
+
expect(MOCK_CREDENTIALS_DISPATCH).not.toHaveBeenCalled();
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("dispatches authenticationComplete and updateCredentials when terra profile is SETTLED and ACTIVE", () => {
|
|
108
|
+
MOCK_USE_FETCH_PROFILES.mockReturnValue(PROFILE_SETTLED_ACTIVE);
|
|
109
|
+
render(
|
|
110
|
+
<TerraProfileProvider token={TOKEN}>
|
|
111
|
+
<div>Child Component</div>
|
|
112
|
+
</TerraProfileProvider>
|
|
113
|
+
);
|
|
114
|
+
expect(MOCK_AUTHENTICATION_DISPATCH).toHaveBeenCalledWith(
|
|
115
|
+
authenticationComplete()
|
|
116
|
+
);
|
|
117
|
+
expect(MOCK_CREDENTIALS_DISPATCH).toHaveBeenCalledWith(
|
|
118
|
+
updateCredentials(TOKEN)
|
|
119
|
+
);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { transformRoute } from "../src/hooks/authentication/session/useSessionActive";
|
|
2
|
+
|
|
3
|
+
describe("transformRoute", () => {
|
|
4
|
+
it("should return the first non-login route without the inactivity param", () => {
|
|
5
|
+
const routes = ["/login", "/route1?inactivityTimeout=true", "/route2"];
|
|
6
|
+
const result = transformRoute(routes);
|
|
7
|
+
expect(result).toBe("/route1");
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it("should remove the inactivity param from the route", () => {
|
|
11
|
+
const routes = ["/route1?inactivityTimeout=true"];
|
|
12
|
+
const result = transformRoute(routes);
|
|
13
|
+
expect(result).toBe("/route1");
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("should return undefined if all routes are login routes", () => {
|
|
17
|
+
const routes = ["/login"];
|
|
18
|
+
const result = transformRoute(routes);
|
|
19
|
+
expect(result).toBeUndefined();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jest } from "@jest/globals";
|
|
2
|
+
import { act, renderHook } from "@testing-library/react";
|
|
3
|
+
import Router, { NextRouter } from "next/router";
|
|
4
|
+
|
|
5
|
+
const ROOT_PATH = "/";
|
|
6
|
+
const ROUTES = ["/route1", "/route2", "/route3", "/route4"];
|
|
7
|
+
|
|
8
|
+
jest.unstable_mockModule("next/router", () => {
|
|
9
|
+
return {
|
|
10
|
+
...jest.requireActual<typeof import("next/router")>("next/router"),
|
|
11
|
+
useRouter: jest.fn(),
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
jest.unstable_mockModule("../src/hooks/useRouteRoot", () => ({
|
|
15
|
+
useRouteRoot: jest.fn(),
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
const { useRouter } = await import("next/router");
|
|
19
|
+
const { useRouteRoot } = await import("../src/hooks/useRouteRoot");
|
|
20
|
+
const { useRouteHistory } = await import("../src/hooks/useRouteHistory");
|
|
21
|
+
|
|
22
|
+
const MOCK_USE_ROUTER = useRouter as jest.MockedFunction<
|
|
23
|
+
() => Partial<NextRouter>
|
|
24
|
+
>;
|
|
25
|
+
const MOCK_USE_ROUTE_ROOT = useRouteRoot as jest.MockedFunction<
|
|
26
|
+
typeof useRouteRoot
|
|
27
|
+
>;
|
|
28
|
+
|
|
29
|
+
describe("useRouteHistory", () => {
|
|
30
|
+
beforeEach(() => {
|
|
31
|
+
MOCK_USE_ROUTE_ROOT.mockReset();
|
|
32
|
+
MOCK_USE_ROUTER.mockReset();
|
|
33
|
+
MOCK_USE_ROUTER.mockReturnValue({
|
|
34
|
+
asPath: ROUTES[0],
|
|
35
|
+
});
|
|
36
|
+
MOCK_USE_ROUTE_ROOT.mockReturnValue(ROOT_PATH);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test("returns the root path when no previous route exists", () => {
|
|
40
|
+
const { result } = renderHook(() => useRouteHistory());
|
|
41
|
+
expect(result.current.callbackUrl()).toBe(ROOT_PATH);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test("updates history on route change", () => {
|
|
45
|
+
const { result } = renderHook(() => useRouteHistory());
|
|
46
|
+
act(() => {
|
|
47
|
+
Router.events.emit("routeChangeComplete", ROUTES[1]);
|
|
48
|
+
Router.events.emit("routeChangeComplete", ROUTES[2]);
|
|
49
|
+
});
|
|
50
|
+
expect(result.current.callbackUrl()).toBe(ROUTES[1]);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test("does not add duplicate routes to history", () => {
|
|
54
|
+
const { result } = renderHook(() => useRouteHistory());
|
|
55
|
+
act(() => {
|
|
56
|
+
Router.events.emit("routeChangeComplete", ROUTES[2]);
|
|
57
|
+
Router.events.emit("routeChangeComplete", ROUTES[2]);
|
|
58
|
+
});
|
|
59
|
+
expect(result.current.callbackUrl()).toBe(ROUTES[0]);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test("limits history length to maxHistory", () => {
|
|
63
|
+
const { result } = renderHook(() => useRouteHistory(2));
|
|
64
|
+
act(() => {
|
|
65
|
+
Router.events.emit("routeChangeComplete", ROUTES[1]);
|
|
66
|
+
Router.events.emit("routeChangeComplete", ROUTES[2]);
|
|
67
|
+
Router.events.emit("routeChangeComplete", ROUTES[3]);
|
|
68
|
+
});
|
|
69
|
+
// Use `callbackUrl` with a transform function to capture the full history.
|
|
70
|
+
let history;
|
|
71
|
+
result.current.callbackUrl((routes) => {
|
|
72
|
+
history = routes;
|
|
73
|
+
return ROOT_PATH;
|
|
74
|
+
});
|
|
75
|
+
// After emitting the routes, the history stack is [ROUTES[3], ROUTES[2].
|
|
76
|
+
expect(history).toHaveLength(2);
|
|
77
|
+
expect(history).toEqual([ROUTES[3], ROUTES[2]]);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test("uses transform function if provided", () => {
|
|
81
|
+
const { result } = renderHook(() => useRouteHistory(4));
|
|
82
|
+
act(() => {
|
|
83
|
+
Router.events.emit("routeChangeComplete", ROUTES[1]);
|
|
84
|
+
Router.events.emit("routeChangeComplete", ROUTES[2]);
|
|
85
|
+
Router.events.emit("routeChangeComplete", ROUTES[3]);
|
|
86
|
+
});
|
|
87
|
+
// After emitting the routes, the history stack is [ROUTES[3], ROUTES[2], ROUTES[1], ROUTES[0]].
|
|
88
|
+
const transformFn = (routes: string[]): string => routes[2];
|
|
89
|
+
expect(result.current.callbackUrl(transformFn)).toBe(ROUTES[1]);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
test("returns root path when transform function is provided but history stack lacks sufficient entries", () => {
|
|
93
|
+
const { result } = renderHook(() => useRouteHistory());
|
|
94
|
+
const transformFn = (routes: string[]): string => routes[2];
|
|
95
|
+
expect(result.current.callbackUrl(transformFn)).toBe(ROOT_PATH);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jest } from "@jest/globals";
|
|
2
|
+
import { renderHook } from "@testing-library/react";
|
|
3
|
+
import { TransformRouteFn } from "../src/hooks/useRouteHistory";
|
|
4
|
+
import {
|
|
5
|
+
AUTH_STATUS,
|
|
6
|
+
AuthState,
|
|
7
|
+
} from "../src/providers/authentication/auth/types";
|
|
8
|
+
import {
|
|
9
|
+
AUTHENTICATION_STATUS,
|
|
10
|
+
AuthenticationState,
|
|
11
|
+
} from "../src/providers/authentication/authentication/types";
|
|
12
|
+
|
|
13
|
+
const AUTH_STATE_AUTHENTICATED_SETTLED: AuthState = {
|
|
14
|
+
isAuthenticated: true,
|
|
15
|
+
status: AUTH_STATUS.SETTLED,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const AUTH_STATE_PENDING: AuthState = {
|
|
19
|
+
isAuthenticated: false,
|
|
20
|
+
status: AUTH_STATUS.PENDING,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const AUTH_STATE_UNAUTHENTICATED_SETTLED: AuthState = {
|
|
24
|
+
isAuthenticated: false,
|
|
25
|
+
status: AUTH_STATUS.SETTLED,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const AUTHENTICATION_STATE_PENDING: AuthenticationState = {
|
|
29
|
+
profile: undefined,
|
|
30
|
+
status: AUTHENTICATION_STATUS.PENDING,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const AUTHENTICATION_STATE_SETTLED: AuthenticationState = {
|
|
34
|
+
profile: { email: "", name: "" },
|
|
35
|
+
status: AUTHENTICATION_STATUS.SETTLED,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const ROOT_PATH = "/";
|
|
39
|
+
const ROUTES = ["/login", "/route1", "/route2"];
|
|
40
|
+
|
|
41
|
+
jest.unstable_mockModule("next/router", () => {
|
|
42
|
+
return {
|
|
43
|
+
...jest.requireActual<typeof import("next/router")>("next/router"),
|
|
44
|
+
default: {
|
|
45
|
+
push: jest.fn(),
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
jest.unstable_mockModule("../src/hooks/useRouteHistory", () => ({
|
|
50
|
+
useRouteHistory: jest.fn(),
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
const Router = (await import("next/router")).default;
|
|
54
|
+
const { useRouteHistory } = await import("../src/hooks/useRouteHistory");
|
|
55
|
+
const { useSessionActive } = await import(
|
|
56
|
+
"../src/hooks/authentication/session/useSessionActive"
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const MOCK_USE_ROUTE_HISTORY = useRouteHistory as jest.MockedFunction<
|
|
60
|
+
typeof useRouteHistory
|
|
61
|
+
>;
|
|
62
|
+
|
|
63
|
+
describe("useSessionActive", () => {
|
|
64
|
+
beforeEach(() => {
|
|
65
|
+
MOCK_USE_ROUTE_HISTORY.mockReset();
|
|
66
|
+
MOCK_USE_ROUTE_HISTORY.mockReturnValue({
|
|
67
|
+
callbackUrl: jest.fn(
|
|
68
|
+
(transformFn?: TransformRouteFn | undefined) =>
|
|
69
|
+
transformFn?.(ROUTES) ?? ROOT_PATH
|
|
70
|
+
),
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test("does not redirect if auth status and authentication status is PENDING", () => {
|
|
75
|
+
renderHook(() =>
|
|
76
|
+
useSessionActive(AUTH_STATE_PENDING, AUTHENTICATION_STATE_PENDING)
|
|
77
|
+
);
|
|
78
|
+
expect(Router.push).not.toHaveBeenCalled();
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
test("does not redirect if auth status is PENDING and authentication status is SETTLED", () => {
|
|
82
|
+
renderHook(() =>
|
|
83
|
+
useSessionActive(AUTH_STATE_PENDING, AUTHENTICATION_STATE_SETTLED)
|
|
84
|
+
);
|
|
85
|
+
expect(Router.push).not.toHaveBeenCalled();
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
test("redirects if auth status and authentication status is SETTLED", () => {
|
|
89
|
+
renderHook(() =>
|
|
90
|
+
useSessionActive(
|
|
91
|
+
AUTH_STATE_UNAUTHENTICATED_SETTLED,
|
|
92
|
+
AUTHENTICATION_STATE_SETTLED
|
|
93
|
+
)
|
|
94
|
+
);
|
|
95
|
+
expect(Router.push).toHaveBeenCalled();
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
test("redirects to callback URL if auth status is SETTLED and authentication status is SETTLED", () => {
|
|
99
|
+
renderHook(() =>
|
|
100
|
+
useSessionActive(
|
|
101
|
+
AUTH_STATE_AUTHENTICATED_SETTLED,
|
|
102
|
+
AUTHENTICATION_STATE_SETTLED
|
|
103
|
+
)
|
|
104
|
+
);
|
|
105
|
+
expect(Router.push).toHaveBeenCalledWith(ROUTES[1]);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Meta } from "@storybook/react";
|
|
2
|
-
import { AuthenticationMenu } from "./authenticationMenu";
|
|
3
|
-
declare const _default: Meta<typeof AuthenticationMenu>;
|
|
4
|
-
export default _default;
|
|
5
|
-
export declare const AuthenticationMenuStory: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./authenticationMenu").AuthenticationMenuProps>;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { AuthenticationMenu } from "./authenticationMenu";
|
|
3
|
-
export default {
|
|
4
|
-
argTypes: {
|
|
5
|
-
onLogout: {
|
|
6
|
-
description: "Callback to be called when 'Logout' button is clicked",
|
|
7
|
-
},
|
|
8
|
-
userProfile: {
|
|
9
|
-
description: "User profile with name and avatar",
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
component: AuthenticationMenu,
|
|
13
|
-
title: "Components/Navigation/AuthenticationMenu",
|
|
14
|
-
};
|
|
15
|
-
const AuthenticationMenuTemplate = (args) => React.createElement(AuthenticationMenu, { ...args });
|
|
16
|
-
export const AuthenticationMenuStory = AuthenticationMenuTemplate.bind({});
|
|
17
|
-
AuthenticationMenuStory.args = {
|
|
18
|
-
userProfile: {
|
|
19
|
-
email: "john@smith.com",
|
|
20
|
-
email_verified: true,
|
|
21
|
-
family_name: "Smith",
|
|
22
|
-
given_name: "John",
|
|
23
|
-
hd: "",
|
|
24
|
-
locale: "",
|
|
25
|
-
name: "john_smith",
|
|
26
|
-
picture: "https://i.pravatar.cc/200",
|
|
27
|
-
sub: "",
|
|
28
|
-
},
|
|
29
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { HelpIconButton } from "../common/Button/components/HelpIconButton/helpIconButton";
|
|
3
|
-
import { Login } from "./login";
|
|
4
|
-
export default {
|
|
5
|
-
argTypes: {
|
|
6
|
-
isGoogle: { control: "boolean" },
|
|
7
|
-
termsOfService: { control: "object" },
|
|
8
|
-
text: { control: "object" },
|
|
9
|
-
title: { control: "text" },
|
|
10
|
-
warning: { control: "object" },
|
|
11
|
-
},
|
|
12
|
-
component: Login,
|
|
13
|
-
parameters: {
|
|
14
|
-
layout: "fullscreen",
|
|
15
|
-
},
|
|
16
|
-
title: "Components/Login",
|
|
17
|
-
};
|
|
18
|
-
export const LoginStory = {
|
|
19
|
-
args: {
|
|
20
|
-
isGoogle: true,
|
|
21
|
-
termsOfService: (React.createElement("p", null, "I have read and agree to privacy notice and terms of use")),
|
|
22
|
-
text: (React.createElement("p", null,
|
|
23
|
-
"Please sign in to your Data Explorer account",
|
|
24
|
-
" ",
|
|
25
|
-
React.createElement(HelpIconButton, { url: "https://www.google.com/" }))),
|
|
26
|
-
title: "Sign in to your account",
|
|
27
|
-
warning: (React.createElement("div", null,
|
|
28
|
-
React.createElement("p", null, "WARNING NOTICE"),
|
|
29
|
-
React.createElement("p", null, "This is a warning notice."))),
|
|
30
|
-
},
|
|
31
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { LoginButton as Button, LoginButtonText } from "./loginButton.styles";
|
|
3
|
-
export const LoginButton = ({ children, ...props }) => {
|
|
4
|
-
return (React.createElement(Button, { fullWidth: true, ...props },
|
|
5
|
-
React.createElement(LoginButtonText, null, children)));
|
|
6
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare const LoginButton: import("@emotion/styled").StyledComponent<Omit<import("../../button").ButtonProps, "ref"> & import("react").RefAttributes<HTMLButtonElement> & {
|
|
2
|
-
theme?: import("@emotion/react").Theme;
|
|
3
|
-
}, {}, {}>;
|
|
4
|
-
export declare const LoginButtonText: import("@emotion/styled").StyledComponent<{
|
|
5
|
-
theme?: import("@emotion/react").Theme;
|
|
6
|
-
as?: React.ElementType;
|
|
7
|
-
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import styled from "@emotion/styled";
|
|
2
|
-
import { ButtonSecondary } from "../ButtonSecondary/buttonSecondary";
|
|
3
|
-
export const LoginButton = styled(ButtonSecondary) `
|
|
4
|
-
.MuiButton-endIcon {
|
|
5
|
-
margin-right: -6px;
|
|
6
|
-
}
|
|
7
|
-
`;
|
|
8
|
-
export const LoginButtonText = styled.span `
|
|
9
|
-
flex: 1;
|
|
10
|
-
text-align: left;
|
|
11
|
-
`;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { useContext } from "react";
|
|
2
|
-
import { AuthContext } from "../../providers/authentication";
|
|
3
|
-
/**
|
|
4
|
-
* Returns authentication context.
|
|
5
|
-
* @returns authentication context.
|
|
6
|
-
*/
|
|
7
|
-
export const useAuthentication = () => {
|
|
8
|
-
return useContext(AuthContext);
|
|
9
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { AUTHENTICATION_STATUS } from "./common/entities";
|
|
2
|
-
/**
|
|
3
|
-
* Handles the completion of the authentication process.
|
|
4
|
-
* @param authenticationStatus - Authentication status.
|
|
5
|
-
*/
|
|
6
|
-
export declare const useAuthenticationComplete: (authenticationStatus: AUTHENTICATION_STATUS) => void;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import Router, { useRouter } from "next/router";
|
|
2
|
-
import { useEffect, useMemo, useRef } from "react";
|
|
3
|
-
import { escapeRegExp } from "../../common/utils";
|
|
4
|
-
import { ROUTE_LOGIN } from "../../providers/authentication";
|
|
5
|
-
import { INACTIVITY_PARAM } from "../useSessionTimeout";
|
|
6
|
-
import { AUTHENTICATION_STATUS } from "./common/entities";
|
|
7
|
-
/**
|
|
8
|
-
* Handles the completion of the authentication process.
|
|
9
|
-
* @param authenticationStatus - Authentication status.
|
|
10
|
-
*/
|
|
11
|
-
export const useAuthenticationComplete = (authenticationStatus) => {
|
|
12
|
-
const { asPath } = useRouter();
|
|
13
|
-
const routeHistoryRef = useRef(initRouteHistory(asPath));
|
|
14
|
-
// Maintain a history of routes that have been visited prior to authentication.
|
|
15
|
-
routeHistoryRef.current = useMemo(() => updateRouteHistory(routeHistoryRef.current, asPath), [asPath]);
|
|
16
|
-
// Redirect to the previous route after authentication is completed.
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
if (authenticationStatus === AUTHENTICATION_STATUS.COMPLETED) {
|
|
19
|
-
Router.push(routeHistoryRef.current);
|
|
20
|
-
}
|
|
21
|
-
}, [authenticationStatus]);
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Initializes route history with the current path.
|
|
25
|
-
* Returns base path if current path is the login route.
|
|
26
|
-
* @param path - current browser path.
|
|
27
|
-
* @returns path to be used as the initial route history.
|
|
28
|
-
*/
|
|
29
|
-
function initRouteHistory(path) {
|
|
30
|
-
return path === ROUTE_LOGIN ? "/" : removeInactivityTimeoutQueryParam(path);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Removes the inactivity timeout query parameter from the path.
|
|
34
|
-
* the inactivity timeout parameter is used to indicate that the session has timed out; remove the parameter to
|
|
35
|
-
* clear the session timeout banner after the user logs in again.
|
|
36
|
-
* @param path - Path.
|
|
37
|
-
* @returns path without the inactivity timeout query parameter.
|
|
38
|
-
*/
|
|
39
|
-
function removeInactivityTimeoutQueryParam(path) {
|
|
40
|
-
const regex = new RegExp(`\\?${escapeRegExp(INACTIVITY_PARAM)}(?:$|[=&].*)`);
|
|
41
|
-
return path.replace(regex, "");
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Updates route history with the current path, unless the current path is the LoginView page.
|
|
45
|
-
* @param prevPath - route history path.
|
|
46
|
-
* @param path - current browser path.
|
|
47
|
-
* @returns updated path to be used as the route history.
|
|
48
|
-
*/
|
|
49
|
-
function updateRouteHistory(prevPath, path) {
|
|
50
|
-
let currentPath = prevPath;
|
|
51
|
-
if (path !== ROUTE_LOGIN) {
|
|
52
|
-
currentPath = path;
|
|
53
|
-
}
|
|
54
|
-
return removeInactivityTimeoutQueryParam(currentPath);
|
|
55
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { AUTHENTICATION_STATUS, LoginResponse, LoginStatus } from "./common/entities";
|
|
2
|
-
import { GoogleResponse } from "./useFetchGoogleProfile";
|
|
3
|
-
import { TerraNIHResponse } from "./useFetchTerraNIHProfile";
|
|
4
|
-
import { TerraResponse } from "./useFetchTerraProfile";
|
|
5
|
-
import { TerraTermsOfServiceResponse } from "./useFetchTerraTermsOfService";
|
|
6
|
-
/**
|
|
7
|
-
* Handles the status of the authentication process.
|
|
8
|
-
* @param userProfileLoginStatus - User profile login status.
|
|
9
|
-
* @param terraProfileLoginStatus - Terra profile login status.
|
|
10
|
-
* @param terraTOSLoginStatus - Terra terms of service login status.
|
|
11
|
-
* @param terraNIHProfileLoginStatus - Terra NIH profile login status.
|
|
12
|
-
* @returns authentication status.
|
|
13
|
-
*/
|
|
14
|
-
export declare const useAuthenticationStatus: (userProfileLoginStatus: LoginStatus<GoogleResponse>, terraProfileLoginStatus: LoginStatus<TerraResponse>, terraTOSLoginStatus: LoginStatus<TerraTermsOfServiceResponse>, terraNIHProfileLoginStatus: LoginStatus<TerraNIHResponse>) => AUTHENTICATION_STATUS;
|
|
15
|
-
/**
|
|
16
|
-
* Returns the authentication status ("INCOMPLETE" or "COMPLETE").
|
|
17
|
-
* @param loginStatuses - Login statuses.
|
|
18
|
-
* @returns authentication status.
|
|
19
|
-
*/
|
|
20
|
-
export declare function getAuthenticationStatus(loginStatuses: LoginStatus<LoginResponse>[]): AUTHENTICATION_STATUS;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { AUTHENTICATION_STATUS, REQUEST_STATUS, } from "./common/entities";
|
|
2
|
-
/**
|
|
3
|
-
* Handles the status of the authentication process.
|
|
4
|
-
* @param userProfileLoginStatus - User profile login status.
|
|
5
|
-
* @param terraProfileLoginStatus - Terra profile login status.
|
|
6
|
-
* @param terraTOSLoginStatus - Terra terms of service login status.
|
|
7
|
-
* @param terraNIHProfileLoginStatus - Terra NIH profile login status.
|
|
8
|
-
* @returns authentication status.
|
|
9
|
-
*/
|
|
10
|
-
export const useAuthenticationStatus = (userProfileLoginStatus, terraProfileLoginStatus, terraTOSLoginStatus, terraNIHProfileLoginStatus) => {
|
|
11
|
-
return getAuthenticationStatus([
|
|
12
|
-
terraNIHProfileLoginStatus,
|
|
13
|
-
terraProfileLoginStatus,
|
|
14
|
-
terraTOSLoginStatus,
|
|
15
|
-
userProfileLoginStatus,
|
|
16
|
-
]);
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Returns the authentication status ("INCOMPLETE" or "COMPLETE").
|
|
20
|
-
* @param loginStatuses - Login statuses.
|
|
21
|
-
* @returns authentication status.
|
|
22
|
-
*/
|
|
23
|
-
export function getAuthenticationStatus(loginStatuses) {
|
|
24
|
-
for (const loginStatus of loginStatuses) {
|
|
25
|
-
if (!loginStatus.isSupported)
|
|
26
|
-
continue;
|
|
27
|
-
if (loginStatus.requestStatus === REQUEST_STATUS.NOT_STARTED) {
|
|
28
|
-
return AUTHENTICATION_STATUS.INCOMPLETE;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return AUTHENTICATION_STATUS.COMPLETED;
|
|
32
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { LoginStatus } from "./common/entities";
|
|
2
|
-
export type UserProfile = GoogleResponse;
|
|
3
|
-
export interface GoogleResponse {
|
|
4
|
-
email: string;
|
|
5
|
-
email_verified: boolean;
|
|
6
|
-
family_name: string;
|
|
7
|
-
given_name: string;
|
|
8
|
-
hd: string;
|
|
9
|
-
locale: string;
|
|
10
|
-
name: string;
|
|
11
|
-
picture: string;
|
|
12
|
-
sub: string;
|
|
13
|
-
}
|
|
14
|
-
type Status = LoginStatus<GoogleResponse>;
|
|
15
|
-
/**
|
|
16
|
-
* Returns user profile login status from configured endpoint.
|
|
17
|
-
* @param token - Token.
|
|
18
|
-
* @returns google profile login status.
|
|
19
|
-
*/
|
|
20
|
-
export declare const useFetchGoogleProfile: (token?: string) => Status;
|
|
21
|
-
export {};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from "react";
|
|
2
|
-
import { useAuthenticationConfig } from "../useAuthenticationConfig";
|
|
3
|
-
import { LOGIN_STATUS_FAILED, LOGIN_STATUS_NOT_STARTED, } from "./common/constants";
|
|
4
|
-
import { REQUEST_STATUS } from "./common/entities";
|
|
5
|
-
import { getAuthenticationRequestOptions } from "./common/utils";
|
|
6
|
-
/**
|
|
7
|
-
* Returns user profile login status from configured endpoint.
|
|
8
|
-
* @param token - Token.
|
|
9
|
-
* @returns google profile login status.
|
|
10
|
-
*/
|
|
11
|
-
export const useFetchGoogleProfile = (token) => {
|
|
12
|
-
const authenticationConfig = useAuthenticationConfig();
|
|
13
|
-
const { googleGISAuthConfig: { googleProfileEndpoint: endpoint } = {} } = authenticationConfig;
|
|
14
|
-
const [loginStatus, setLoginStatus] = useState(LOGIN_STATUS_NOT_STARTED);
|
|
15
|
-
// Fetch google user profile.
|
|
16
|
-
const fetchEndpointData = useCallback((endpoint, accessToken) => {
|
|
17
|
-
fetch(endpoint, getAuthenticationRequestOptions(accessToken))
|
|
18
|
-
.then((response) => response.json())
|
|
19
|
-
.then((profile) => {
|
|
20
|
-
setLoginStatus((prevStatus) => ({
|
|
21
|
-
...prevStatus,
|
|
22
|
-
isSuccess: true,
|
|
23
|
-
requestStatus: REQUEST_STATUS.COMPLETED,
|
|
24
|
-
response: profile,
|
|
25
|
-
}));
|
|
26
|
-
})
|
|
27
|
-
.catch((err) => {
|
|
28
|
-
console.log(err); // TODO handle error.
|
|
29
|
-
setLoginStatus(LOGIN_STATUS_FAILED);
|
|
30
|
-
});
|
|
31
|
-
}, []);
|
|
32
|
-
// Fetches user profile.
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
if (!token)
|
|
35
|
-
return;
|
|
36
|
-
if (!endpoint)
|
|
37
|
-
return;
|
|
38
|
-
fetchEndpointData(endpoint, token);
|
|
39
|
-
}, [endpoint, fetchEndpointData, token]);
|
|
40
|
-
return loginStatus;
|
|
41
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type TokenClient = any;
|
|
2
|
-
export interface UseTokenClient {
|
|
3
|
-
token: string | undefined;
|
|
4
|
-
tokenClient: TokenClient | undefined;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Initializes the token client, sets token from token client callback.
|
|
8
|
-
* @returns initialized token client.
|
|
9
|
-
*/
|
|
10
|
-
export declare const useTokenClient: () => UseTokenClient;
|
|
11
|
-
export {};
|