passbolt-styleguide 3.6.0 → 3.7.0-alpha1
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/README.md +9 -6
- package/build/css/help.min.css +3 -7
- package/build/css/public.min.css +3 -16
- package/build/css/themes/default/api_authentication.min.css +3 -3
- package/build/css/themes/default/api_cloud.min.css +3 -3
- package/build/css/themes/default/api_main.min.css +3 -12
- package/build/css/themes/default/api_reports.min.css +3 -12
- package/build/css/themes/default/api_webinstaller.min.css +3 -12
- package/build/css/themes/default/ext_app.min.css +3 -12
- package/build/css/themes/default/ext_authentication.min.css +3 -3
- package/build/css/themes/default/ext_external.min.css +2 -2
- package/build/css/themes/default/ext_in_form_cta.min.css +3 -3
- package/build/css/themes/default/ext_in_form_menu.min.css +3 -3
- package/build/css/themes/default/ext_quickaccess.min.css +3 -3
- package/build/css/themes/midgar/api_authentication.min.css +3 -3
- package/build/css/themes/midgar/api_main.min.css +3 -12
- package/build/css/themes/midgar/api_reports.min.css +3 -12
- package/build/css/themes/midgar/ext_app.min.css +3 -12
- package/build/css/themes/midgar/ext_authentication.min.css +3 -3
- package/build/css/themes/midgar/ext_in_form_cta.min.css +3 -3
- package/build/css/themes/midgar/ext_in_form_menu.min.css +3 -3
- package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
- package/build/js/dist/api-account-recovery.js +1 -1
- package/build/js/dist/api-app.js +1 -1
- package/build/js/dist/api-app.js.LICENSE.txt +25 -1
- package/build/js/dist/api-recover.js +1 -1
- package/build/js/dist/api-setup.js +1 -1
- package/build/js/dist/api-triage.js +1 -1
- package/build/js/dist/api-vendors.js +1 -1
- package/build/js/dist/api-vendors.js.LICENSE.txt +64 -10
- package/i18next-parser.config.js +22 -0
- package/jest.config.json +19 -1
- package/package.json +18 -13
- package/src/img/og/og_image.png +0 -0
- package/src/locales/de-DE/common.json +308 -173
- package/src/locales/en-UK/common.json +170 -184
- package/src/locales/es-ES/common.json +955 -0
- package/src/locales/fr-FR/common.json +308 -174
- package/src/locales/ja-JP/common.json +292 -172
- package/src/locales/lt-LT/common.json +985 -0
- package/src/locales/nl-NL/common.json +329 -194
- package/src/locales/pl-PL/common.json +337 -172
- package/src/locales/sv-SE/common.json +307 -172
- package/src/public-website-sign-in/PublicWebsiteSignInBootstrap.js +25 -0
- package/src/public-website-sign-in/lib/SignIn/SignInManager.js +85 -0
- package/src/public-website-sign-in/lib/SignIn/SignInManager.test.data.js +45 -0
- package/src/public-website-sign-in/lib/SignIn/SignInManager.test.js +59 -0
- package/src/public-website-sign-in/lib/SignIn/SignInManager.test.page.js +67 -0
- package/src/react-extension/ExtBootstrapAccountRecovery.js +17 -0
- package/src/react-extension/ExtBootstrapApp.js +17 -0
- package/src/react-extension/ExtBootstrapLogin.js +17 -0
- package/src/react-extension/ExtBootstrapRecover.js +17 -0
- package/src/react-extension/ExtBootstrapSetup.js +17 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.js +3 -7
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.page.js +1 -1
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.stories.js +1 -1
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.js +1 -1
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.js +1 -9
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.js +2 -10
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.test.data.js +3 -4
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.js +1 -1
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.stories.js +1 -1
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.js +1 -1
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.stories.js +1 -1
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.js +6 -3
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.data.js +10 -7
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.stories.js +1 -1
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +2 -12
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.js +2 -12
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.js +2 -11
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +1 -1
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +1 -1
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +72 -28
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.data.js +81 -58
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.stories.js +3 -1
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.js +1 -9
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.page.js +1 -1
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.stories.js +12 -6
- package/src/react-extension/components/Administration/DisplayLoadingDialog/DisplayLoadingDialog.js +2 -11
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.js +6 -6
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +1 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +25 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +1 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +1 -1
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.stories.js +1 -1
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +25 -1
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +1 -1
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.stories.js +1 -1
- package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.js +12 -2
- package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.js +1 -1
- package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.stories.js +1 -1
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +24 -24
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +1 -1
- package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +1 -1
- package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.test.stories.js +1 -1
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +9 -6
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.data.js +20 -5
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.page.js +1 -1
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.stories.js +1 -1
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.js +10 -14
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.stories.js +1 -1
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.js +1 -9
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.test.stories.js +1 -1
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.js +96 -47
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.test.js +61 -17
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/ImportOrganizationKey.js +1 -1
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.js +1 -9
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.page.js +14 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.stories.js +1 -1
- package/src/react-extension/components/Announcement/AnnouncementWrapper/AnnouncementWrapper.js +3 -2
- package/src/react-extension/components/Announcement/HandleSubscriptionAnnouncement/DisplayExpiredSubscriptionAnnouncement.js +3 -3
- package/src/react-extension/components/Announcement/HandleSubscriptionAnnouncement/DisplayGoingToExpireSubscriptionAnnouncement.js +3 -2
- package/src/react-extension/components/Announcement/HandleSubscriptionAnnouncement/DisplayInvalidSubscriptionAnnouncement.js +3 -3
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.js +2 -2
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.js +2 -2
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.js +2 -12
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +88 -41
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.js +2 -2
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.stories.js +11 -1
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.js +2 -2
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +86 -62
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.js +2 -2
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/DisplayAlreadyLoggedInError/DisplayAlreadyLoggedInError.js +2 -2
- package/src/react-extension/components/Authentication/DisplayAlreadyLoggedInError/DisplayAlreadyLoggedInError.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.js +2 -2
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.js +2 -2
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.js +2 -2
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.js +3 -3
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +2 -2
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.js +6 -6
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.js +1 -1
- package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.js +34 -7
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.data.js +2 -1
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.js +20 -1
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.page.js +4 -0
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +2 -2
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +4 -1
- package/src/react-extension/components/Authentication/IntroduceExtension/IntroduceExtension.js +2 -2
- package/src/react-extension/components/Authentication/IntroduceExtension/IntroduceExtension.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.js +1 -9
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +1 -1
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.js +2 -2
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.stories.js +6 -1
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.js +2 -2
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +1 -1
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.js +2 -2
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.test.stories.js +1 -1
- package/src/react-extension/components/AuthenticationAccountRecovery/OrchestrateAccountRecovery/OrchestrateAccountRecovery.js +2 -2
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.js +2 -2
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +1 -1
- package/src/react-extension/components/AuthenticationLogin/Login/Login.js +1 -9
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +1 -1
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxFooter.js +2 -2
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain.js +2 -2
- package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.js +1 -1
- package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +1 -1
- package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +3 -2
- package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +3 -3
- package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.stories.js +1 -1
- package/src/react-extension/components/Common/ActionFeedback/ShareActionFeedback.js +2 -2
- package/src/react-extension/components/Common/Autocomplete/Autocomplete.js +8 -2
- package/src/react-extension/components/Common/Avatar/UserAvatar.test.data.js +6 -4
- package/src/react-extension/components/Common/Avatar/UserAvatar.test.stories.js +3 -2
- package/src/react-extension/components/Common/Button/Button.test.stories.js +5 -5
- package/src/react-extension/components/Common/Checkbox/Checkbox.test.stories.js +1 -1
- package/src/react-extension/components/Common/ContextualMenu/ContextualMenu.test.stories.js +1 -1
- package/src/react-extension/components/Common/ContextualMenu/ContextualMenuWrapper.js +10 -8
- package/src/react-extension/components/Common/Dialog/DialogCloseButton/DialogCloseButton.js +2 -1
- package/src/react-extension/components/Common/Dialog/DialogWrapper/DialogFooter.test.stories.js +2 -2
- package/src/react-extension/components/Common/Dialog/DialogWrapper/DialogWrapper.js +2 -2
- package/src/react-extension/components/Common/Dialog/DialogWrapper/DialogWrapper.test.stories.js +1 -1
- package/src/react-extension/components/Common/DragInfo/DragInfo.test.stories.js +10 -8
- package/src/react-extension/components/Common/Error/NotifyError/NotifyError.js +3 -11
- package/src/react-extension/components/Common/Error/NotifyError/NotifyError.test.stories.js +6 -1
- package/src/react-extension/components/Common/Footer/Footer.js +15 -15
- package/src/react-extension/components/Common/Inputs/Autocomplete/Autocomplete.js +16 -7
- package/src/react-extension/components/Common/Inputs/Autocomplete/AutocompleteItemLoading.js +4 -0
- package/src/react-extension/components/Common/Inputs/FormSubmitButton/FormCancelButton.js +3 -12
- package/src/react-extension/components/Common/Inputs/FormSubmitButton/FormSubmitButton.js +2 -2
- package/src/react-extension/components/Common/Internationalisation/TranslationProvider.js +0 -1
- package/src/react-extension/components/Common/Link/Link.test.stories.js +1 -1
- package/src/react-extension/components/Common/Loading/LoadingBar/LoadingBar.test.stories.js +1 -1
- package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.test.stories.js +1 -1
- package/src/react-extension/components/Common/Menu/DisplayMainMenu.js +2 -11
- package/src/react-extension/components/Common/Navigation/Search/SearchBar.js +7 -7
- package/src/react-extension/components/Common/Navigation/Search/SearchBar.test.stories.js +1 -1
- package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.js +2 -11
- package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.stories.js +1 -1
- package/src/react-extension/components/Common/RadioButton/RadioButton.test.stories.js +1 -1
- package/src/react-extension/components/Common/Select/Select.js +44 -12
- package/src/react-extension/components/Common/Select/Select.test.stories.js +1 -1
- package/src/react-extension/components/Common/Text/Text.test.stories.js +1 -1
- package/src/react-extension/components/Common/TextField/TextField.test.stories.js +1 -1
- package/src/react-extension/components/Common/Toggle/Toggle.test.stories.js +1 -1
- package/src/react-extension/components/Common/Tooltip/Tooltip.test.stories.js +2 -2
- package/src/react-extension/components/Internationalisation/ChangeLocale/ChangeLocale.test.page.js +1 -1
- package/src/react-extension/components/Resource/CreateResource/CreateResource.js +22 -14
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +1 -1
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.js +3 -3
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.test.page.js +1 -1
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.test.stories.js +1 -1
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +4 -4
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.stories.js +1 -1
- package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspace.js +1 -9
- package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMainMenu.js +8 -17
- package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMainMenu.test.js +2 -2
- package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMainMenu.test.stories.js +1 -1
- package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.js +6 -6
- package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.test.stories.js +1 -1
- package/src/react-extension/components/Resource/EditResource/EditResource.js +21 -13
- package/src/react-extension/components/Resource/EditResource/EditResource.test.stories.js +1 -1
- package/src/react-extension/components/Resource/ExportResources/ExportResources.js +9 -10
- package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +1 -1
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +1 -1
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +1 -1
- package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.test.stories.js +1 -1
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.js +2 -11
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +1 -1
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItemContextualMenu.js +2 -11
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByRootFolderContextualMenu.js +2 -11
- package/src/react-extension/components/Resource/FilterResourcesByGroups/FilterResourcesByGroups.js +2 -11
- package/src/react-extension/components/Resource/FilterResourcesByGroups/FilterResourcesByGroups.test.stories.js +1 -1
- package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.js +4 -13
- package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.js +1 -1
- package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.stories.js +1 -1
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.js +1 -1
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.stories.js +1 -1
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsContextualMenu.js +2 -11
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +2 -11
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsListContextualMenu.js +3 -12
- package/src/react-extension/components/Resource/FilterResourcesByText/FilterResourcesByText.test.stories.js +1 -1
- package/src/react-extension/components/Resource/ImportResources/ImportResources.test.stories.js +1 -1
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +1 -1
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +1 -1
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +1 -1
- package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +5 -3
- package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.js +1 -1
- package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +1 -1
- package/src/react-extension/components/ResourceComment/DeleteResourceComment/DeleteComment.js +2 -1
- package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.js +1 -9
- package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +5 -3
- package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.js +2 -2
- package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +5 -3
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetails.js +3 -3
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +2 -2
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsComment.js +2 -11
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.js +2 -10
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.test.data.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsPermission.js +2 -10
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.js +3 -12
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +1 -1
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +1 -1
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +1 -1
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +1 -1
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.js +1 -1
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +1 -1
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +1 -1
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +1 -1
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetails.js +1 -1
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +1 -1
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.js +1 -9
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +1 -1
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +1 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.js +10 -7
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +1 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.js +12 -9
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.test.stories.js +1 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.js +10 -7
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.test.stories.js +1 -1
- package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.js +2 -2
- package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +1 -1
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +1 -1
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +1 -1
- package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.js +2 -2
- package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTagsItemViewer.js +2 -11
- package/src/react-extension/components/Share/ShareDialog.js +124 -22
- package/src/react-extension/components/Share/ShareDialog.test.data.js +25 -1
- package/src/react-extension/components/Share/ShareDialog.test.js +87 -36
- package/src/react-extension/components/Share/ShareDialog.test.page.js +1 -1
- package/src/react-extension/components/Share/ShareDialog.test.stories.js +1 -1
- package/src/react-extension/components/Share/SharePermissionDeleteButton.js +2 -1
- package/src/react-extension/components/Share/SharePermissionItem.js +56 -0
- package/src/react-extension/components/Share/ShareVariesDetails.js +2 -11
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.js +1 -1
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +1 -1
- package/src/react-extension/components/User/CreateUser/CreateUser.js +10 -10
- package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +1 -1
- package/src/react-extension/components/User/DeleteUser/DeleteUser.js +1 -1
- package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +1 -1
- package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.js +3 -3
- package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +1 -1
- package/src/react-extension/components/User/DisplayExpiredAccountRecovery/DisplayExpiredAccountRecovery.js +1 -9
- package/src/react-extension/components/User/DisplayExpiredAccountRecovery/DisplayExpiredAccountRecovery.test.stories.js +1 -1
- package/src/react-extension/components/User/DisplayUserBadgeMenu/DisplayUserBadgeMenu.js +16 -24
- package/src/react-extension/components/User/DisplayUserBadgeMenu/DisplayUserBadgeMenu.test.stories.js +1 -1
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +3 -3
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.stories.js +1 -1
- package/src/react-extension/components/User/DisplayUserWorkspaceMainActions/DisplayUserWorkspaceMainActions.js +8 -17
- package/src/react-extension/components/User/DisplayUserWorkspaceMainActions/DisplayUserWorkspaceMainActions.test.js +4 -4
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.js +2 -2
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.stories.js +1 -1
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.js +12 -1
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.stories.js +1 -1
- package/src/react-extension/components/User/EditUser/EditUser.js +10 -10
- package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +1 -1
- package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.stories.js +1 -1
- package/src/react-extension/components/User/FilterUsersByGroups/DisplayGroupContextualMenu.js +2 -11
- package/src/react-extension/components/User/FilterUsersByGroups/FilterUsersByGroup.test.stories.js +1 -1
- package/src/react-extension/components/User/FilterUsersByGroups/FilterUsersByGroupContextualMenu.js +2 -11
- package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.js +3 -12
- package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.test.stories.js +1 -1
- package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.js +1 -9
- package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.test.stories.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.js +4 -4
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.js +1 -9
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.data.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.stories.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.js +1 -9
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.stories.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.js +5 -4
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +22 -83
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.js +8 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.data.js +20 -2
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.js +25 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +28 -26
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +85 -57
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.js +21 -6
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +1 -1
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.js +1 -1
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +1 -1
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.js +2 -2
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.stories.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.js +4 -13
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembersGroupMember.js +1 -9
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +132 -151
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.js +8 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.page.js +37 -14
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +5 -2
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroupItem.js +209 -0
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/DisplayChangePassphraseIntroduction.js +2 -3
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/DownloadRecoveryKit.js +2 -2
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +85 -52
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +5 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.page.js +7 -0
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +4 -11
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.js +4 -4
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +9 -2
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +58 -35
- package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserSettingWorkspaceActions/DisplayUserSettingWorkspaceActions.js +2 -11
- package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.js +2 -2
- package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.js +1 -9
- package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.js +8 -8
- package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.js +5 -14
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +2 -2
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +1 -1
- package/src/react-extension/contexts/AccountRecoveryUserContext.js +22 -4
- package/src/react-extension/contexts/AccountRecoveryUserContext.test.data.js +2 -0
- package/src/react-extension/contexts/AccountRecoveryUserContext.test.js +2 -2
- package/src/react-extension/contexts/AdminAccountRecoveryContext.js +5 -2
- package/src/react-extension/contexts/AdminAccountRecoveryContext.test.data.js +4 -1
- package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.js +14 -1
- package/src/react-extension/contexts/ResourceWorkspaceContext.js +1 -1
- package/src/react-extension/contexts/UserWorkspaceContext.js +1 -1
- package/src/react-extension/test/fixture/Settings/siteSettings.js +20 -14
- package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +8 -1
- package/src/react-quickaccess/ExtQuickAccess.js +23 -9
- package/src/react-quickaccess/components/AnimatedSwitch/AnimatedSwitch.js +68 -113
- package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgress.js +2 -5
- package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgressPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.js +2 -2
- package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.test.stories.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.js +4 -4
- package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.js +2 -2
- package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.test.stories.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.js +2 -2
- package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.js +2 -3
- package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.js +3 -3
- package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.data.js +2 -2
- package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/Header/Header.js +0 -1
- package/src/react-quickaccess/components/Header/Header.test.stories.js +1 -1
- package/src/react-quickaccess/components/HomePage/HomePage.js +0 -8
- package/src/react-quickaccess/components/HomePage/HomePage.test.data.js +1 -1
- package/src/react-quickaccess/components/HomePage/HomePage.test.stories.js +1 -1
- package/src/react-quickaccess/components/HomePage/canSuggestUrl.js +4 -4
- package/src/react-quickaccess/components/HomePage/canSuggestUrl.test.js +4 -3
- package/src/react-quickaccess/components/LoginPage/LoginPage.js +1 -9
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/ManageQuickAccessMode/ManageQuickAccessMode.js +0 -7
- package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.js +1 -1
- package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.js +8 -9
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.js +0 -2
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +2 -2
- package/src/react-quickaccess/components/PrivateRoute/PrivateRoute.js +8 -2
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +1 -1
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +1 -1
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.stories.js +1 -1
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +8 -8
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.data.js +3 -3
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +4 -8
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.stories.js +1 -1
- package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.js +3 -3
- package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.stories.js +1 -1
- package/src/react-quickaccess/components/Search/Search.js +6 -7
- package/src/react-quickaccess/components/Search/Search.test.js +0 -1
- package/src/react-quickaccess/components/Search/Search.test.stories.js +1 -1
- package/src/react-web-integration/AuthLogin/AuthLogin.js +9 -9
- package/src/react-web-integration/Autofill/Autofill.js +61 -43
- package/src/react-web-integration/BrowserIntegrationBootstrap.js +1 -18
- package/src/react-web-integration/Events/Quickaccess/QuickAccessEvent.js +2 -2
- package/src/react-web-integration/ExtInFormCallToAction.js +2 -2
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.js +1 -2
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.data.js +3 -7
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.page.js +1 -1
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +15 -6
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.js +20 -22
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +3 -3
- package/src/react-web-integration/lib/Dom/DomUtils.js +5 -6
- package/src/react-web-integration/lib/InForm/InFormCallToActionField.js +2 -2
- package/src/react-web-integration/lib/InForm/InFormCredentialsFormField.js +1 -3
- package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +12 -2
- package/src/react-web-integration/lib/InForm/InFormManager.js +20 -18
- package/src/react-web-integration/lib/InForm/InformManager.test.data.js +62 -2
- package/src/react-web-integration/lib/InForm/InformManager.test.js +186 -8
- package/src/react-web-integration/lib/InForm/InformManager.test.page.js +40 -1
- package/src/react-web-integration/lib/InForm/InformMenuField.js +2 -2
- package/src/shared/components/Icons/Icon.test.stories.js +1 -1
- package/src/shared/components/Internationalisation/TranslationProvider.js +1 -2
- package/src/shared/components/Password/Password.js +3 -2
- package/src/shared/components/Password/Password.test.page.js +4 -1
- package/src/shared/components/Password/Password.test.stories.js +1 -1
- package/src/shared/components/PasswordComplexity/PasswordComplexity.js +3 -3
- package/src/shared/components/PasswordComplexity/PasswordComplexity.test.stories.js +5 -5
- package/src/shared/lib/Browser/detectBrowserName.js +4 -2
- package/src/shared/lib/Error/ExternalServiceError.js +23 -0
- package/src/shared/lib/Error/ExternalServiceUnavailableError.js +23 -0
- package/src/shared/lib/Secret/PwnedPasswords.js +10 -2
- package/src/shared/lib/Secret/SecretComplexity.js +1 -1
- package/src/shared/lib/SecretGenerator/PassphraseGenerator.js +12 -8
- package/src/shared/lib/SecretGenerator/PassphraseGeneratorWords.js +1 -1
- package/src/shared/lib/SecretGenerator/SecretGenerator.js +2 -2
- package/src/shared/lib/SecretGenerator/SecretGeneratorComplexity.js +10 -12
- package/src/shared/lib/SecretGenerator/SecretGeneratorComplexity.test.js +75 -76
- package/src/shared/lib/apiClient/csrfToken.js +1 -1
- package/src/shared/services/accountRecovery/ApiAppAccountRecoveryUserService.js +0 -1
- package/src/shared/services/accountRecovery/ExtAppAccountRecoveryUserService.js +0 -1
- package/src/stories/assets/intro/hero.png +0 -0
- package/src/stories/assets/intro/intro.css +47 -0
- package/test/jest.setup.js +2 -0
- package/src/fonts/opensans-semibold.woff +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
|
|
4
4
|
*
|
|
5
5
|
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
6
|
* For full copyright and license information, please see the LICENSE.txt
|
|
7
7
|
* Redistributions of files must retain the above copyright notice.
|
|
8
8
|
*
|
|
9
|
-
* @copyright Copyright (c)
|
|
9
|
+
* @copyright Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
|
|
10
10
|
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
11
|
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
12
|
* @since 3.0.0
|
|
@@ -14,12 +14,15 @@
|
|
|
14
14
|
import React, {Component} from "react";
|
|
15
15
|
import PropTypes from "prop-types";
|
|
16
16
|
import debounce from "debounce-promise";
|
|
17
|
-
import {Trans
|
|
17
|
+
import {Trans} from "react-i18next";
|
|
18
18
|
import SecurityComplexity from "../../../../shared/lib/Secret/SecretComplexity";
|
|
19
19
|
import SecretComplexity from "../../../../shared/lib/Secret/SecretComplexity";
|
|
20
20
|
import Password from "../../../../shared/components/Password/Password";
|
|
21
21
|
import {SecretGenerator} from "../../../../shared/lib/SecretGenerator/SecretGenerator";
|
|
22
22
|
import PasswordComplexity from "../../../../shared/components/PasswordComplexity/PasswordComplexity";
|
|
23
|
+
import ExternalServiceUnavailableError from "../../../../shared/lib/Error/ExternalServiceUnavailableError";
|
|
24
|
+
import Tooltip from "../../Common/Tooltip/Tooltip";
|
|
25
|
+
import ExternalServiceError from "../../../../shared/lib/Error/ExternalServiceError";
|
|
23
26
|
|
|
24
27
|
/**
|
|
25
28
|
* The component display variations.
|
|
@@ -41,6 +44,7 @@ class CreateGpgKey extends Component {
|
|
|
41
44
|
constructor(props) {
|
|
42
45
|
super(props);
|
|
43
46
|
this.state = this.defaultState;
|
|
47
|
+
this.isPwndProcessingPromise = null;
|
|
44
48
|
this.evaluatePassphraseIsInDictionaryDebounce = debounce(this.evaluatePassphraseIsInDictionary, 300);
|
|
45
49
|
this.bindEventHandlers();
|
|
46
50
|
this.createReferences();
|
|
@@ -54,7 +58,7 @@ class CreateGpgKey extends Component {
|
|
|
54
58
|
passphrase: '', // The current passphrase
|
|
55
59
|
passphraseEntropy: null, // The current passphrase entropy
|
|
56
60
|
actions: {
|
|
57
|
-
processing: false // True if one's processing passphrase
|
|
61
|
+
processing: false, // True if one's processing passphrase
|
|
58
62
|
},
|
|
59
63
|
hintClassNames: { // The class names for passphrase hints
|
|
60
64
|
enoughLength: '',
|
|
@@ -62,7 +66,8 @@ class CreateGpgKey extends Component {
|
|
|
62
66
|
alphanumeric: '',
|
|
63
67
|
specialCharacters: '',
|
|
64
68
|
notInDictionary: ''
|
|
65
|
-
}
|
|
69
|
+
},
|
|
70
|
+
isPwnedServiceAvailable: true // True if the isPwned service can be reached
|
|
66
71
|
};
|
|
67
72
|
}
|
|
68
73
|
|
|
@@ -80,7 +85,7 @@ class CreateGpgKey extends Component {
|
|
|
80
85
|
const validation = {
|
|
81
86
|
enoughLength: this.state.hintClassNames.enoughLength === "success",
|
|
82
87
|
enoughEntropy: this.state.passphraseEntropy && this.state.passphraseEntropy !== 0,
|
|
83
|
-
notInDictionary: this.state.hintClassNames.notInDictionary
|
|
88
|
+
notInDictionary: this.state.hintClassNames.notInDictionary !== "error"
|
|
84
89
|
};
|
|
85
90
|
return Object.values(validation).every(value => value);
|
|
86
91
|
}
|
|
@@ -104,7 +109,6 @@ class CreateGpgKey extends Component {
|
|
|
104
109
|
*/
|
|
105
110
|
bindEventHandlers() {
|
|
106
111
|
this.handlePassphraseChange = this.handlePassphraseChange.bind(this);
|
|
107
|
-
this.handleImportGpgKey = this.handleImportGpgKey.bind(this);
|
|
108
112
|
this.handleSubmit = this.handleSubmit.bind(this);
|
|
109
113
|
}
|
|
110
114
|
|
|
@@ -131,45 +135,20 @@ class CreateGpgKey extends Component {
|
|
|
131
135
|
|
|
132
136
|
/**
|
|
133
137
|
* Whenever the passphrase change
|
|
134
|
-
* @param event The input event
|
|
138
|
+
* @param {Event} event The input event
|
|
135
139
|
*/
|
|
136
140
|
async handlePassphraseChange(event) {
|
|
137
141
|
const passphrase = event.target.value;
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const hintClassNames = await this.evaluatePassphraseHintClassNames(passphrase);
|
|
141
|
-
this.setState({passphraseEntropy, hintClassNames});
|
|
142
|
-
await this.checkPassphraseIsInDictionary(passphrase, hintClassNames);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* check if the passphrase is in dictionary
|
|
147
|
-
* @returns {Promise<void>}
|
|
148
|
-
*/
|
|
149
|
-
async checkPassphraseIsInDictionary() {
|
|
150
|
-
const hintClassName = condition => condition ? 'success' : 'error';
|
|
151
|
-
|
|
152
|
-
// debounce only to check the passphrase is in dictionary
|
|
153
|
-
const isPwned = await this.evaluatePassphraseIsInDictionaryDebounce(this.state.passphrase).catch(() => null);
|
|
154
|
-
const notInDictionary = isPwned !== null ? hintClassName(!isPwned) : null;
|
|
155
|
-
|
|
156
|
-
// if the passphrase is in dictionary, force the complexity to n/a
|
|
157
|
-
const passphraseEntropy = Boolean(this.state.passphrase) && isPwned ? 0 : this.state.passphraseEntropy;
|
|
142
|
+
let hintClassNames = {};
|
|
143
|
+
let passphraseEntropy = null;
|
|
158
144
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
passphraseEntropy
|
|
165
|
-
});
|
|
166
|
-
}
|
|
145
|
+
if (passphrase.length) {
|
|
146
|
+
passphraseEntropy = SecretGenerator.entropy(passphrase);
|
|
147
|
+
hintClassNames = this.evaluatePassphraseHintClassNames(passphrase);
|
|
148
|
+
this.isPwndProcessingPromise = this.evaluatePassphraseIsInDictionaryDebounce();
|
|
149
|
+
}
|
|
167
150
|
|
|
168
|
-
|
|
169
|
-
* Whenever the user wants to import his gpg key manually
|
|
170
|
-
*/
|
|
171
|
-
handleImportGpgKey() {
|
|
172
|
-
this.importGpgKey();
|
|
151
|
+
this.setState({passphrase, passphraseEntropy, hintClassNames});
|
|
173
152
|
}
|
|
174
153
|
|
|
175
154
|
/**
|
|
@@ -183,30 +162,67 @@ class CreateGpgKey extends Component {
|
|
|
183
162
|
|
|
184
163
|
/**
|
|
185
164
|
* Evaluate the passphrase hints classnames
|
|
186
|
-
* @param passphrase The passphrase to evaluate
|
|
165
|
+
* @param {string} passphrase The passphrase to evaluate
|
|
166
|
+
* @return {object}
|
|
187
167
|
*/
|
|
188
168
|
evaluatePassphraseHintClassNames(passphrase) {
|
|
189
169
|
const masks = SecurityComplexity.matchMasks(passphrase);
|
|
190
|
-
const hintClassName = condition => condition ?
|
|
170
|
+
const hintClassName = condition => condition ? "success" : "warning";
|
|
191
171
|
return {
|
|
192
|
-
enoughLength:
|
|
172
|
+
enoughLength: passphrase.length >= 8 ? "success" : "error",
|
|
193
173
|
uppercase: hintClassName(masks.uppercase),
|
|
194
174
|
alphanumeric: hintClassName(masks.alpha && masks.digit),
|
|
195
175
|
specialCharacters: hintClassName(masks.special),
|
|
196
|
-
notInDictionary: this.state.hintClassNames.notInDictionary
|
|
176
|
+
notInDictionary: this.state.hintClassNames.notInDictionary
|
|
197
177
|
};
|
|
198
178
|
}
|
|
199
179
|
|
|
200
180
|
/**
|
|
201
181
|
* Evaluate if the passphrase is in dictionary
|
|
202
|
-
* @
|
|
203
|
-
* @return {Promise<boolean>} Return true if the password is part of a dictionary, false otherwise
|
|
182
|
+
* @return {Promise<void>}
|
|
204
183
|
*/
|
|
205
|
-
async evaluatePassphraseIsInDictionary(
|
|
206
|
-
|
|
207
|
-
|
|
184
|
+
async evaluatePassphraseIsInDictionary() {
|
|
185
|
+
let isPwnedServiceAvailable = this.state.isPwnedServiceAvailable;
|
|
186
|
+
if (!isPwnedServiceAvailable) {
|
|
187
|
+
return;
|
|
208
188
|
}
|
|
209
|
-
|
|
189
|
+
|
|
190
|
+
const passphrase = this.state.passphrase;
|
|
191
|
+
let notInDictionaryHint = "success";
|
|
192
|
+
|
|
193
|
+
if (passphrase.length < 8) {
|
|
194
|
+
notInDictionaryHint = "error";
|
|
195
|
+
} else {
|
|
196
|
+
try {
|
|
197
|
+
const isPwned = await SecretComplexity.ispwned(passphrase);
|
|
198
|
+
notInDictionaryHint = isPwned ? "error" : "success";
|
|
199
|
+
} catch (error) {
|
|
200
|
+
// If the service is unavailable don't block the user journey.
|
|
201
|
+
if (error instanceof ExternalServiceUnavailableError || error instanceof ExternalServiceError) {
|
|
202
|
+
isPwnedServiceAvailable = false;
|
|
203
|
+
notInDictionaryHint = "unavailable";
|
|
204
|
+
} else {
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
this.setState({
|
|
211
|
+
isPwnedServiceAvailable,
|
|
212
|
+
hintClassNames: {
|
|
213
|
+
...this.state.hintClassNames,
|
|
214
|
+
notInDictionary: notInDictionaryHint
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Await for isPwned service to finish its process and returns true if the current displayed passphrase is pwned.
|
|
221
|
+
* @return {Promise<boolean>}
|
|
222
|
+
*/
|
|
223
|
+
async isCurrentPassphrasePwned() {
|
|
224
|
+
await this.isPwndProcessingPromise;
|
|
225
|
+
return this.state.hintClassNames.notInDictionary === "error";
|
|
210
226
|
}
|
|
211
227
|
|
|
212
228
|
/**
|
|
@@ -214,6 +230,11 @@ class CreateGpgKey extends Component {
|
|
|
214
230
|
*/
|
|
215
231
|
async generateGpgKey() {
|
|
216
232
|
await this.toggleProcessing();
|
|
233
|
+
const isPwned = await this.isCurrentPassphrasePwned();
|
|
234
|
+
if (isPwned) {
|
|
235
|
+
await this.toggleProcessing();
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
217
238
|
this.props.onComplete(this.state.passphrase);
|
|
218
239
|
}
|
|
219
240
|
|
|
@@ -221,15 +242,11 @@ class CreateGpgKey extends Component {
|
|
|
221
242
|
* Toggle the processing mode
|
|
222
243
|
*/
|
|
223
244
|
async toggleProcessing() {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
* @returns {function(...[*]=)}
|
|
230
|
-
*/
|
|
231
|
-
get translate() {
|
|
232
|
-
return this.props.t;
|
|
245
|
+
const actions = {
|
|
246
|
+
...this.state.actions,
|
|
247
|
+
processing: !this.state.actions.processing
|
|
248
|
+
};
|
|
249
|
+
await this.setState({actions});
|
|
233
250
|
}
|
|
234
251
|
|
|
235
252
|
/**
|
|
@@ -279,7 +296,15 @@ class CreateGpgKey extends Component {
|
|
|
279
296
|
<Trans>It contains special characters (like / or * or %)</Trans>
|
|
280
297
|
</li>
|
|
281
298
|
<li className={this.state.hintClassNames.notInDictionary}>
|
|
299
|
+
{this.state.isPwnedServiceAvailable &&
|
|
282
300
|
<Trans>It is not part of an exposed data breach</Trans>
|
|
301
|
+
}
|
|
302
|
+
{!this.state.isPwnedServiceAvailable &&
|
|
303
|
+
<Tooltip message={<Trans>The pwnedpasswords service is unavailable, your passphrase might be part of an exposed data breach</Trans>}
|
|
304
|
+
direction="bottom">
|
|
305
|
+
<Trans>It is not part of an exposed data breach</Trans>
|
|
306
|
+
</Tooltip>
|
|
307
|
+
}
|
|
283
308
|
</li>
|
|
284
309
|
</ul>
|
|
285
310
|
</div>
|
|
@@ -317,7 +342,6 @@ CreateGpgKey.propTypes = {
|
|
|
317
342
|
CreateGpgKeyVariation.GENERATE_ACCOUNT_RECOVERY_GPG_KEY
|
|
318
343
|
]), // Defines how the form should be displayed and behaves
|
|
319
344
|
onSecondaryActionClick: PropTypes.func, // Callback to trigger when the user clicks on the secondary action link.
|
|
320
|
-
t: PropTypes.func.isRequired, // The translation function
|
|
321
345
|
};
|
|
322
346
|
|
|
323
|
-
export default
|
|
347
|
+
export default CreateGpgKey;
|
|
@@ -161,7 +161,7 @@ describe("CreateGpgKey", () => {
|
|
|
161
161
|
};
|
|
162
162
|
await waitFor(() => expect(page.canGoToNextStep).toBeTruthy());
|
|
163
163
|
await page.generateKey(inProgressFn);
|
|
164
|
-
expect(onComplete).toHaveBeenCalled();
|
|
164
|
+
await waitFor(() => expect(onComplete).toHaveBeenCalled());
|
|
165
165
|
expect(generateResolve).toBeDefined();
|
|
166
166
|
});
|
|
167
167
|
|
|
@@ -179,7 +179,7 @@ describe("CreateGpgKey", () => {
|
|
|
179
179
|
await page.fill(veryStrongPassphrase);
|
|
180
180
|
await waitFor(() => expect(page.canGoToNextStep).toBeTruthy());
|
|
181
181
|
await page.generateKey(inProgressFn);
|
|
182
|
-
expect(onComplete).toHaveBeenCalled();
|
|
182
|
+
await waitFor(() => expect(onComplete).toHaveBeenCalled());
|
|
183
183
|
expect(generateResolve).toBeDefined();
|
|
184
184
|
});
|
|
185
185
|
});
|
package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js
CHANGED
|
@@ -17,7 +17,7 @@ import CreateGpgKey, {CreateGpgKeyVariation} from "./CreateGpgKey";
|
|
|
17
17
|
import {defaultProps} from "./CreateGpgKey.test.data";
|
|
18
18
|
|
|
19
19
|
export default {
|
|
20
|
-
title: 'Passbolt/Authentication/CreateGpgKey',
|
|
20
|
+
title: 'Passbolt Component/Authentication/CreateGpgKey',
|
|
21
21
|
component: CreateGpgKey
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import React, {Component} from "react";
|
|
15
15
|
import PropTypes from "prop-types";
|
|
16
|
-
import {Trans
|
|
16
|
+
import {Trans} from "react-i18next";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* The component display variations.
|
|
@@ -57,4 +57,4 @@ DisplayAlreadyLoggedInError.propTypes = {
|
|
|
57
57
|
]).isRequired, // Defines how the disalog should be displayed
|
|
58
58
|
onLogoutButtonClick: PropTypes.func.isRequired, // The callback function that should trigger a log out of the current user
|
|
59
59
|
};
|
|
60
|
-
export default
|
|
60
|
+
export default DisplayAlreadyLoggedInError;
|
|
@@ -17,7 +17,7 @@ import {MemoryRouter, Route} from "react-router-dom";
|
|
|
17
17
|
import DisplayAlreadyLoggedInError, {DisplayAlreadyLoggedInErrorVariations} from "./DisplayAlreadyLoggedInError";
|
|
18
18
|
|
|
19
19
|
export default {
|
|
20
|
-
title: 'Passbolt/Authentication/DisplayAlreadyLoggedInError',
|
|
20
|
+
title: 'Passbolt Component/Authentication/DisplayAlreadyLoggedInError',
|
|
21
21
|
component: DisplayAlreadyLoggedInError
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import React, {Component} from "react";
|
|
15
15
|
import PropTypes from "prop-types";
|
|
16
16
|
import {withAppContext} from "../../../contexts/AppContext";
|
|
17
|
-
import {Trans
|
|
17
|
+
import {Trans} from "react-i18next";
|
|
18
18
|
|
|
19
19
|
const DOWNLOAD_FIREFOX_URL = "https://www.mozilla.org/firefox/download/thanks/";
|
|
20
20
|
const DOWNLOAD_CHROME_URL = "https://www.google.com/chrome/";
|
|
@@ -60,4 +60,4 @@ class DisplayBrowserNotSupported extends Component {
|
|
|
60
60
|
DisplayBrowserNotSupported.propTypes = {
|
|
61
61
|
context: PropTypes.any, // The application context
|
|
62
62
|
};
|
|
63
|
-
export default withAppContext(
|
|
63
|
+
export default withAppContext(DisplayBrowserNotSupported);
|
|
@@ -17,7 +17,7 @@ import {MemoryRouter, Route} from "react-router-dom";
|
|
|
17
17
|
import DisplayBrowserNotSupported from "./DisplayBrowserNotSupported";
|
|
18
18
|
|
|
19
19
|
export default {
|
|
20
|
-
title: 'Passbolt/Authentication/DisplayBrowserNotSupported',
|
|
20
|
+
title: 'Passbolt Component/Authentication/DisplayBrowserNotSupported',
|
|
21
21
|
component: DisplayBrowserNotSupported
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import React, {Component} from "react";
|
|
15
15
|
import {withAppContext} from "../../../contexts/AppContext";
|
|
16
16
|
import PropTypes from "prop-types";
|
|
17
|
-
import {Trans
|
|
17
|
+
import {Trans} from "react-i18next";
|
|
18
18
|
|
|
19
19
|
class DisplayExpiredTokenError extends Component {
|
|
20
20
|
/**
|
|
@@ -42,4 +42,4 @@ class DisplayExpiredTokenError extends Component {
|
|
|
42
42
|
DisplayExpiredTokenError.propTypes = {
|
|
43
43
|
context: PropTypes.any, // The application context
|
|
44
44
|
};
|
|
45
|
-
export default withAppContext(
|
|
45
|
+
export default withAppContext(DisplayExpiredTokenError);
|
|
@@ -18,7 +18,7 @@ import DisplayExpiredTokenError from "./DisplayExpiredTokenError";
|
|
|
18
18
|
import {defaultProps} from "./DisplayExpiredTokenError.test.data";
|
|
19
19
|
|
|
20
20
|
export default {
|
|
21
|
-
title: 'Passbolt/Authentication/DisplayExpiredTokenError',
|
|
21
|
+
title: 'Passbolt Component/Authentication/DisplayExpiredTokenError',
|
|
22
22
|
component: DisplayExpiredTokenError
|
|
23
23
|
};
|
|
24
24
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import React, {Component} from "react";
|
|
15
15
|
import {withAppContext} from "../../../contexts/AppContext";
|
|
16
16
|
import PropTypes from "prop-types";
|
|
17
|
-
import {Trans
|
|
17
|
+
import {Trans} from "react-i18next";
|
|
18
18
|
|
|
19
19
|
class DisplayRequireInvitationError extends Component {
|
|
20
20
|
/**
|
|
@@ -42,4 +42,4 @@ class DisplayRequireInvitationError extends Component {
|
|
|
42
42
|
DisplayRequireInvitationError.propTypes = {
|
|
43
43
|
context: PropTypes.any, // The application context
|
|
44
44
|
};
|
|
45
|
-
export default withAppContext(
|
|
45
|
+
export default withAppContext(DisplayRequireInvitationError);
|
|
@@ -17,7 +17,7 @@ import {MemoryRouter, Route} from "react-router-dom";
|
|
|
17
17
|
import DisplayRequireInvitationError from "./DisplayRequireInvitationError";
|
|
18
18
|
|
|
19
19
|
export default {
|
|
20
|
-
title: 'Passbolt/Authentication/DisplayRequireInvitationError',
|
|
20
|
+
title: 'Passbolt Component/Authentication/DisplayRequireInvitationError',
|
|
21
21
|
component: DisplayRequireInvitationError
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import React, {Component} from "react";
|
|
15
15
|
import PropTypes from "prop-types";
|
|
16
|
-
import {Trans
|
|
16
|
+
import {Trans} from "react-i18next";
|
|
17
17
|
import Icon from "../../../../shared/components/Icons/Icon";
|
|
18
18
|
|
|
19
19
|
class DisplayUnexpectedError extends Component {
|
|
@@ -119,7 +119,7 @@ class DisplayUnexpectedError extends Component {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
DisplayUnexpectedError.defaultProps = {
|
|
122
|
-
title: <Trans>Something went wrong
|
|
122
|
+
title: <Trans>Something went wrong!</Trans>,
|
|
123
123
|
message: <Trans>The operation failed with the following error:</Trans>,
|
|
124
124
|
};
|
|
125
125
|
|
|
@@ -136,4 +136,4 @@ DisplayUnexpectedError.propTypes = {
|
|
|
136
136
|
]),
|
|
137
137
|
error: PropTypes.any, // The error to display
|
|
138
138
|
};
|
|
139
|
-
export default
|
|
139
|
+
export default DisplayUnexpectedError;
|
package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @since 3.0.0
|
|
13
13
|
*/
|
|
14
14
|
import React, {Component} from "react";
|
|
15
|
-
import {Trans
|
|
15
|
+
import {Trans} from "react-i18next";
|
|
16
16
|
import PropTypes from "prop-types";
|
|
17
17
|
|
|
18
18
|
class DownloadRecoveryKit extends Component {
|
|
@@ -75,4 +75,4 @@ DownloadRecoveryKit.propTypes = {
|
|
|
75
75
|
onComplete: PropTypes.func.isRequired, // Callback to trigger when the step is completed.
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
-
export default
|
|
78
|
+
export default DownloadRecoveryKit;
|
|
@@ -18,7 +18,7 @@ import DownloadRecoveryKit from "./DownloadRecoveryKit";
|
|
|
18
18
|
import {defaultProps} from "./DownloadRecoveryKit.test.data";
|
|
19
19
|
|
|
20
20
|
export default {
|
|
21
|
-
title: 'Passbolt/Authentication/DownloadRecoveryKit',
|
|
21
|
+
title: 'Passbolt Component/Authentication/DownloadRecoveryKit',
|
|
22
22
|
component: DownloadRecoveryKit
|
|
23
23
|
};
|
|
24
24
|
|
|
@@ -225,20 +225,20 @@ class EnterNameForm extends Component {
|
|
|
225
225
|
<div className="enter-name">
|
|
226
226
|
<h1><Trans>New here? Enter your name to get started.</Trans></h1>
|
|
227
227
|
<form acceptCharset="utf-8" onSubmit={this.handleFormSubmit} noValidate>
|
|
228
|
-
<div className={`input text required ${this.state.firstnameError ? "error" : ""}`}>
|
|
229
|
-
<label htmlFor="firstname"><Trans>First
|
|
228
|
+
<div className={`input text required ${this.state.firstnameError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
229
|
+
<label htmlFor="firstname"><Trans>First name</Trans></label>
|
|
230
230
|
<input id="firstname-input" type="text" name="firstname" ref={this.firstnameRef} value={this.state.firstname}
|
|
231
231
|
onKeyUp={this.handleFirstnameInputOnKeyUp} onChange={this.handleInputChange}
|
|
232
|
-
disabled={this.hasAllInputDisabled()} placeholder={this.translate("
|
|
232
|
+
disabled={this.hasAllInputDisabled()} placeholder={this.translate("First name")} required="required"/>
|
|
233
233
|
{this.state.firstnameError &&
|
|
234
234
|
<div className="error-message">{this.state.firstnameError}</div>
|
|
235
235
|
}
|
|
236
236
|
</div>
|
|
237
|
-
<div className={`input text required ${this.state.lastnameError ? "error" : ""}`}>
|
|
238
|
-
<label htmlFor="lastname"><Trans>Last
|
|
237
|
+
<div className={`input text required ${this.state.lastnameError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
238
|
+
<label htmlFor="lastname"><Trans>Last name</Trans></label>
|
|
239
239
|
<input id="lastname-input" type="text" name="lastname" ref={this.lastnameRef} value={this.state.lastname}
|
|
240
240
|
onKeyUp={this.handleLastnameInputOnKeyUp} onChange={this.handleInputChange}
|
|
241
|
-
disabled={this.hasAllInputDisabled()} placeholder={this.translate("
|
|
241
|
+
disabled={this.hasAllInputDisabled()} placeholder={this.translate("Last name")} required="required"/>
|
|
242
242
|
{this.state.lastnameError &&
|
|
243
243
|
<div className="error-message">{this.state.lastnameError}</div>
|
|
244
244
|
}
|
package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js
CHANGED
|
@@ -17,7 +17,7 @@ import {MemoryRouter, Route} from "react-router-dom";
|
|
|
17
17
|
import EnterNameForm from "./EnterNameForm";
|
|
18
18
|
|
|
19
19
|
export default {
|
|
20
|
-
title: 'Passbolt/Authentication/EnterNameForm',
|
|
20
|
+
title: 'Passbolt Component/Authentication/EnterNameForm',
|
|
21
21
|
component: EnterNameForm
|
|
22
22
|
};
|
|
23
23
|
|
package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.js
CHANGED
|
@@ -280,7 +280,7 @@ class EnterUsernameForm extends Component {
|
|
|
280
280
|
<div className="enter-username">
|
|
281
281
|
<h1><Trans>Please enter your email to continue.</Trans></h1>
|
|
282
282
|
<form acceptCharset="utf-8" onSubmit={this.handleFormSubmit} noValidate>
|
|
283
|
-
<div className={`input text required ${this.state.usernameError ? "error" : ""}`}>
|
|
283
|
+
<div className={`input text required ${this.state.usernameError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
284
284
|
<label htmlFor="username"><Trans>Email</Trans></label>
|
|
285
285
|
<input id="username-input" type="text" ref={this.usernameRef} name="username" value={this.state.username}
|
|
286
286
|
onKeyUp={this.handleUsernameInputOnKeyUp} onChange={this.handleInputChange} placeholder={this.translate("you@organization.com")}
|
|
@@ -17,7 +17,7 @@ import {MemoryRouter, Route} from "react-router-dom";
|
|
|
17
17
|
import EnterUsernameForm from "./EnterUsernameForm";
|
|
18
18
|
|
|
19
19
|
export default {
|
|
20
|
-
title: 'Passbolt/Authentication/EnterUsernameForm',
|
|
20
|
+
title: 'Passbolt Component/Authentication/EnterUsernameForm',
|
|
21
21
|
component: EnterUsernameForm
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -55,7 +55,8 @@ class ImportGpgKey extends Component {
|
|
|
55
55
|
emptyPrivateKey: false, // True if the private key is empty
|
|
56
56
|
invalidPrivateKey: false, // True if the private key is invalid
|
|
57
57
|
},
|
|
58
|
-
errorMessage: '' // The error
|
|
58
|
+
errorMessage: '', // The error message if isRequired
|
|
59
|
+
keyHasAnExpirationDate: false, // True if the key being imported has an expiration date
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
|
|
@@ -95,6 +96,7 @@ class ImportGpgKey extends Component {
|
|
|
95
96
|
this.handleChangePrivateKey = this.handleChangePrivateKey.bind(this);
|
|
96
97
|
this.handleSelectPrivateKeyFile = this.handleSelectPrivateKeyFile.bind(this);
|
|
97
98
|
this.handleSelectFile = this.handleSelectFile.bind(this);
|
|
99
|
+
this.checkExpiryDate = this.checkExpiryDate.bind(this);
|
|
98
100
|
}
|
|
99
101
|
|
|
100
102
|
/**
|
|
@@ -114,11 +116,26 @@ class ImportGpgKey extends Component {
|
|
|
114
116
|
await this.validate();
|
|
115
117
|
|
|
116
118
|
if (this.isValid) {
|
|
117
|
-
|
|
119
|
+
this.toggleProcessing();
|
|
118
120
|
await this.save();
|
|
119
121
|
}
|
|
120
122
|
}
|
|
121
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Check the expiration date of the given private key.
|
|
126
|
+
* If the key has an expiry date, it shows a warning to the user.
|
|
127
|
+
* @param {string} privateKey
|
|
128
|
+
*/
|
|
129
|
+
async checkExpiryDate(privateKey) {
|
|
130
|
+
if (!this.props.hasKeyExpirationDate) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// we do not display the warning message if the key can't be read.
|
|
135
|
+
const keyHasAnExpirationDate = await this.props.hasKeyExpirationDate(privateKey).catch(() => false);
|
|
136
|
+
this.setState({keyHasAnExpirationDate});
|
|
137
|
+
}
|
|
138
|
+
|
|
122
139
|
/**
|
|
123
140
|
* Whenever the user changes the private key
|
|
124
141
|
* @param event An input event
|
|
@@ -126,6 +143,8 @@ class ImportGpgKey extends Component {
|
|
|
126
143
|
async handleChangePrivateKey(event) {
|
|
127
144
|
const privateKey = event.target.value;
|
|
128
145
|
this.setState({privateKey});
|
|
146
|
+
await this.checkExpiryDate(privateKey);
|
|
147
|
+
|
|
129
148
|
if (this.state.hasBeenValidated) {
|
|
130
149
|
await this.validate();
|
|
131
150
|
}
|
|
@@ -152,6 +171,7 @@ class ImportGpgKey extends Component {
|
|
|
152
171
|
async handleSelectPrivateKeyFile(event) {
|
|
153
172
|
const [privateKeyFile] = event.target.files;
|
|
154
173
|
const privateKey = await this.readPrivateKeyFile(privateKeyFile);
|
|
174
|
+
await this.checkExpiryDate(privateKey);
|
|
155
175
|
this.setState({privateKey, selectedFile: privateKeyFile});
|
|
156
176
|
if (this.state.hasBeenValidated) {
|
|
157
177
|
await this.validate();
|
|
@@ -171,9 +191,9 @@ class ImportGpgKey extends Component {
|
|
|
171
191
|
* @param {Error} error The error
|
|
172
192
|
* @throw {Error} If an unexpected errors hits the component. Errors not of type: InvalidMasterPasswordError.
|
|
173
193
|
*/
|
|
174
|
-
|
|
194
|
+
onSaveFailure(error) {
|
|
175
195
|
// It can happen when some key validation went wrong.
|
|
176
|
-
|
|
196
|
+
this.toggleProcessing();
|
|
177
197
|
if (error.name === "GpgKeyError") {
|
|
178
198
|
this.setState({errors: {invalidPrivateKey: true}, errorMessage: error.message});
|
|
179
199
|
} else {
|
|
@@ -224,8 +244,8 @@ class ImportGpgKey extends Component {
|
|
|
224
244
|
/**
|
|
225
245
|
* Toggle the processing mode
|
|
226
246
|
*/
|
|
227
|
-
|
|
228
|
-
|
|
247
|
+
toggleProcessing() {
|
|
248
|
+
this.setState({actions: {processing: !this.state.actions.processing}});
|
|
229
249
|
}
|
|
230
250
|
|
|
231
251
|
/**
|
|
@@ -252,7 +272,7 @@ class ImportGpgKey extends Component {
|
|
|
252
272
|
<form
|
|
253
273
|
acceptCharset="utf-8"
|
|
254
274
|
onSubmit={this.handleSubmit}>
|
|
255
|
-
<div className={`input textarea required openpgp-key ${this.hasErrors ? "error" : ""}`}>
|
|
275
|
+
<div className={`input textarea required openpgp-key ${this.hasErrors ? "error" : ""} ${!this.areActionsAllowed ? 'disabled' : ''}`}>
|
|
256
276
|
<label htmlFor="private-key"><Trans>Private key</Trans></label>
|
|
257
277
|
<textarea
|
|
258
278
|
name="private-key"
|
|
@@ -275,6 +295,12 @@ class ImportGpgKey extends Component {
|
|
|
275
295
|
<span><Trans>Choose a file</Trans></span>
|
|
276
296
|
</button>
|
|
277
297
|
</div>
|
|
298
|
+
{this.state.keyHasAnExpirationDate &&
|
|
299
|
+
<div className="warning-message">
|
|
300
|
+
<Trans>The private key should not have an expiry date.</Trans>
|
|
301
|
+
<Trans>Once expired you will not be able to connect to your account.</Trans>
|
|
302
|
+
</div>
|
|
303
|
+
}
|
|
278
304
|
{this.state.hasBeenValidated &&
|
|
279
305
|
<>
|
|
280
306
|
{this.state.errors.emptyPrivateKey &&
|
|
@@ -323,5 +349,6 @@ ImportGpgKey.propTypes = {
|
|
|
323
349
|
onSecondaryActionClick: PropTypes.func, // Callback to trigger when the user clicks on the secondary action link.
|
|
324
350
|
t: PropTypes.func, // The translation function
|
|
325
351
|
validatePrivateGpgKey: PropTypes.func, // The callback to check the validity of the gpg key
|
|
352
|
+
hasKeyExpirationDate: PropTypes.func, // The callback to check if the key has an expiration date
|
|
326
353
|
};
|
|
327
354
|
export default withAppContext(withTranslation('common')(ImportGpgKey));
|
package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.data.js
CHANGED
|
@@ -28,7 +28,8 @@ export function defaultProps(props) {
|
|
|
28
28
|
request: jest.fn(async() => ({}))
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
|
-
validatePrivateGpgKey: jest.fn()
|
|
31
|
+
validatePrivateGpgKey: jest.fn(),
|
|
32
|
+
shouldShowExpiryDateWarning: jest.fn(() => Promise.resolve(false))
|
|
32
33
|
};
|
|
33
34
|
return Object.assign(defaultProps, props || {});
|
|
34
35
|
}
|