passbolt-styleguide 3.6.2 → 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 +43 -7
- package/i18next-parser.config.js +22 -0
- package/package.json +8 -5
- 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 +155 -175
- 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.test.stories.js +1 -1
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.js +1 -9
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.js +1 -9
- 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 -15
- 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 +1 -9
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.stories.js +1 -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 +6 -3
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.data.js +20 -5
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.stories.js +1 -1
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.js +1 -11
- 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 +90 -46
- 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 +24 -14
- 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 +3 -13
- 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 +9 -9
- 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 +8 -8
- 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 +9 -9
- 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 +8 -17
- 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 +1 -1
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.stories.js +1 -1
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.stories.js +1 -1
- package/src/react-extension/components/User/EditUser/EditUser.js +9 -9
- 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 +3 -3
- 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 +1 -1
- 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 +25 -12
- 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 +2 -10
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.js +1 -1
- 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 +4 -13
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +1 -1
- package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.js +14 -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 +0 -1
- 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 +1 -1
- 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 +1 -1
- package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.test.stories.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.js +1 -1
- 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.stories.js +1 -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.stories.js +1 -1
- 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/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 +5 -5
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +1 -1
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +1 -1
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.stories.js +1 -1
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +4 -4
- 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 +5 -5
- package/src/react-quickaccess/components/Search/Search.test.stories.js +1 -1
- package/src/react-web-integration/BrowserIntegrationBootstrap.js +0 -17
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +1 -1
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.js +2 -2
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +1 -1
- package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +11 -1
- package/src/react-web-integration/lib/InForm/InformManager.test.data.js +60 -0
- package/src/react-web-integration/lib/InForm/InformManager.test.js +151 -6
- package/src/react-web-integration/lib/InForm/InformManager.test.page.js +39 -0
- package/src/shared/components/Icons/Icon.test.stories.js +1 -1
- package/src/shared/components/Password/Password.js +2 -1
- 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 +2 -2
- package/src/shared/components/PasswordComplexity/PasswordComplexity.test.stories.js +5 -5
- 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
|
@@ -102,12 +102,12 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
async componentDidMount() {
|
|
105
|
-
document.addEventListener('click', this.handleUserDirectoryClickEvent);
|
|
105
|
+
document.addEventListener('click', this.handleUserDirectoryClickEvent, {capture: true});
|
|
106
106
|
this.findAllUserDirectorySettings();
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
componentWillUnmount() {
|
|
110
|
-
document.removeEventListener('click', this.handleUserDirectoryClickEvent);
|
|
110
|
+
document.removeEventListener('click', this.handleUserDirectoryClickEvent, {capture: true});
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
/**
|
|
@@ -768,7 +768,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
768
768
|
</div>
|
|
769
769
|
</div>
|
|
770
770
|
</div>
|
|
771
|
-
<div className=
|
|
771
|
+
<div className={`input text required ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
772
772
|
<label><Trans>Server url</Trans></label>
|
|
773
773
|
<div className={`input text singleline connection_info ad openldap ${this.state.hasFieldFocus ? "no-focus" : ""}`}>
|
|
774
774
|
<input id="server-input" type="text" className="required host ad openldap form-element" name="host"
|
|
@@ -791,20 +791,20 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
791
791
|
}
|
|
792
792
|
</div>
|
|
793
793
|
<div className="singleline clearfix">
|
|
794
|
-
<div className=
|
|
794
|
+
<div className={`input text first-field ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
795
795
|
<label><Trans>Username</Trans></label>
|
|
796
796
|
<input id="username-input" type="text" className="fluid form-element" name="username"
|
|
797
|
-
value={this.state.username} onChange={this.handleInputChange} placeholder={this.translate("
|
|
797
|
+
value={this.state.username} onChange={this.handleInputChange} placeholder={this.translate("Username")}
|
|
798
798
|
disabled={this.hasAllInputDisabled()}/>
|
|
799
799
|
</div>
|
|
800
|
-
<div className=
|
|
800
|
+
<div className={`input text last-field ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
801
801
|
<label><Trans>Password</Trans></label>
|
|
802
802
|
<input id="password-input" className="fluid form-element" name="password"
|
|
803
|
-
value={this.state.password} onChange={this.handleInputChange} placeholder={this.translate("
|
|
803
|
+
value={this.state.password} onChange={this.handleInputChange} placeholder={this.translate("Password")} type="password"
|
|
804
804
|
disabled={this.hasAllInputDisabled()}/>
|
|
805
805
|
</div>
|
|
806
806
|
</div>
|
|
807
|
-
<div className=
|
|
807
|
+
<div className={`input text required ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
808
808
|
<label><Trans>Domain</Trans></label>
|
|
809
809
|
<input id="domain-name-input" type="text" name="domain" value={this.state.domain}
|
|
810
810
|
onChange={this.handleInputChange} className="required fluid form-element" onKeyUp={this.handleDomainInputKeyUp}
|
|
@@ -813,7 +813,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
813
813
|
<div id="domain-name-input-feedback" className="error-message">{this.state.domainError}</div>
|
|
814
814
|
}
|
|
815
815
|
</div>
|
|
816
|
-
<div className=
|
|
816
|
+
<div className={`input text ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
817
817
|
<label><Trans>Base DN</Trans></label>
|
|
818
818
|
<input id="base-dn-input" type="text" name="baseDn" value={this.state.baseDn}
|
|
819
819
|
onChange={this.handleInputChange} className="fluid form-element" placeholder="OU=OrgUsers,DC=mydomain,DC=local"
|
|
@@ -834,25 +834,25 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
834
834
|
</a>
|
|
835
835
|
</h4>
|
|
836
836
|
<div className="accordion-content">
|
|
837
|
-
<div className=
|
|
837
|
+
<div className={`input text ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
838
838
|
<label><Trans>Group path</Trans></label>
|
|
839
839
|
<input id="group-path-input" type="text" name="groupPath" value={this.state.groupPath}
|
|
840
|
-
onChange={this.handleInputChange} className="required fluid form-element" placeholder={this.translate("Group
|
|
840
|
+
onChange={this.handleInputChange} className="required fluid form-element" placeholder={this.translate("Group path")}
|
|
841
841
|
disabled={this.hasAllInputDisabled()}/>
|
|
842
842
|
<div className="help-message">
|
|
843
843
|
<Trans>Group path is used in addition to the base DN while searching groups.</Trans> <Trans>Leave empty if users and groups are in the same DN.</Trans>
|
|
844
844
|
</div>
|
|
845
845
|
</div>
|
|
846
|
-
<div className=
|
|
846
|
+
<div className={`input text ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
847
847
|
<label><Trans>User path</Trans></label>
|
|
848
848
|
<input id="user-path-input" type="text" name="userPath" value={this.state.userPath}
|
|
849
|
-
onChange={this.handleInputChange} className="required fluid form-element" placeholder={this.translate("User
|
|
849
|
+
onChange={this.handleInputChange} className="required fluid form-element" placeholder={this.translate("User path")}
|
|
850
850
|
disabled={this.hasAllInputDisabled()}/>
|
|
851
851
|
<div className="help-message"><Trans>User path is used in addition to base DN while searching users.</Trans></div>
|
|
852
852
|
</div>
|
|
853
853
|
{this.isOpenLdapChecked() &&
|
|
854
854
|
<div>
|
|
855
|
-
<div className=
|
|
855
|
+
<div className={`input text ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
856
856
|
<label><Trans>Group object class</Trans></label>
|
|
857
857
|
<input id="group-object-class-input" type="text" name="groupObjectClass"
|
|
858
858
|
value={this.state.groupObjectClass} onChange={this.handleInputChange} className="required fluid"
|
|
@@ -861,7 +861,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
861
861
|
<Trans>For Openldap only. Defines which group object to use.</Trans> (<Trans>Default</Trans>: posixGroup)
|
|
862
862
|
</div>
|
|
863
863
|
</div>
|
|
864
|
-
<div className=
|
|
864
|
+
<div className={`input text ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
865
865
|
<label><Trans>User object class</Trans></label>
|
|
866
866
|
<input id="user-object-class-input" type="text" name="userObjectClass"
|
|
867
867
|
value={this.state.userObjectClass} onChange={this.handleInputChange} className="required fluid form-element"
|
|
@@ -869,7 +869,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
869
869
|
<div className="help-message"><Trans>For Openldap only. Defines which user object to use.</Trans> (<Trans>Default</Trans>: inetOrgPerson)
|
|
870
870
|
</div>
|
|
871
871
|
</div>
|
|
872
|
-
<div className=
|
|
872
|
+
<div className={`input text openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
873
873
|
<label><Trans>Use email prefix / suffix?</Trans></label>
|
|
874
874
|
<div className="input toggle-switch openldap form-element">
|
|
875
875
|
<input type="checkbox" className="toggle-switch-checkbox checkbox" name="useEmailPrefix"
|
|
@@ -885,16 +885,16 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
885
885
|
</div>
|
|
886
886
|
{this.isUseEmailPrefixChecked() &&
|
|
887
887
|
<div className="singleline clearfix" id="use-email-prefix-suffix-options">
|
|
888
|
-
<div className=
|
|
888
|
+
<div className={`input text first-field openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
889
889
|
<label><Trans>Email prefix</Trans></label>
|
|
890
890
|
<input id="email-prefix-input" type="text" name="emailPrefix" checked={this.state.emailPrefix}
|
|
891
|
-
onChange={this.handleInputChange} className="required fluid form-element" placeholder={this.translate("
|
|
891
|
+
onChange={this.handleInputChange} className="required fluid form-element" placeholder={this.translate("Username")}
|
|
892
892
|
disabled={this.hasAllInputDisabled()}/>
|
|
893
893
|
<div className="help-message">
|
|
894
894
|
<Trans>The attribute you would like to use for the first part of the email (usually username).</Trans>
|
|
895
895
|
</div>
|
|
896
896
|
</div>
|
|
897
|
-
<div className=
|
|
897
|
+
<div className={`input text last-field openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
898
898
|
<label><Trans>Email suffix</Trans></label>
|
|
899
899
|
<input id="email-suffix-input" type="text" name="emailSuffix" value={this.state.emailSuffix}
|
|
900
900
|
onChange={this.handleInputChange} className="required form-element"
|
|
@@ -919,7 +919,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
919
919
|
</a>
|
|
920
920
|
</h4>
|
|
921
921
|
<div className="accordion-content">
|
|
922
|
-
<div className=
|
|
922
|
+
<div className={`select-wrapper input required ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
923
923
|
<label><Trans>Default admin</Trans></label>
|
|
924
924
|
<Select items={this.getUsersAllowedToBeDefaultAdmin()}
|
|
925
925
|
id="default-user-select"
|
|
@@ -932,7 +932,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
932
932
|
<Trans>The default admin user is the user that will perform the operations for the the directory.</Trans>
|
|
933
933
|
</div>
|
|
934
934
|
</div>
|
|
935
|
-
<div className=
|
|
935
|
+
<div className={`select-wrapper input required ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
936
936
|
<label><Trans>Default group admin</Trans></label>
|
|
937
937
|
<Select items={this.getUsersAllowedToBeDefaultGroupAdmin()}
|
|
938
938
|
id="default-group-admin-user-select"
|
|
@@ -945,7 +945,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
945
945
|
<Trans>The default group manager is the user that will be the group manager of newly created groups.</Trans>
|
|
946
946
|
</div>
|
|
947
947
|
</div>
|
|
948
|
-
<div className=
|
|
948
|
+
<div className={`input text ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
949
949
|
<label><Trans>Groups parent group</Trans></label>
|
|
950
950
|
<input id="groups-parent-group-input" type="text" name="groupsParentGroup"
|
|
951
951
|
value={this.state.groupsParentGroup} onChange={this.handleInputChange} className="fluid form-element" placeholder={this.translate("Group name")}
|
|
@@ -954,7 +954,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
954
954
|
<Trans>Synchronize only the groups which are members of this group.</Trans>
|
|
955
955
|
</div>
|
|
956
956
|
</div>
|
|
957
|
-
<div className=
|
|
957
|
+
<div className={`input text ad openldap ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
958
958
|
<label><Trans>Users parent group</Trans></label>
|
|
959
959
|
<input id="users-parent-group-input" type="text" name="usersParentGroup"
|
|
960
960
|
value={this.state.usersParentGroup} onChange={this.handleInputChange} className="fluid form-element" placeholder={this.translate("Group name")}
|
|
@@ -964,7 +964,7 @@ class DisplayUserDirectoryAdministration extends React.Component {
|
|
|
964
964
|
</div>
|
|
965
965
|
</div>
|
|
966
966
|
{this.isActiveDirectoryChecked() &&
|
|
967
|
-
<div className=
|
|
967
|
+
<div className={`input text clearfix ad ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
968
968
|
<label><Trans>Enabled users only</Trans></label>
|
|
969
969
|
<div className="input toggle-switch ad form-element">
|
|
970
970
|
<input type="checkbox" className="toggle-switch-checkbox checkbox" name="enabledUsersOnly"
|
|
@@ -5,7 +5,7 @@ import {mockUserDirectorySettings, mockUsers} from "./DisplayUserDirectoryAdmini
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
|
-
title: 'Passbolt/Administration/DisplayUserDirectoryAdministration',
|
|
8
|
+
title: 'Passbolt Component/Administration/DisplayUserDirectoryAdministration',
|
|
9
9
|
component: DisplayUserDirectoryAdministration
|
|
10
10
|
};
|
|
11
11
|
|
package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js
CHANGED
|
@@ -299,7 +299,7 @@ class EditSubscriptionKey extends Component {
|
|
|
299
299
|
className="edit-subscription-dialog">
|
|
300
300
|
<form onSubmit={this.handleFormSubmit} noValidate>
|
|
301
301
|
<div className="form-content">
|
|
302
|
-
<div className={`input textarea required ${this.state.keyError ? "error" : ""}`}>
|
|
302
|
+
<div className={`input textarea required ${this.state.keyError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
|
|
303
303
|
<label htmlFor="edit-tag-form-name"><Trans>Subscription key</Trans></label>
|
|
304
304
|
<textarea id="edit-subscription-form-key" name="key" value={this.state.key}
|
|
305
305
|
onKeyUp={this.handleKeyInputKeyUp} onChange={this.handleInputChange}
|
|
@@ -17,7 +17,7 @@ import EditSubscriptionKey from "./EditSubscriptionKey";
|
|
|
17
17
|
import {defaultProps} from "./EditSubscriptionKey.test.data";
|
|
18
18
|
|
|
19
19
|
export default {
|
|
20
|
-
title: 'Passbolt/Administration/EditSubscriptionKey',
|
|
20
|
+
title: 'Passbolt Component/Administration/EditSubscriptionKey',
|
|
21
21
|
component: EditSubscriptionKey
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -218,8 +218,11 @@ class ManageAccountRecoveryAdministrationSettings extends React.Component {
|
|
|
218
218
|
* @return {string}
|
|
219
219
|
*/
|
|
220
220
|
formatDateTimeAgo(date) {
|
|
221
|
-
if (date ===
|
|
222
|
-
return
|
|
221
|
+
if (date === null) {
|
|
222
|
+
return "n/a";
|
|
223
|
+
}
|
|
224
|
+
if (date === 'Infinity') {
|
|
225
|
+
return this.translate("Never");
|
|
223
226
|
}
|
|
224
227
|
const dateTime = DateTime.fromISO(date);
|
|
225
228
|
const duration = dateTime.diffNow().toMillis();
|
|
@@ -248,7 +251,7 @@ class ManageAccountRecoveryAdministrationSettings extends React.Component {
|
|
|
248
251
|
if (!user_ids) {
|
|
249
252
|
return null;
|
|
250
253
|
}
|
|
251
|
-
return user_ids.map((user, id) => <Fragment key={id}>{user.name}<{user.email}><br/></Fragment>);
|
|
254
|
+
return user_ids.map((user, id) => <Fragment key={id}>{user.name} <{user.email}><br/></Fragment>);
|
|
252
255
|
}
|
|
253
256
|
|
|
254
257
|
/**
|
|
@@ -46,12 +46,23 @@ export function hasChangedPolicyProps(props = {}) {
|
|
|
46
46
|
policyChanges: {
|
|
47
47
|
policy: "mandatory",
|
|
48
48
|
publicKey: "new-public-key"
|
|
49
|
-
}
|
|
49
|
+
},
|
|
50
|
+
getKeyInfo: () => defaultKeyInfo
|
|
50
51
|
}
|
|
51
52
|
};
|
|
52
53
|
return defaultProps(Object.assign(_props, props));
|
|
53
54
|
}
|
|
54
55
|
|
|
56
|
+
const defaultKeyInfo = {
|
|
57
|
+
user_ids: [{name: "Test Test", email: "test@passbolt.com"}],
|
|
58
|
+
armored_key: "new-public-key",
|
|
59
|
+
fingerprint: "848E95CC7493129AD862583129B81CA8936023DD",
|
|
60
|
+
algorithm: "RSA",
|
|
61
|
+
length: "4096",
|
|
62
|
+
created: "2022-05-01T13:11:08+00:00",
|
|
63
|
+
expires: "2024-05-01T13:11:08+00:00",
|
|
64
|
+
};
|
|
65
|
+
|
|
55
66
|
/**
|
|
56
67
|
* Disabled policy props.
|
|
57
68
|
* @param {Object} props The props to override
|
|
@@ -63,7 +74,8 @@ export function disabledPolicyPropsWithOrganisationKey(props = {}) {
|
|
|
63
74
|
policyChanges: {
|
|
64
75
|
policy: "disabled",
|
|
65
76
|
publicKey: "new-public-key"
|
|
66
|
-
}
|
|
77
|
+
},
|
|
78
|
+
getKeyInfo: () => defaultKeyInfo
|
|
67
79
|
}
|
|
68
80
|
};
|
|
69
81
|
return defaultProps(Object.assign(_props, props));
|
|
@@ -80,7 +92,8 @@ export function mandatoryPolicyPropsWithOrganisationKey(props = {}) {
|
|
|
80
92
|
policyChanges: {
|
|
81
93
|
policy: "mandatory",
|
|
82
94
|
publicKey: "new-public-key"
|
|
83
|
-
}
|
|
95
|
+
},
|
|
96
|
+
getKeyInfo: () => defaultKeyInfo
|
|
84
97
|
}
|
|
85
98
|
};
|
|
86
99
|
return defaultProps(Object.assign(_props, props));
|
|
@@ -97,7 +110,8 @@ export function optInPolicyPropsWithOrganisationKey(props = {}) {
|
|
|
97
110
|
policyChanges: {
|
|
98
111
|
policy: "opt-in",
|
|
99
112
|
publicKey: "new-public-key"
|
|
100
|
-
}
|
|
113
|
+
},
|
|
114
|
+
getKeyInfo: () => defaultKeyInfo
|
|
101
115
|
}
|
|
102
116
|
};
|
|
103
117
|
return defaultProps(Object.assign(_props, props));
|
|
@@ -114,7 +128,8 @@ export function optOutPolicyPropsWithOrganisationKey(props = {}) {
|
|
|
114
128
|
policyChanges: {
|
|
115
129
|
policy: "opt-out",
|
|
116
130
|
publicKey: "new-public-key"
|
|
117
|
-
}
|
|
131
|
+
},
|
|
132
|
+
getKeyInfo: () => defaultKeyInfo
|
|
118
133
|
}
|
|
119
134
|
};
|
|
120
135
|
return defaultProps(Object.assign(_props, props));
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./ManageAccountRecoveryAdministrationSettings.test.data";
|
|
23
23
|
|
|
24
24
|
export default {
|
|
25
|
-
title: 'Passbolt/Administration/ManageAccountRecoveryAdministrationSettings',
|
|
25
|
+
title: 'Passbolt Component/Administration/ManageAccountRecoveryAdministrationSettings',
|
|
26
26
|
component: ManageAccountRecoveryAdministrationSettings
|
|
27
27
|
};
|
|
28
28
|
|
|
@@ -368,16 +368,6 @@ class ProvideAccountRecoveryOrganizationKey extends React.Component {
|
|
|
368
368
|
* @returns {JSX}
|
|
369
369
|
*/
|
|
370
370
|
render() {
|
|
371
|
-
/*
|
|
372
|
-
* The parser can't find the translation for passwordStrength.label
|
|
373
|
-
* To fix that we can use it in comment
|
|
374
|
-
* this.translate("n/a")
|
|
375
|
-
* this.translate("very weak")
|
|
376
|
-
* this.translate("weak")
|
|
377
|
-
* this.translate("fair")
|
|
378
|
-
* this.translate("strong")
|
|
379
|
-
* this.translate("very strong")
|
|
380
|
-
*/
|
|
381
371
|
return (
|
|
382
372
|
<DialogWrapper
|
|
383
373
|
title={this.translate("Organization Recovery Key")}
|
|
@@ -391,7 +381,7 @@ class ProvideAccountRecoveryOrganizationKey extends React.Component {
|
|
|
391
381
|
<textarea id="organization-recover-form-key" name="key" value={this.state.key}
|
|
392
382
|
onKeyUp={this.handleKeyInputKeyUp} onChange={this.handleInputChange}
|
|
393
383
|
disabled={this.hasAllInputDisabled()} ref={this.keyInputRef} className="required"
|
|
394
|
-
placeholder='Paste the OpenPGP Private key here' required="required" autoComplete="off" autoFocus={true}/>
|
|
384
|
+
placeholder={this.translate('Paste the OpenPGP Private key here')} required="required" autoComplete="off" autoFocus={true}/>
|
|
395
385
|
</div>
|
|
396
386
|
<div className="input file">
|
|
397
387
|
<input
|
|
@@ -19,7 +19,7 @@ import userSettingsFixture from "../../../test/fixture/Settings/userSettings";
|
|
|
19
19
|
import UserSettings from "../../../../shared/lib/Settings/UserSettings";
|
|
20
20
|
|
|
21
21
|
export default {
|
|
22
|
-
title: 'Passbolt/Administration/ProvideAccountRecoveryOrganizationKey',
|
|
22
|
+
title: 'Passbolt Component/Administration/ProvideAccountRecoveryOrganizationKey',
|
|
23
23
|
component: ProvideAccountRecoveryOrganizationKey
|
|
24
24
|
};
|
|
25
25
|
|
|
@@ -55,14 +55,6 @@ class DownloadOrganizationKey extends React.Component {
|
|
|
55
55
|
this.props.onClose();
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
/**
|
|
59
|
-
* Get the translate function
|
|
60
|
-
* @returns {function(...[*]=)}
|
|
61
|
-
*/
|
|
62
|
-
get translate() {
|
|
63
|
-
return this.props.t;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
58
|
/**
|
|
67
59
|
* Render the component
|
|
68
60
|
* @returns {JSX}
|
|
@@ -70,7 +62,7 @@ class DownloadOrganizationKey extends React.Component {
|
|
|
70
62
|
render() {
|
|
71
63
|
return (
|
|
72
64
|
<DialogWrapper
|
|
73
|
-
title={this.
|
|
65
|
+
title={this.props.t("Confirm Organization Recovery Key download")}
|
|
74
66
|
onClose={this.handleCloseClick}
|
|
75
67
|
disabled={false}
|
|
76
68
|
className="organization-recover-key-download-dialog">
|
|
@@ -21,7 +21,7 @@ import UserSettings from "../../../../shared/lib/Settings/UserSettings";
|
|
|
21
21
|
import userSettingsFixture from "../../../test/fixture/Settings/userSettings";
|
|
22
22
|
|
|
23
23
|
export default {
|
|
24
|
-
title: 'Passbolt/Administration/DownloadOrganizationKey',
|
|
24
|
+
title: 'Passbolt Component/Administration/DownloadOrganizationKey',
|
|
25
25
|
component: DownloadOrganizationKey
|
|
26
26
|
};
|
|
27
27
|
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import React from "react";
|
|
16
16
|
import PropTypes from "prop-types";
|
|
17
17
|
import XRegExp from "xregexp";
|
|
18
|
+
import debounce from "debounce-promise";
|
|
18
19
|
import Icon from "../../../../shared/components/Icons/Icon";
|
|
19
20
|
import {Trans, withTranslation} from "react-i18next";
|
|
20
21
|
import FormSubmitButton from "../../Common/Inputs/FormSubmitButton/FormSubmitButton";
|
|
@@ -25,6 +26,9 @@ import {withAppContext} from "../../../contexts/AppContext";
|
|
|
25
26
|
import {withDialog} from "../../../contexts/DialogContext";
|
|
26
27
|
import Password from "../../../../shared/components/Password/Password";
|
|
27
28
|
import PasswordComplexity from "../../../../shared/components/PasswordComplexity/PasswordComplexity";
|
|
29
|
+
import SecretComplexity from "../../../../shared/lib/Secret/SecretComplexity";
|
|
30
|
+
import ExternalServiceUnavailableError from "../../../../shared/lib/Error/ExternalServiceUnavailableError";
|
|
31
|
+
import ExternalServiceError from "../../../../shared/lib/Error/ExternalServiceError";
|
|
28
32
|
|
|
29
33
|
/** Resource password max length */
|
|
30
34
|
const RESOURCE_PASSWORD_MAX_LENGTH = 4096;
|
|
@@ -40,6 +44,7 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
40
44
|
constructor(props) {
|
|
41
45
|
super(props);
|
|
42
46
|
this.state = this.defaultState;
|
|
47
|
+
this.evaluatePassphraseIsInDictionaryDebounce = debounce(this.evaluatePassphraseIsInDictionary, 300);
|
|
43
48
|
this.bindCallbacks();
|
|
44
49
|
this.createInputRef();
|
|
45
50
|
}
|
|
@@ -56,10 +61,13 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
56
61
|
emailError: "",
|
|
57
62
|
algorithm: "RSA",
|
|
58
63
|
keySize: 4096,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
passphrase: "",
|
|
65
|
+
passphraseError: "",
|
|
66
|
+
passphraseWarning: "",
|
|
67
|
+
passphraseEntropy: null,
|
|
68
|
+
hasAlreadyBeenValidated: false, // True if the form has already been submitted once
|
|
69
|
+
isPwned: false,
|
|
70
|
+
isPwnedServiceAvailable: true // True if the isPwned service can be reached
|
|
63
71
|
};
|
|
64
72
|
}
|
|
65
73
|
|
|
@@ -71,7 +79,7 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
71
79
|
this.handleInputChange = this.handleInputChange.bind(this);
|
|
72
80
|
this.handleNameInputKeyUp = this.handleNameInputKeyUp.bind(this);
|
|
73
81
|
this.handleEmailInputKeyUp = this.handleEmailInputKeyUp.bind(this);
|
|
74
|
-
this.
|
|
82
|
+
this.handlePassphraseChange = this.handlePassphraseChange.bind(this);
|
|
75
83
|
}
|
|
76
84
|
|
|
77
85
|
/**
|
|
@@ -80,7 +88,7 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
80
88
|
createInputRef() {
|
|
81
89
|
this.nameInputRef = React.createRef();
|
|
82
90
|
this.emailInputRef = React.createRef();
|
|
83
|
-
this.
|
|
91
|
+
this.passphraseInputRef = React.createRef();
|
|
84
92
|
}
|
|
85
93
|
|
|
86
94
|
/**
|
|
@@ -143,36 +151,77 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
143
151
|
}
|
|
144
152
|
|
|
145
153
|
/**
|
|
146
|
-
* Handle
|
|
154
|
+
* Handle passphrase input keyUp event.
|
|
155
|
+
* @param {ReactEvent} event The react event.
|
|
147
156
|
*/
|
|
148
|
-
|
|
157
|
+
async handlePassphraseChange(event) {
|
|
158
|
+
const passphrase = event.target.value;
|
|
159
|
+
const passphraseEntropy = passphrase?.length
|
|
160
|
+
? SecretGenerator.entropy(passphrase)
|
|
161
|
+
: null;
|
|
162
|
+
this.setState({passphrase, passphraseEntropy});
|
|
163
|
+
|
|
149
164
|
if (this.state.hasAlreadyBeenValidated) {
|
|
150
|
-
this.
|
|
165
|
+
await this.validatePassphraseInput(passphrase, passphraseEntropy);
|
|
151
166
|
} else {
|
|
152
|
-
const
|
|
167
|
+
const hasResourcePassphraseMaxLength = passphrase.length >= RESOURCE_PASSWORD_MAX_LENGTH;
|
|
153
168
|
const warningMessage = this.translate("this is the maximum size for this field, make sure your data was not truncated");
|
|
154
|
-
const
|
|
155
|
-
this.setState({
|
|
169
|
+
const passphraseWarning = hasResourcePassphraseMaxLength ? warningMessage : '';
|
|
170
|
+
this.setState({passphraseWarning});
|
|
156
171
|
}
|
|
157
172
|
}
|
|
158
173
|
|
|
159
174
|
/**
|
|
160
|
-
* Validate the
|
|
161
|
-
* @
|
|
175
|
+
* Validate the passphrase.
|
|
176
|
+
* @param {string} passphrase the passphrase to validate
|
|
177
|
+
* @param {integer|null} passphraseEntropy the entropy of the given passphrase
|
|
178
|
+
* @return {Promise<void>}
|
|
179
|
+
*/
|
|
180
|
+
async validatePassphraseInput(passphrase, passphraseEntropy) {
|
|
181
|
+
let passphraseError = null;
|
|
182
|
+
if (!passphrase?.length) {
|
|
183
|
+
passphraseError = this.translate("A passphrase is required.");
|
|
184
|
+
} else if (passphraseEntropy < FAIR_STRENGTH_ENTROPY) {
|
|
185
|
+
passphraseError = this.translate(`A strong passphrase is required. The minimum complexity must be 'fair'`);
|
|
186
|
+
} else {
|
|
187
|
+
this.evaluatePassphraseIsInDictionaryDebounce();
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
this.setState({passphraseError});
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Evaluate if the passphrase is in dictionary
|
|
195
|
+
* @return {Promise<void>} Return true if the passphrase is part of a dictionary, false otherwise
|
|
162
196
|
*/
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
if (!password.length) {
|
|
167
|
-
passwordError = this.translate("A passphrase is required.");
|
|
197
|
+
async evaluatePassphraseIsInDictionary() {
|
|
198
|
+
if (!this.state.isPwnedServiceAvailable) {
|
|
199
|
+
return false;
|
|
168
200
|
}
|
|
169
201
|
|
|
170
|
-
|
|
171
|
-
|
|
202
|
+
let isPwned;
|
|
203
|
+
try {
|
|
204
|
+
isPwned = await SecretComplexity.ispwned(this.state.passphrase);
|
|
205
|
+
} catch (error) {
|
|
206
|
+
// If the service is unavailable don't block the user journey.
|
|
207
|
+
if (error instanceof ExternalServiceUnavailableError || error instanceof ExternalServiceError) {
|
|
208
|
+
this.setState({
|
|
209
|
+
isPwnedServiceAvailable: false
|
|
210
|
+
});
|
|
211
|
+
return;
|
|
212
|
+
} else {
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
172
215
|
}
|
|
173
216
|
|
|
174
|
-
this.
|
|
175
|
-
|
|
217
|
+
let passphraseError = this.state.passphraseError;
|
|
218
|
+
let passphraseEntropy = this.state.passphraseEntropy;
|
|
219
|
+
if (isPwned) {
|
|
220
|
+
passphraseError = this.translate("The passphrase should not be part of an exposed data breach.");
|
|
221
|
+
passphraseEntropy = 0;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
this.setState({isPwned, passphraseEntropy, passphraseError});
|
|
176
225
|
}
|
|
177
226
|
|
|
178
227
|
/**
|
|
@@ -201,8 +250,8 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
201
250
|
this.nameInputRef.current.focus();
|
|
202
251
|
} else if (this.state.emailError) {
|
|
203
252
|
this.emailInputRef.current.focus();
|
|
204
|
-
} else if (this.state.
|
|
205
|
-
this.
|
|
253
|
+
} else if (this.state.passphraseError) {
|
|
254
|
+
this.passphraseInputRef.current.focus();
|
|
206
255
|
}
|
|
207
256
|
}
|
|
208
257
|
|
|
@@ -241,19 +290,12 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
241
290
|
* @return {Promise<boolean>}
|
|
242
291
|
*/
|
|
243
292
|
async validate() {
|
|
244
|
-
// Reset the form errors.
|
|
245
|
-
this.setState({
|
|
246
|
-
nameError: "",
|
|
247
|
-
emailError: "",
|
|
248
|
-
passwordError: "",
|
|
249
|
-
});
|
|
250
|
-
|
|
251
293
|
// Validate the form inputs.
|
|
252
294
|
const isNameValid = this.validateNameInput();
|
|
253
295
|
const isEmailValid = this.validateEmailInput();
|
|
254
|
-
const
|
|
296
|
+
const isPassphraseValid = this.validatePassphraseInput(this.state.passphrase, this.state.passphraseEntropy);
|
|
255
297
|
|
|
256
|
-
return isNameValid && isEmailValid &&
|
|
298
|
+
return isNameValid && isEmailValid && isPassphraseValid;
|
|
257
299
|
}
|
|
258
300
|
|
|
259
301
|
async generateKey() {
|
|
@@ -262,7 +304,7 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
262
304
|
email: this.state.email,
|
|
263
305
|
algorithm: this.state.algorithm,
|
|
264
306
|
keySize: this.state.keySize,
|
|
265
|
-
passphrase: this.state.
|
|
307
|
+
passphrase: this.state.passphrase,
|
|
266
308
|
};
|
|
267
309
|
|
|
268
310
|
return await this.props.context.port.request("passbolt.account-recovery.generate-organization-key", generateGpgKeyDto);
|
|
@@ -296,7 +338,6 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
296
338
|
* @returns {JSX}
|
|
297
339
|
*/
|
|
298
340
|
render() {
|
|
299
|
-
const passwordEntropy = this.state.password ? SecretGenerator.entropy(this.state.password) : null;
|
|
300
341
|
return (
|
|
301
342
|
<form onSubmit={this.handleFormSubmit} noValidate>
|
|
302
343
|
<div className="form-content generate-organization-key">
|
|
@@ -341,25 +382,28 @@ class GenerateOrganizationKey extends React.Component {
|
|
|
341
382
|
className="fluid" type="text"
|
|
342
383
|
autoComplete="off" disabled={true} />
|
|
343
384
|
</div>
|
|
344
|
-
<div className={`input-password-wrapper input required ${this.state.
|
|
385
|
+
<div className={`input-password-wrapper input required ${this.state.passphraseError ? "error" : ""}`}>
|
|
345
386
|
<label htmlFor="generate-organization-key-form-password">
|
|
346
387
|
<Trans>Organization key passphrase</Trans>
|
|
347
|
-
{this.state.
|
|
388
|
+
{this.state.passphraseWarning &&
|
|
348
389
|
<Icon name="exclamation"/>
|
|
349
390
|
}
|
|
350
391
|
</label>
|
|
351
392
|
<Password id="generate-organization-key-form-password" name="password"
|
|
352
393
|
placeholder={this.translate("Passphrase")} autoComplete="new-password" preview={true}
|
|
353
394
|
securityToken={this.props.context.userSettings.getSecurityToken()}
|
|
354
|
-
|
|
355
|
-
onChange={this.
|
|
356
|
-
inputRef={this.
|
|
357
|
-
<PasswordComplexity entropy={
|
|
358
|
-
{this.state.
|
|
359
|
-
|
|
395
|
+
value={this.state.passphrase}
|
|
396
|
+
onChange={this.handlePassphraseChange} disabled={this.hasAllInputDisabled()}
|
|
397
|
+
inputRef={this.passphraseInputRef}/>
|
|
398
|
+
<PasswordComplexity entropy={this.state.passphraseEntropy}/>
|
|
399
|
+
{this.state.passphraseError &&
|
|
400
|
+
<div className="password error-message">{this.state.passphraseError}</div>
|
|
401
|
+
}
|
|
402
|
+
{this.state.passphraseWarning &&
|
|
403
|
+
<div className="password warning-message"><strong><Trans>Warning:</Trans></strong> {this.state.passphraseWarning}</div>
|
|
360
404
|
}
|
|
361
|
-
{this.state.
|
|
362
|
-
|
|
405
|
+
{!this.state.isPwnedServiceAvailable &&
|
|
406
|
+
<div className="password warning-message"><strong><Trans>Warning:</Trans></strong> <Trans>The pwnedpasswords service is unavailable, your passphrase might be part of an exposed data breach</Trans></div>
|
|
363
407
|
}
|
|
364
408
|
</div>
|
|
365
409
|
</div>
|