passbolt-styleguide 3.5.2 → 3.6.0-alpha2
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/build/css/help.min.css +3 -3
- package/build/css/public.min.css +4 -4
- 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 +4 -4
- package/build/css/themes/default/api_reports.min.css +4 -4
- package/build/css/themes/default/api_webinstaller.min.css +3 -3
- package/build/css/themes/default/ext_app.min.css +4 -4
- 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 +4 -4
- package/build/css/themes/midgar/api_reports.min.css +4 -4
- package/build/css/themes/midgar/ext_app.min.css +4 -4
- 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 +2 -0
- package/build/js/dist/api-account-recovery.js.LICENSE.txt +107 -0
- package/build/js/dist/api-app.js +1 -1
- package/build/js/dist/api-app.js.LICENSE.txt +73 -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 +159 -15
- package/jest.config.json +13 -0
- package/package.json +26 -21
- package/src/locales/en-UK/common.json +140 -4
- package/src/react-extension/ApiAccountRecovery.entry.js +25 -0
- package/src/react-extension/ApiAccountRecovery.js +233 -0
- package/src/react-extension/ApiApp.js +50 -43
- package/src/react-extension/ExtApp.js +129 -105
- package/src/react-extension/ExtAuthenticationAccountRecovery.js +173 -0
- package/src/react-extension/ExtAuthenticationLogin.js +35 -33
- package/src/react-extension/ExtAuthenticationRecover.js +23 -35
- package/src/react-extension/ExtAuthenticationSetup.js +24 -46
- package/src/react-extension/ExtBootstrapAccountRecovery.js +75 -0
- package/src/react-extension/ExtBootstrapApp.js +4 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.js +114 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.data.js +27 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.js +72 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.page.js +74 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.stories.js +51 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.js +80 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.test.data.js +60 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.test.js +110 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.test.page.js +40 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.js +96 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.test.data.js +63 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.test.js +88 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.test.page.js +37 -0
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.js +214 -0
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.test.data.js +49 -0
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.test.js +98 -0
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.test.page.js +37 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.js +316 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.data.js +55 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.js +132 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.page.js +70 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.stories.js +104 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.js +286 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.data.js +51 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.js +77 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.page.js +119 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.stories.js +36 -0
- package/src/react-extension/components/Administration/AdministrationWorkspace.js +15 -2
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.data.js +5 -1
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.js +45 -0
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.page.js +23 -3
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.js +254 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.data.js +153 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.js +109 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.page.js +174 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.stories.js +43 -0
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +36 -0
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.data.js +2 -1
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.js +9 -0
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.page.js +12 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.js +138 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.test.data.js +46 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.test.js +51 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.test.page.js +93 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +2 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +9 -0
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +105 -2
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.stories.js +104 -0
- package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +2 -4
- package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.test.js +10 -3
- package/src/react-extension/components/Administration/HandleSaveAccountRecoveryOrganizationPolicyWorkflow/HandleSaveAccountRecoveryOrganizationPolicyWorkflow.js +180 -0
- package/src/react-extension/components/Administration/HandleSaveAccountRecoveryOrganizationPolicyWorkflow/HandleSaveAccountRecoveryOrganizationPolicyWorkflow.test.data.js +47 -0
- package/src/react-extension/components/Administration/HandleSaveAccountRecoveryOrganizationPolicyWorkflow/HandleSaveAccountRecoveryOrganizationPolicyWorkflow.test.js +64 -0
- package/src/react-extension/components/Administration/HandleSaveAccountRecoveryOrganizationPolicyWorkflow/HandleSaveAccountRecoveryOrganizationPolicyWorkflow.test.page.js +35 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +435 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.data.js +186 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.js +100 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.page.js +159 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.stories.js +64 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.js +535 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.data.js +31 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.js +155 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.page.js +124 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.stories.js +41 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.js +108 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.test.js +48 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.test.page.js +82 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.test.stories.js +51 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.js +471 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.test.js +181 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/ImportOrganizationKey.js +289 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/ImportOrganizationKey.test.js +188 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.js +121 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.page.js +262 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.stories.js +50 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.js +73 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.data.js +41 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.js +48 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.page.js +64 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.stories.js +40 -0
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.js +36 -0
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.test.js +37 -0
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.test.page.js +55 -0
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.test.stories.js +39 -0
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.js +3 -3
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.page.js +0 -1
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +33 -23
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.data.js +18 -30
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.js +110 -47
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.page.js +33 -10
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +36 -19
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.js +191 -0
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.data.js +90 -0
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.js +92 -0
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.page.js +109 -0
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.stories.js +60 -0
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.js +5 -29
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.data.js +17 -18
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.js +48 -25
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.page.js +16 -9
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +20 -16
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +40 -36
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.data.js +18 -14
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.js +189 -103
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.page.js +50 -11
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +31 -19
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.js +0 -9
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.js +1 -1
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/{DisplayBrowserNotSupportedPage.js → DisplayBrowserNotSupported.test.page.js} +2 -5
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.js +0 -9
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.data.js +36 -0
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.js +34 -0
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.page.js +49 -0
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +23 -15
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.js +0 -9
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.js +1 -1
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/{DisplayRequireInvitationErrorPage.js → DisplayRequireInvitationError.test.page.js} +0 -3
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.js +91 -10
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.data.js +56 -0
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.js +46 -0
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.page.js +79 -0
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +48 -15
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +12 -53
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.data.js +16 -16
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.js +10 -13
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.page.js +16 -6
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.data.js +17 -3
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.page.js +0 -1
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.data.js +28 -11
- package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +21 -16
- package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.data.js +17 -3
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.js +56 -19
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.data.js +25 -17
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.js +204 -58
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.page.js +43 -7
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +31 -19
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +0 -9
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.data.js +17 -3
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +62 -18
- package/src/react-extension/components/Authentication/{IntroduceSetupExtension/IntroduceSetupExtension.js → IntroduceExtension/IntroduceExtension.js} +8 -19
- package/src/react-extension/components/Authentication/IntroduceExtension/IntroduceExtension.test.data.js +24 -0
- package/src/react-extension/components/Authentication/{IntroduceSetupExtension/IntroduceSetupExtension.test.js → IntroduceExtension/IntroduceExtension.test.js} +16 -6
- package/src/react-extension/components/Authentication/{IntroduceSetupExtension/IntroduceSetupExtension.test.page.js → IntroduceExtension/IntroduceExtension.test.page.js} +3 -4
- package/src/react-extension/components/Authentication/IntroduceExtension/IntroduceExtension.test.stories.js +39 -0
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.data.js +27 -9
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.js +2 -8
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.page.js +4 -9
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +23 -14
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.js +70 -0
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.data.js +25 -0
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.js +49 -0
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.page.js +74 -0
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.stories.js +40 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.js +41 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.data.js +36 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.js +35 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.page.js +50 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +41 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.js +42 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.test.js +43 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.test.page.js +62 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.test.stories.js +40 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/OrchestrateAccountRecovery/InsertAccountRecoveryIframe.js +64 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/OrchestrateAccountRecovery/OrchestrateAccountRecovery.js +84 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/OrchestrateApiAccountRecovery/OrchestrateApiAccountRecovery.js +66 -0
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.js +8 -22
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.data.js +25 -0
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.js +52 -0
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.page.js +82 -0
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +23 -16
- package/src/react-extension/components/AuthenticationLogin/Login/Login.js +156 -145
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.data.js +67 -0
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.js +157 -0
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.page.js +155 -0
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +32 -27
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxFooter.js +48 -0
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain.js +90 -0
- package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.js +12 -3
- package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +1 -1
- package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +90 -82
- package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +80 -87
- package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.js +8 -3
- package/src/react-extension/components/Common/Avatar/UserAvatar.js +6 -1
- package/src/react-extension/components/Common/Avatar/UserAvatar.test.data.js +27 -0
- package/src/react-extension/components/Common/Avatar/UserAvatar.test.stories.js +47 -0
- package/src/react-extension/components/Common/Dialog/ManageDialogs/ManageDialogs.js +7 -2
- package/src/react-extension/components/Common/Error/HandleErrorEvents/HandleErrorEvents.js +2 -3
- package/src/react-extension/components/Common/Error/NotifyError/NotifyError.js +78 -15
- package/src/react-extension/components/Common/Icons/Icon.js +7 -0
- package/src/react-extension/components/Common/Internationalisation/TranslationProvider.js +1 -0
- package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.js +15 -2
- package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.test.stories.js +49 -0
- package/src/react-extension/components/Common/Route/HandleApplicationFirstLoadRoute.js +77 -0
- package/src/react-extension/components/Common/Route/HandleRouteFallback.js +14 -46
- package/src/react-extension/components/Common/Tab/Tabs.js +3 -1
- package/src/react-extension/components/Common/Workflow/ManageWorkflows/ManageWorkflows.js +72 -0
- package/src/react-extension/components/InsertAppIframe.js +12 -6
- package/src/react-extension/components/Resource/CreateResource/CreateResource.js +2 -4
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.data.js +2 -2
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.js +17 -2
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +19 -3
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.js +2 -4
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.test.js +20 -6
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.test.stories.js +12 -0
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.stories.js +107 -6
- package/src/react-extension/components/Resource/EditResource/EditResource.js +2 -4
- package/src/react-extension/components/Resource/EditResource/EditResource.test.data.js +2 -2
- package/src/react-extension/components/Resource/EditResource/EditResource.test.js +3 -0
- package/src/react-extension/components/Resource/EditResource/EditResource.test.stories.js +18 -4
- package/src/react-extension/components/Resource/ExportResources/ExportResources.js +5 -7
- package/src/react-extension/components/Resource/ExportResources/ExportResources.test.js +9 -2
- package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +4 -2
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +5 -7
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.js +8 -2
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +4 -2
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +24 -8
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +2 -4
- package/src/react-extension/components/Resource/ImportResources/ImportResources.js +2 -4
- package/src/react-extension/components/Resource/ImportResources/ImportResources.test.js +10 -2
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +4 -6
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.js +9 -2
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +9 -1
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.js +4 -2
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +19 -1
- package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +15 -3
- package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +8 -3
- package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +9 -8
- package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +6 -3
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.test.data.js +11 -0
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.test.js +11 -4
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +11 -10
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +2 -4
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.js +16 -5
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +13 -0
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.js +8 -10
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.js +12 -5
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +4 -1
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.js +2 -4
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.js +2 -5
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +6 -2
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +2 -4
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.js +15 -4
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +10 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +4 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.js +2 -3
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +3 -1
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +3 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +2 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.js +1 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.test.stories.js +2 -3
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.test.stories.js +7 -3
- package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.js +2 -4
- package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +6 -2
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +2 -4
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +6 -2
- package/src/react-extension/components/Share/ShareDialog.js +2 -4
- package/src/react-extension/components/Share/ShareDialog.test.js +14 -3
- package/src/react-extension/components/Share/ShareDialog.test.stories.js +5 -3
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.js +4 -6
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.js +6 -2
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +5 -0
- package/src/react-extension/components/User/CreateUser/CreateUser.js +2 -4
- package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +14 -3
- package/src/react-extension/components/User/DeleteUser/DeleteUser.js +2 -4
- package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +9 -2
- package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.js +2 -4
- package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +7 -1
- package/src/react-extension/components/User/DisplayExpiredAccountRecovery/DisplayExpiredAccountRecovery.js +79 -0
- package/src/react-extension/components/User/DisplayExpiredAccountRecovery/DisplayExpiredAccountRecovery.test.stories.js +32 -0
- package/src/react-extension/components/User/DisplayUserBadgeMenu/DisplayUserBadgeMenu.js +13 -3
- package/src/react-extension/components/User/DisplayUserBadgeMenu/DisplayUserBadgeMenu.test.stories.js +7 -9
- package/src/react-extension/components/User/DisplayUserWorkspace/DisplayUserWorkspace.js +5 -1
- package/src/react-extension/components/User/DisplayUserWorkspace/DisplayUserWorkspace.test.data.js +18 -9
- package/src/react-extension/components/User/DisplayUserWorkspace/DisplayUserWorkspace.test.js +2 -2
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +48 -6
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.data.js +16 -1
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.js +14 -0
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.page.js +8 -0
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.stories.js +55 -0
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.js +35 -0
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.data.js +33 -13
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.js +16 -3
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.page.js +19 -6
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.stories.js +38 -0
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.js +46 -10
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.data.js +21 -6
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.js +38 -5
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.page.js +10 -0
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.stories.js +53 -0
- package/src/react-extension/components/User/EditUser/EditUser.js +2 -4
- package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +8 -1
- package/src/react-extension/components/User/FilterUsersByGroups/DisplayGroupContextualMenu.js +2 -4
- package/src/react-extension/components/User/HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute.js +98 -0
- package/src/react-extension/components/User/HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute.test.data.js +56 -0
- package/src/react-extension/components/User/HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute.test.js +54 -0
- package/src/react-extension/components/User/HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute.test.page.js +37 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.js +36 -3
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.test.data.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.test.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.js +234 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.data.js +125 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.js +150 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.page.js +113 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.stories.js +142 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.js +467 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.data.js +167 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.js +106 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.page.js +101 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.stories.js +143 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.js +5 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.data.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.data.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +1 -1
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +2 -4
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +5 -1
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.js +2 -4
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +8 -1
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.js +2 -4
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +8 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.test.data.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.test.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.data.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.data.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +2 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +2 -4
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.data.js +1 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.js +13 -2
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.js +5 -2
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +11 -1
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.js +11 -3
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +5 -1
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.js +240 -0
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.data.js +53 -0
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.js +110 -0
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.page.js +85 -0
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.stories.js +65 -0
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +3 -4
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspace/DisplayUserSettingsWorkspace.js +16 -2
- package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.js +2 -1
- package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.js +2 -4
- package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +18 -12
- package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.js +2 -4
- package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +17 -3
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.js +29 -0
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +5 -0
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.js +2 -4
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +10 -3
- package/src/react-extension/contexts/AccountRecoveryUserContext.js +223 -0
- package/src/react-extension/contexts/AccountRecoveryUserContext.test.data.js +55 -0
- package/src/react-extension/contexts/AccountRecoveryUserContext.test.js +58 -0
- package/src/react-extension/contexts/ActionFeedbackContext.test.data.js +28 -0
- package/src/react-extension/contexts/AdminAccountRecoveryContext.js +211 -0
- package/src/react-extension/contexts/AdminAccountRecoveryContext.test.data.js +66 -0
- package/src/react-extension/contexts/AdminAccountRecoveryContext.test.js +229 -0
- package/src/react-extension/contexts/AdministrationWorkspaceContext.js +27 -0
- package/src/react-extension/contexts/ApiAccountRecoveryContext.js +148 -0
- package/src/react-extension/contexts/ApiRecoverContext.js +14 -15
- package/src/react-extension/contexts/ApiSetupContext.js +8 -8
- package/src/react-extension/contexts/Authentication/AuthenticationAccountRecoveryContext.js +282 -0
- package/src/react-extension/contexts/Authentication/AuthenticationAccountRecoveryContext.test.data.js +51 -0
- package/src/react-extension/contexts/Authentication/AuthenticationAccountRecoveryContext.test.js +231 -0
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.js +264 -0
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.data.js +79 -0
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.js +234 -0
- package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.js +325 -0
- package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.test.data.js +63 -0
- package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.test.js +379 -0
- package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.js +339 -0
- package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.test.data.js +63 -0
- package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.test.js +364 -0
- package/src/react-extension/contexts/DialogContext.test.data.js +27 -0
- package/src/react-extension/contexts/ExtAppContext.js +0 -6
- package/src/react-extension/contexts/ExtAppContext.test.data.js +50 -0
- package/src/react-extension/contexts/NavigationContext.js +26 -2
- package/src/react-extension/contexts/ResourceWorkspaceContext.js +9 -2
- package/src/react-extension/contexts/ResourceWorkspaceContext.test.page.js +10 -1
- package/src/react-extension/contexts/UserSettingsContext.js +1 -2
- package/src/react-extension/contexts/UserWorkspaceContext.js +35 -10
- package/src/react-extension/contexts/UserWorkspaceContext.test.data.js +13 -0
- package/src/react-extension/contexts/UserWorkspaceContext.test.page.js +6 -1
- package/src/react-extension/contexts/WorkflowContext.js +89 -0
- package/src/react-extension/contexts/WorkflowContext.test.data.js +27 -0
- package/src/react-extension/lib/Error/GpgKeyError.js +22 -0
- package/src/react-extension/lib/Error/InvalidMasterPasswordError.js +23 -0
- package/src/react-extension/lib/Error/ServerKeyChangedError.js +22 -0
- package/src/react-extension/test/fixture/Settings/siteSettings.js +4 -0
- package/src/react-extension/test/fixture/Settings/userSettings.js +1 -1
- package/src/react-extension/test/mock/MockPort.js +2 -2
- package/src/react-extension/test/mock/MockStorage.js +0 -2
- package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +2 -1
- package/src/react-extension/test/mock/components/React/mockSetState.js +22 -0
- package/src/react-quickaccess/ExtQuickAccess.js +10 -1
- package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +6 -10
- package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +6 -10
- package/src/react-quickaccess/components/LoginPage/LoginPage.js +2 -6
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +1 -0
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.js +17 -3
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +5 -3
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +31 -2
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +1 -1
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +32 -3
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.data.js +6 -3
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +29 -19
- package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.data.js +2 -0
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +12 -9
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.js +1 -1
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +127 -164
- package/src/react-web-integration/lib/Dom/DomUtils.js +23 -1
- package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +7 -1
- package/src/react-web-integration/lib/InForm/InFormManager.js +24 -14
- package/src/react-web-integration/lib/InForm/InformManager.test.data.js +80 -2
- package/src/react-web-integration/lib/InForm/InformManager.test.js +147 -7
- package/src/react-web-integration/lib/InForm/InformManager.test.page.js +16 -2
- package/src/shared/lib/Error/EntityValidationError.js +81 -0
- package/src/shared/lib/apiClient/apiClient.test.js +1 -1
- package/src/shared/services/accountRecovery/ApiAppAccountRecoveryUserService.js +78 -0
- package/src/shared/services/accountRecovery/ExtAppAccountRecoveryUserService.js +24 -0
- package/test/jest.setup.js +8 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.js +0 -97
- package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.test.stories.js +0 -33
- package/src/react-extension/components/Authentication/CheckPassphrase/GenerateKeyOnPassphraseLostSecondaryAction.js +0 -41
- package/src/react-extension/components/Authentication/CheckPassphrase/HelpOnPassphraseLostSecondaryAction.js +0 -41
- package/src/react-extension/components/Authentication/CheckPassphrase/HelpOnPrivateKeyLostSecondaryAction.js +0 -41
- package/src/react-extension/components/Authentication/ImportGpgKey/GenerateKeySecondaryAction.js +0 -40
- package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.data.js +0 -11
- package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.stories.js +0 -34
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.js +0 -87
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.test.stories.js +0 -33
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginInProgress.js +0 -49
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginProgress.test.stories.js +0 -33
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLogin.js +0 -102
- package/src/react-extension/components/Internationalisation/ChangeLocale/ChangeExtAuthenticationLocale.js +0 -63
- package/src/react-extension/contexts/AuthenticationContext.js +0 -467
- package/src/react-extension/contexts/AuthenticationContext.test.data.js +0 -15
- package/src/react-extension/contexts/AuthenticationContext.test.js +0 -252
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import AppContext from "../../../contexts/AppContext";
|
|
4
3
|
import PropTypes from "prop-types";
|
|
5
4
|
import DisplayUserBadgeMenu from "./DisplayUserBadgeMenu";
|
|
6
5
|
|
|
@@ -10,15 +9,10 @@ export default {
|
|
|
10
9
|
component: DisplayUserBadgeMenu
|
|
11
10
|
};
|
|
12
11
|
|
|
13
|
-
const context = {};
|
|
14
|
-
|
|
15
|
-
|
|
16
12
|
const Template = args =>
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
</MemoryRouter>
|
|
21
|
-
</AppContext.Provider>;
|
|
13
|
+
<MemoryRouter initialEntries={['/']}>
|
|
14
|
+
<Route component={routerProps => <DisplayUserBadgeMenu {...args} {...routerProps}/>}></Route>
|
|
15
|
+
</MemoryRouter>;
|
|
22
16
|
|
|
23
17
|
Template.propTypes = {
|
|
24
18
|
context: PropTypes.object,
|
|
@@ -26,6 +20,7 @@ Template.propTypes = {
|
|
|
26
20
|
|
|
27
21
|
export const Initial = Template.bind({});
|
|
28
22
|
Initial.args = {
|
|
23
|
+
baseUrl: (new URL(window.location.href)).origin,
|
|
29
24
|
user: {
|
|
30
25
|
"id": "8e3874ae-4b40-590b-968a-418f704b9d9a",
|
|
31
26
|
"role_id": "a58de6d3-f52c-5080-b79b-a601a647ac85",
|
|
@@ -63,5 +58,8 @@ Initial.args = {
|
|
|
63
58
|
},
|
|
64
59
|
"__placeholder_last_logged_in__": "",
|
|
65
60
|
"last_logged_in": ""
|
|
61
|
+
},
|
|
62
|
+
context: {
|
|
63
|
+
onLogoutRequested: () => {}
|
|
66
64
|
}
|
|
67
65
|
};
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import React from 'react';
|
|
17
17
|
import DisplayUsers from "../DisplayUsers/DisplayUsers";
|
|
18
18
|
import {withUserWorkspace} from "../../../contexts/UserWorkspaceContext";
|
|
19
|
-
import {withRouter} from "react-router-dom";
|
|
19
|
+
import {Route, withRouter} from "react-router-dom";
|
|
20
20
|
import PropTypes from "prop-types";
|
|
21
21
|
import DisplayUserDetails from "../../UserDetails/DisplayUserDetails/DisplayUserDetails";
|
|
22
22
|
import DisplayUserWorkspaceActions from "../DisplayUserWorkspaceActions/DisplayUserWorkspaceActions";
|
|
@@ -29,6 +29,7 @@ import FilterUsersByText from "../FilterUsersByText/FilterUsersByText";
|
|
|
29
29
|
import DisplayUserGroupDetails from "../../UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails";
|
|
30
30
|
import DisplayUserWorkspaceMainActions from "../DisplayUserWorkspaceMainActions/DisplayUserWorkspaceMainActions";
|
|
31
31
|
import FilterUsersByBreadcrumb from "../FilterUsersByBreadcrumb/FilterUsersByBreadcrumb";
|
|
32
|
+
import HandleReviewAccountRecoveryRequestRoute from "../HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute";
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
35
|
* This component is a container for all the user workspace features
|
|
@@ -57,6 +58,9 @@ class DisplayUserWorkspace extends React.Component {
|
|
|
57
58
|
render() {
|
|
58
59
|
return (
|
|
59
60
|
<div>
|
|
61
|
+
{this.props.context.users &&
|
|
62
|
+
<Route path="/app/account-recovery/requests/review/:accountRecoveryRequestId" component={HandleReviewAccountRecoveryRequestRoute}/>
|
|
63
|
+
}
|
|
60
64
|
<div className="header second">
|
|
61
65
|
<Logo/>
|
|
62
66
|
<FilterUsersByText/>
|
package/src/react-extension/components/User/DisplayUserWorkspace/DisplayUserWorkspace.test.data.js
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 2.11.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {defaultAppContext} from "../../../contexts/ExtAppContext.test.data";
|
|
2
16
|
|
|
3
17
|
/**
|
|
4
18
|
* Returns the default app context for the unit test
|
|
5
19
|
* @param appContext An existing app context
|
|
6
20
|
* @returns {any | ({userSettings: UserSettings, siteSettings: SiteSettings, port: MockPort} & {})}
|
|
7
21
|
*/
|
|
8
|
-
export function
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
userSettings: {
|
|
12
|
-
getTrustedDomain: () => 'some url'
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
return Object.assign(defaultAppContext, appContext || {});
|
|
22
|
+
export function defaultContext(data = {}) {
|
|
23
|
+
const defaultData = defaultAppContext();
|
|
24
|
+
return Object.assign(defaultData, data);
|
|
16
25
|
}
|
|
17
26
|
|
|
18
27
|
/**
|
package/src/react-extension/components/User/DisplayUserWorkspace/DisplayUserWorkspace.test.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import React from 'react';
|
|
19
19
|
import {
|
|
20
|
-
|
|
20
|
+
defaultContext,
|
|
21
21
|
propsWithGroupDetails,
|
|
22
22
|
propsWithoutLock,
|
|
23
23
|
propsWithUserDetails
|
|
@@ -42,7 +42,7 @@ beforeEach(() => {
|
|
|
42
42
|
|
|
43
43
|
describe("Display User Workspace", () => {
|
|
44
44
|
let page; // The page to test against
|
|
45
|
-
const context =
|
|
45
|
+
const context = defaultContext(); // The applicative context
|
|
46
46
|
|
|
47
47
|
it('As LU, I should see the user details area if the area is locked and the details is on an user', async() => {
|
|
48
48
|
page = new DisplayUserWorkspacePage(context, propsWithUserDetails());
|
|
@@ -25,6 +25,9 @@ import NotifyError from "../../Common/Error/NotifyError/NotifyError";
|
|
|
25
25
|
import {withActionFeedback} from "../../../contexts/ActionFeedbackContext";
|
|
26
26
|
import ConfirmDisableUserMFA from "../ConfirmDisableUserMFA/ConfirmDisableUserMFA";
|
|
27
27
|
import {Trans, withTranslation} from "react-i18next";
|
|
28
|
+
import HandleReviewAccountRecoveryRequestWorkflow
|
|
29
|
+
from "../../AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow";
|
|
30
|
+
import {withWorkflow} from "../../../contexts/WorkflowContext";
|
|
28
31
|
|
|
29
32
|
/**
|
|
30
33
|
* This component is a container of multiple actions applicable on user
|
|
@@ -62,6 +65,7 @@ class DisplayUserWorkspaceActions extends React.Component {
|
|
|
62
65
|
this.handleDisableMfaEvent = this.handleDisableMfaEvent.bind(this);
|
|
63
66
|
this.handleCopyPermalinkEvent = this.handleCopyPermalinkEvent.bind(this);
|
|
64
67
|
this.handleResendInviteClickEvent = this.handleResendInviteClickEvent.bind(this);
|
|
68
|
+
this.handleReviewRecoveryRequestEvent = this.handleReviewRecoveryRequestEvent.bind(this);
|
|
65
69
|
}
|
|
66
70
|
|
|
67
71
|
/**
|
|
@@ -179,7 +183,6 @@ class DisplayUserWorkspaceActions extends React.Component {
|
|
|
179
183
|
*/
|
|
180
184
|
handleError(error) {
|
|
181
185
|
const errorDialogProps = {
|
|
182
|
-
title: this.translate("There was an unexpected error..."),
|
|
183
186
|
message: error.message
|
|
184
187
|
};
|
|
185
188
|
this.props.context.setContext({errorDialogProps});
|
|
@@ -212,6 +215,15 @@ class DisplayUserWorkspaceActions extends React.Component {
|
|
|
212
215
|
this.closeMoreMenu();
|
|
213
216
|
}
|
|
214
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Handle review recovery request click event
|
|
220
|
+
*/
|
|
221
|
+
handleReviewRecoveryRequestEvent() {
|
|
222
|
+
this.closeMoreMenu();
|
|
223
|
+
const accountRecoveryRequestId = this.selectedUser.pending_account_recovery_request.id;
|
|
224
|
+
this.props.workflowContext.start(HandleReviewAccountRecoveryRequestWorkflow, {accountRecoveryRequestId});
|
|
225
|
+
}
|
|
226
|
+
|
|
215
227
|
/**
|
|
216
228
|
* Get selected user
|
|
217
229
|
* @returns {user|null}
|
|
@@ -262,6 +274,21 @@ class DisplayUserWorkspaceActions extends React.Component {
|
|
|
262
274
|
return this.selectedUser && !this.selectedUser.active;
|
|
263
275
|
}
|
|
264
276
|
|
|
277
|
+
/**
|
|
278
|
+
* Check if the user can use the review recovery request capability.
|
|
279
|
+
*/
|
|
280
|
+
canIReviewAccountRecoveryRequest() {
|
|
281
|
+
return this.props.context.siteSettings.canIUse("accountRecovery") && this.isLoggedInUserAdmin();
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Has a pending account recovery for the user.
|
|
286
|
+
* @returns {boolean}
|
|
287
|
+
*/
|
|
288
|
+
hasPendingAccountRecoveryRequest() {
|
|
289
|
+
return this.selectedUser && Boolean(this.selectedUser.pending_account_recovery_request);
|
|
290
|
+
}
|
|
291
|
+
|
|
265
292
|
/**
|
|
266
293
|
* Check if the users workspace has one user selected.
|
|
267
294
|
* @return {boolean}
|
|
@@ -344,12 +371,10 @@ class DisplayUserWorkspaceActions extends React.Component {
|
|
|
344
371
|
*/
|
|
345
372
|
onResendInviteFailure(error) {
|
|
346
373
|
const errorDialogProps = {
|
|
347
|
-
|
|
348
|
-
message: error.message
|
|
374
|
+
error: error
|
|
349
375
|
};
|
|
350
376
|
this.toggleMoreMenu();
|
|
351
|
-
this.props.
|
|
352
|
-
this.props.dialogContext.open(NotifyError);
|
|
377
|
+
this.props.dialogContext.open(NotifyError, errorDialogProps);
|
|
353
378
|
}
|
|
354
379
|
|
|
355
380
|
/**
|
|
@@ -433,6 +458,22 @@ class DisplayUserWorkspaceActions extends React.Component {
|
|
|
433
458
|
</div>
|
|
434
459
|
</li>
|
|
435
460
|
}
|
|
461
|
+
{this.canIReviewAccountRecoveryRequest() &&
|
|
462
|
+
<li key="review-recovery-user" className="ready">
|
|
463
|
+
<div className="row">
|
|
464
|
+
<div className="main-cell-wrapper">
|
|
465
|
+
<div className="main-cell">
|
|
466
|
+
<a
|
|
467
|
+
id="review-recovery"
|
|
468
|
+
onClick={this.handleReviewRecoveryRequestEvent}
|
|
469
|
+
className={`${!this.hasPendingAccountRecoveryRequest() ? "disabled" : ""}`}>
|
|
470
|
+
<span><Trans>Review recovery request</Trans></span>
|
|
471
|
+
</a>
|
|
472
|
+
</div>
|
|
473
|
+
</div>
|
|
474
|
+
</div>
|
|
475
|
+
</li>
|
|
476
|
+
}
|
|
436
477
|
</ul>
|
|
437
478
|
</div>
|
|
438
479
|
</ul>
|
|
@@ -458,9 +499,10 @@ class DisplayUserWorkspaceActions extends React.Component {
|
|
|
458
499
|
DisplayUserWorkspaceActions.propTypes = {
|
|
459
500
|
context: PropTypes.any, // The application context
|
|
460
501
|
userWorkspaceContext: PropTypes.any, // the user workspace context
|
|
502
|
+
workflowContext: PropTypes.any, // the workflow context
|
|
461
503
|
dialogContext: PropTypes.any, // the dialog context
|
|
462
504
|
actionFeedbackContext: PropTypes.object, // the action feeedback context
|
|
463
505
|
t: PropTypes.func, // The translation function
|
|
464
506
|
};
|
|
465
507
|
|
|
466
|
-
export default withAppContext(withActionFeedback(withDialog(withUserWorkspace(withTranslation('common')(DisplayUserWorkspaceActions)))));
|
|
508
|
+
export default withAppContext(withActionFeedback(withWorkflow(withDialog(withUserWorkspace(withTranslation('common')(DisplayUserWorkspaceActions))))));
|
|
@@ -11,6 +11,9 @@ export function defaultAppContext(appContext) {
|
|
|
11
11
|
siteSettings: {
|
|
12
12
|
canIUse: () => true
|
|
13
13
|
},
|
|
14
|
+
userSettings: {
|
|
15
|
+
getTrustedDomain: () => 'https://passbolt.local'
|
|
16
|
+
},
|
|
14
17
|
loggedInUser: {
|
|
15
18
|
id: "220ebc06-5ec1-5322-a1ae-6120ed2f3a74",
|
|
16
19
|
role: {
|
|
@@ -76,7 +79,10 @@ export function propsWithSelectedUser() {
|
|
|
76
79
|
},
|
|
77
80
|
"__placeholder_last_logged_in__": "",
|
|
78
81
|
"last_logged_in": "",
|
|
79
|
-
is_mfa_enabled: true
|
|
82
|
+
is_mfa_enabled: true,
|
|
83
|
+
pending_account_recovery_request: {
|
|
84
|
+
id: "54c6278e-f824-5fda-91ff-3e946b18d997"
|
|
85
|
+
},
|
|
80
86
|
}
|
|
81
87
|
]
|
|
82
88
|
}
|
|
@@ -136,3 +142,12 @@ export function propsWithSelectedMFADisabledUser() {
|
|
|
136
142
|
props.userWorkspaceContext.selectedUsers[0].is_mfa_enabled = false;
|
|
137
143
|
return props;
|
|
138
144
|
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Props with temporary pending account recovery selected user
|
|
148
|
+
*/
|
|
149
|
+
export function propsWithSelectedUserTemporaryHasPendingAccountRecovery() {
|
|
150
|
+
const props = propsWithSelectedUser();
|
|
151
|
+
props.userWorkspaceContext.selectedUsers[0].pending_account_recovery_request = true;
|
|
152
|
+
return props;
|
|
153
|
+
}
|
|
@@ -132,6 +132,20 @@ describe("Display User Workspace Actions", () => {
|
|
|
132
132
|
await page.lockDetails();
|
|
133
133
|
expect(props.userWorkspaceContext.onDetailsLocked).toHaveBeenCalled();
|
|
134
134
|
});
|
|
135
|
+
|
|
136
|
+
it('As AD I should not disable a review account recovery request if a user is selected', async() => {
|
|
137
|
+
page = new DisplayUserWorkspaceActionsPage(context, propsWithSelectedUser());
|
|
138
|
+
await waitFor(() => {});
|
|
139
|
+
await page.moreActions();
|
|
140
|
+
expect(page.canReviewAccountRecovery).toBeTruthy();
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it('As AD I should not disable a review account recovery request if no user is selected', async() => {
|
|
144
|
+
page = new DisplayUserWorkspaceActionsPage(context, propsWithoutSelectedUser());
|
|
145
|
+
await waitFor(() => {});
|
|
146
|
+
await page.moreActions();
|
|
147
|
+
expect(page.canReviewAccountRecovery).toBeFalsy();
|
|
148
|
+
});
|
|
135
149
|
});
|
|
136
150
|
|
|
137
151
|
|
|
@@ -82,6 +82,14 @@ export default class DisplayUserWorkspaceActionsPage {
|
|
|
82
82
|
return Boolean(element) && !element.classList.contains('disabled');
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Returns true if one can review account recovery of a user
|
|
87
|
+
*/
|
|
88
|
+
get canReviewAccountRecovery() {
|
|
89
|
+
const element = this._page.container.querySelectorAll('li a')[5];
|
|
90
|
+
return Boolean(element) && !element.classList.contains('disabled');
|
|
91
|
+
}
|
|
92
|
+
|
|
85
93
|
/**
|
|
86
94
|
* Asks for more actions through the dropdown
|
|
87
95
|
*/
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 3.6.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {MemoryRouter, Route} from "react-router-dom";
|
|
16
|
+
import React from "react";
|
|
17
|
+
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
18
|
+
import DisplayUserWorkspaceActions from "./DisplayUserWorkspaceActions";
|
|
19
|
+
import {
|
|
20
|
+
defaultAppContext,
|
|
21
|
+
propsWithSelectedUser,
|
|
22
|
+
propsWithSelectedUserTemporaryHasPendingAccountRecovery
|
|
23
|
+
} from "./DisplayUserWorkspaceActions.test.data";
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
export default {
|
|
27
|
+
title: 'Passbolt/User/DisplayUserWorkspaceActions',
|
|
28
|
+
component: DisplayUserWorkspaceActions
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
const Template = args =>
|
|
33
|
+
<MockTranslationProvider>
|
|
34
|
+
<div className="header third">
|
|
35
|
+
<MemoryRouter initialEntries={['/']}>
|
|
36
|
+
<Route component={routerProps => <DisplayUserWorkspaceActions {...args} {...routerProps}/>}></Route>
|
|
37
|
+
</MemoryRouter>
|
|
38
|
+
</div>
|
|
39
|
+
</MockTranslationProvider>;
|
|
40
|
+
|
|
41
|
+
export const AdminWithoutReviewRecovery = Template.bind({});
|
|
42
|
+
AdminWithoutReviewRecovery.args = Object.assign(propsWithSelectedUser(), {context: defaultAppContext()});
|
|
43
|
+
|
|
44
|
+
export const AdminWithReviewRecovery = Template.bind({});
|
|
45
|
+
AdminWithReviewRecovery.args = Object.assign(propsWithSelectedUserTemporaryHasPendingAccountRecovery(), {context: defaultAppContext()});
|
|
46
|
+
|
|
47
|
+
export const User = Template.bind({});
|
|
48
|
+
const userRole = {
|
|
49
|
+
loggedInUser: {
|
|
50
|
+
role: {
|
|
51
|
+
name: 'user'
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
User.args = Object.assign(propsWithSelectedUser, {context: defaultAppContext(userRole)});
|
|
@@ -247,6 +247,14 @@ class DisplayUsers extends React.Component {
|
|
|
247
247
|
return this.props.context.loggedInUser && this.props.context.loggedInUser.role.name === 'admin';
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
+
/**
|
|
251
|
+
* Returns true if the accountRecovery feature is enabled and if the logged in user is an admin.
|
|
252
|
+
* @returns {boolean}
|
|
253
|
+
*/
|
|
254
|
+
hasAttentionRequiredColumn() {
|
|
255
|
+
return this.props.context.siteSettings.canIUse("accountRecovery") && this.isLoggedInUserAdmin();
|
|
256
|
+
}
|
|
257
|
+
|
|
250
258
|
/**
|
|
251
259
|
* Format date in time ago
|
|
252
260
|
* @param {string} date The date to format
|
|
@@ -266,6 +274,7 @@ class DisplayUsers extends React.Component {
|
|
|
266
274
|
const roleName = this.props.userWorkspaceContext.getTranslatedRoleName(user.role_id);
|
|
267
275
|
const mfa = user.is_mfa_enabled ? this.translate("Enabled") : this.translate("Disabled");
|
|
268
276
|
const rowClassName = `${isSelected ? "selected" : ""} ${user.active ? "" : "inactive"}`;
|
|
277
|
+
const hasUserAttentionRequired = Boolean(user.pending_account_recovery_request);
|
|
269
278
|
|
|
270
279
|
return (
|
|
271
280
|
<tr
|
|
@@ -285,6 +294,13 @@ class DisplayUsers extends React.Component {
|
|
|
285
294
|
</div>
|
|
286
295
|
</div>
|
|
287
296
|
</td>
|
|
297
|
+
{this.hasAttentionRequiredColumn() &&
|
|
298
|
+
<td className="s-cell attention-required">
|
|
299
|
+
{hasUserAttentionRequired &&
|
|
300
|
+
<Icon name="exclamation" baseline={true}/>
|
|
301
|
+
}
|
|
302
|
+
</td>
|
|
303
|
+
}
|
|
288
304
|
<td className="cell-name l-cell">
|
|
289
305
|
<div title={`${user.profile.first_name} ${user.profile.last_name}`}>
|
|
290
306
|
{`${user.profile.first_name} ${user.profile.last_name}`}
|
|
@@ -368,6 +384,25 @@ class DisplayUsers extends React.Component {
|
|
|
368
384
|
</label>
|
|
369
385
|
</div>
|
|
370
386
|
</th>
|
|
387
|
+
{this.hasAttentionRequiredColumn() &&
|
|
388
|
+
<th className="s-cell attention-required">
|
|
389
|
+
<a onClick={ev => this.handleSortByColumnClick(ev, "attentionRequired")}>
|
|
390
|
+
<div className="cell-header">
|
|
391
|
+
<span className="cell-header-text">
|
|
392
|
+
<Icon name="exclamation" baseline={true}/>
|
|
393
|
+
</span>
|
|
394
|
+
<span className="cell-header-icon-sort">
|
|
395
|
+
{this.isSortedColumn("attentionRequired") && this.isSortedAsc() &&
|
|
396
|
+
<Icon baseline={true} name="caret-up"/>
|
|
397
|
+
}
|
|
398
|
+
{this.isSortedColumn("attentionRequired") && !this.isSortedAsc() &&
|
|
399
|
+
<Icon baseline={true} name="caret-down"/>
|
|
400
|
+
}
|
|
401
|
+
</span>
|
|
402
|
+
</div>
|
|
403
|
+
</a>
|
|
404
|
+
</th>
|
|
405
|
+
}
|
|
371
406
|
<th className="cell-name l-cell sortable">
|
|
372
407
|
<a onClick={ev => this.handleSortByColumnClick(ev, "name")}>
|
|
373
408
|
<div className="cell-header">
|
|
@@ -1,24 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 2.11.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
2
15
|
import {UserWorkspaceFilterTypes} from "../../../contexts/UserWorkspaceContext";
|
|
16
|
+
import {defaultAppContext} from "../../../contexts/ExtAppContext.test.data";
|
|
3
17
|
|
|
4
18
|
/**
|
|
5
19
|
* Returns the default app context for the unit test
|
|
6
20
|
* @param appContext An existing app context
|
|
7
21
|
* @returns {any | ({userSettings: UserSettings, siteSettings: SiteSettings, port: MockPort} & {})}
|
|
8
22
|
*/
|
|
9
|
-
export function
|
|
10
|
-
const
|
|
11
|
-
port: new MockPort(),
|
|
12
|
-
siteSettings: {
|
|
13
|
-
getServerTimezone: () => ''
|
|
14
|
-
},
|
|
23
|
+
export function defaultContext(data = {}) {
|
|
24
|
+
const defaultData = defaultAppContext({
|
|
15
25
|
loggedInUser: {
|
|
16
26
|
role: {
|
|
17
27
|
name: 'admin'
|
|
18
28
|
}
|
|
19
29
|
}
|
|
20
|
-
};
|
|
21
|
-
return Object.assign(
|
|
30
|
+
});
|
|
31
|
+
return Object.assign(defaultData, data);
|
|
22
32
|
}
|
|
23
33
|
|
|
24
34
|
|
|
@@ -29,7 +39,7 @@ export function defaultAppContext(appContext) {
|
|
|
29
39
|
export function defaultProps() {
|
|
30
40
|
return {
|
|
31
41
|
userWorkspaceContext: {
|
|
32
|
-
onUserScrolled:
|
|
42
|
+
onUserScrolled: () => {},
|
|
33
43
|
scrollTo: {
|
|
34
44
|
user: {
|
|
35
45
|
"id": "54c6278e-f824-5fda-91ff-3e946b18d994",
|
|
@@ -78,9 +88,9 @@ export function defaultProps() {
|
|
|
78
88
|
is_mfa_enabled: false
|
|
79
89
|
}
|
|
80
90
|
},
|
|
81
|
-
onSorterChanged:
|
|
91
|
+
onSorterChanged: () => {},
|
|
82
92
|
onUserSelected: {
|
|
83
|
-
single:
|
|
93
|
+
single: () => {}
|
|
84
94
|
},
|
|
85
95
|
sorter: {
|
|
86
96
|
propertyName: 'modified'
|
|
@@ -181,7 +191,7 @@ export function defaultProps() {
|
|
|
181
191
|
filter: {
|
|
182
192
|
type: UserWorkspaceFilterTypes.ALL
|
|
183
193
|
},
|
|
184
|
-
getTranslatedRoleName:
|
|
194
|
+
getTranslatedRoleName: name => name,
|
|
185
195
|
}
|
|
186
196
|
};
|
|
187
197
|
}
|
|
@@ -215,3 +225,13 @@ export function propsWithNoUsersWithTextSearch() {
|
|
|
215
225
|
}
|
|
216
226
|
};
|
|
217
227
|
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Props with no users using the text search
|
|
231
|
+
* @returns {any}
|
|
232
|
+
*/
|
|
233
|
+
export function propsWithFirstUserAttentionRequired() {
|
|
234
|
+
const props = defaultProps();
|
|
235
|
+
props.userWorkspaceContext.filteredUsers[0].pending_account_recovery_request = true;
|
|
236
|
+
return props;
|
|
237
|
+
}
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import {
|
|
20
|
-
|
|
21
|
-
defaultProps,
|
|
20
|
+
defaultContext,
|
|
21
|
+
defaultProps, propsWithFirstUserAttentionRequired,
|
|
22
22
|
propsWithNoUsersWithTextSearch,
|
|
23
23
|
propsWithNullUsers
|
|
24
24
|
} from "./DisplayUsers.test.data";
|
|
@@ -31,7 +31,7 @@ beforeEach(() => {
|
|
|
31
31
|
|
|
32
32
|
describe("Display Users", () => {
|
|
33
33
|
let page; // The page to test against
|
|
34
|
-
const context =
|
|
34
|
+
const context = defaultContext(); // The applicative context
|
|
35
35
|
const props = defaultProps(); // The props to pass
|
|
36
36
|
|
|
37
37
|
describe("As LU, I should see the appropriate list of users", () => {
|
|
@@ -54,6 +54,13 @@ describe("Display Users", () => {
|
|
|
54
54
|
expect(page.user(1).username).toBe('carol@passbolt.com');
|
|
55
55
|
expect(page.user(2).username).toBe('dame@passbolt.com');
|
|
56
56
|
});
|
|
57
|
+
|
|
58
|
+
it('AS LU, I should see the appropriate filtered list of users with a user attention required', async() => {
|
|
59
|
+
page = new DisplayUsersPage(context, propsWithFirstUserAttentionRequired());
|
|
60
|
+
await waitFor(() => {});
|
|
61
|
+
expect(page.usersCount).toBe(2);
|
|
62
|
+
expect(page.user(1).attentionRequired).toBeTruthy();
|
|
63
|
+
});
|
|
57
64
|
});
|
|
58
65
|
|
|
59
66
|
describe('As LU, I should select users', () => {
|
|
@@ -81,6 +88,12 @@ describe("Display Users", () => {
|
|
|
81
88
|
page = new DisplayUsersPage(context, props);
|
|
82
89
|
});
|
|
83
90
|
|
|
91
|
+
it('As AD, I should sort the users by attention required', async() => {
|
|
92
|
+
jest.spyOn(props.userWorkspaceContext, 'onSorterChanged').mockImplementationOnce(() => {});
|
|
93
|
+
await page.sortByAttentionRequired();
|
|
94
|
+
expect(props.userWorkspaceContext.onSorterChanged).toHaveBeenCalledWith('attentionRequired');
|
|
95
|
+
});
|
|
96
|
+
|
|
84
97
|
it('As LU, I should sort the users by fullname', async() => {
|
|
85
98
|
jest.spyOn(props.userWorkspaceContext, 'onSorterChanged').mockImplementationOnce(() => {});
|
|
86
99
|
await page.sortByFullname();
|
|
@@ -76,6 +76,9 @@ export default class DisplayUsersPage {
|
|
|
76
76
|
get username() {
|
|
77
77
|
return element.querySelector('.username div').textContent;
|
|
78
78
|
},
|
|
79
|
+
get attentionRequired() {
|
|
80
|
+
return Boolean(element.querySelector('.attention-required .exclamation'));
|
|
81
|
+
},
|
|
79
82
|
async select() {
|
|
80
83
|
const leftClick = {button: 0};
|
|
81
84
|
fireEvent.click(element, leftClick);
|
|
@@ -87,18 +90,28 @@ export default class DisplayUsersPage {
|
|
|
87
90
|
/**
|
|
88
91
|
* Sort the users by their full name
|
|
89
92
|
*/
|
|
90
|
-
async
|
|
93
|
+
async sortByAttentionRequired() {
|
|
91
94
|
const element = this._page.container.querySelectorAll('thead th a')[0];
|
|
92
95
|
const leftClick = {button: 0};
|
|
93
96
|
fireEvent.click(element, leftClick);
|
|
94
97
|
await waitFor(() => {});
|
|
95
98
|
}
|
|
96
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Sort the users by their full name
|
|
102
|
+
*/
|
|
103
|
+
async sortByFullname() {
|
|
104
|
+
const element = this._page.container.querySelectorAll('thead th a')[1];
|
|
105
|
+
const leftClick = {button: 0};
|
|
106
|
+
fireEvent.click(element, leftClick);
|
|
107
|
+
await waitFor(() => {});
|
|
108
|
+
}
|
|
109
|
+
|
|
97
110
|
/**
|
|
98
111
|
* Sort the users by their username
|
|
99
112
|
*/
|
|
100
113
|
async sortByUsername() {
|
|
101
|
-
const element = this._page.container.querySelectorAll('thead th a')[
|
|
114
|
+
const element = this._page.container.querySelectorAll('thead th a')[2];
|
|
102
115
|
const leftClick = {button: 0};
|
|
103
116
|
fireEvent.click(element, leftClick);
|
|
104
117
|
await waitFor(() => {});
|
|
@@ -108,7 +121,7 @@ export default class DisplayUsersPage {
|
|
|
108
121
|
* Sort the users by role
|
|
109
122
|
*/
|
|
110
123
|
async sortByRole() {
|
|
111
|
-
const element = this._page.container.querySelectorAll('thead th a')[
|
|
124
|
+
const element = this._page.container.querySelectorAll('thead th a')[3];
|
|
112
125
|
const leftClick = {button: 0};
|
|
113
126
|
fireEvent.click(element, leftClick);
|
|
114
127
|
await waitFor(() => {});
|
|
@@ -118,7 +131,7 @@ export default class DisplayUsersPage {
|
|
|
118
131
|
* Sort the users by their last date of modification
|
|
119
132
|
*/
|
|
120
133
|
async sortByModified() {
|
|
121
|
-
const element = this._page.container.querySelectorAll('thead th a')[
|
|
134
|
+
const element = this._page.container.querySelectorAll('thead th a')[4];
|
|
122
135
|
const leftClick = {button: 0};
|
|
123
136
|
fireEvent.click(element, leftClick);
|
|
124
137
|
await waitFor(() => {});
|
|
@@ -128,7 +141,7 @@ export default class DisplayUsersPage {
|
|
|
128
141
|
* Sort the users by their last date of login
|
|
129
142
|
*/
|
|
130
143
|
async sortByLastLoggedIn() {
|
|
131
|
-
const element = this._page.container.querySelectorAll('thead th a')[
|
|
144
|
+
const element = this._page.container.querySelectorAll('thead th a')[5];
|
|
132
145
|
const leftClick = {button: 0};
|
|
133
146
|
fireEvent.click(element, leftClick);
|
|
134
147
|
await waitFor(() => {});
|
|
@@ -138,7 +151,7 @@ export default class DisplayUsersPage {
|
|
|
138
151
|
* Sort the users by their mfa enable status
|
|
139
152
|
*/
|
|
140
153
|
async sortByMFAEnabled() {
|
|
141
|
-
const element = this._page.container.querySelectorAll('thead th a')[
|
|
154
|
+
const element = this._page.container.querySelectorAll('thead th a')[6];
|
|
142
155
|
const leftClick = {button: 0};
|
|
143
156
|
fireEvent.click(element, leftClick);
|
|
144
157
|
await waitFor(() => {});
|