passbolt-styleguide 3.8.4 → 3.9.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 +3 -3
- 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 -3
- package/build/css/themes/default/api_reports.min.css +3 -3
- package/build/css/themes/default/api_webinstaller.min.css +3 -3
- package/build/css/themes/default/ext_app.min.css +3 -3
- 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 -3
- package/build/css/themes/midgar/api_reports.min.css +3 -3
- package/build/css/themes/midgar/ext_app.min.css +3 -3
- 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/css/themes/solarized_dark/api_authentication.min.css +1 -1
- package/build/css/themes/solarized_dark/api_main.min.css +1 -1
- package/build/css/themes/solarized_dark/api_reports.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_app.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_authentication.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_in_form_cta.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_in_form_menu.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_quickaccess.min.css +1 -1
- package/build/css/themes/solarized_light/api_authentication.min.css +1 -1
- package/build/css/themes/solarized_light/api_main.min.css +1 -1
- package/build/css/themes/solarized_light/api_reports.min.css +1 -1
- package/build/css/themes/solarized_light/ext_app.min.css +1 -1
- package/build/css/themes/solarized_light/ext_authentication.min.css +1 -1
- package/build/css/themes/solarized_light/ext_in_form_cta.min.css +1 -1
- package/build/css/themes/solarized_light/ext_in_form_menu.min.css +1 -1
- package/build/css/themes/solarized_light/ext_quickaccess.min.css +1 -1
- 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 +75 -5
- package/build/js/dist/api-feedback.js +2 -0
- package/build/js/dist/api-feedback.js.LICENSE.txt +45 -0
- 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 +19 -9
- package/build/js/dist/src/locales/de-DE/common.json +995 -0
- package/build/js/dist/src/locales/en-UK/common.json +1061 -0
- package/build/js/dist/src/locales/es-ES/common.json +995 -0
- package/build/js/dist/src/locales/fr-FR/common.json +995 -0
- package/build/js/dist/src/locales/ja-JP/common.json +980 -0
- package/build/js/dist/src/locales/lt-LT/common.json +1025 -0
- package/build/js/dist/src/locales/nl-NL/common.json +995 -0
- package/build/js/dist/src/locales/pl-PL/common.json +1025 -0
- package/build/js/dist/src/locales/sv-SE/common.json +995 -0
- package/package.json +18 -1
- package/src/img/controls/attention.svg +1 -0
- package/src/locales/en-UK/common.json +80 -16
- package/src/react-extension/ApiApp.js +17 -5
- package/src/react-extension/ApiFeedback.entry.js +24 -0
- package/src/react-extension/ExtApp.js +12 -5
- package/src/react-extension/ExtAuthenticationLogin.js +17 -15
- package/src/react-extension/ExtAuthenticationLogin.test.stories.js +59 -0
- package/src/react-extension/ExtBootstrapApp.js +1 -0
- package/src/react-extension/components/Administration/AdministrationWorkspace.js +24 -0
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.data.js +3 -3
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.js +13 -1
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.page.js +7 -0
- package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.js +101 -0
- package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.test.data.js +23 -0
- package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.test.stories.js +27 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.js +1 -1
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +78 -2
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.data.js +3 -1
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.js +60 -0
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.page.js +23 -4
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationInternationalisationActions/DisplayAdministrationInternationalisationActions.js +125 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationMfaActions/DisplayAdministrationMfaActions.js +131 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSelfRegistrationActions/DisplayAdministrationSelfRegistrationActions.js +103 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSsoActions/DisplayAdministrationSsoActions.js +91 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSubscriptionActions/DisplayAdministrationSubscriptionActions.js +85 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationUserDirectoryActions/DisplayAdministrationUserDirectoryActions.js +228 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +4 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +9 -0
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +3 -3
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.data.js +14 -0
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.page.js +0 -17
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.js +18 -115
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.data.js +11 -13
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.js +38 -43
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.page.js +47 -10
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.stories.js +10 -43
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.js +82 -367
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.data.js +128 -42
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.js +75 -121
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.page.js +46 -16
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +18 -14
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.js +103 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.js +53 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.page.js +81 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.stories.js +34 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.js +125 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.data.js +63 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.js +54 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.page.js +88 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.stories.js +35 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.js +381 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.data.js +69 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.js +332 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.page.js +247 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.stories.js +72 -0
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +19 -19
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.data.js +1717 -1729
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +11 -3
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.page.js +4 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +11 -1784
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +41 -140
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +15 -3
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +22 -49
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.page.js +19 -11
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.stories.js +9 -3
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +5 -6
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.data.js +1717 -1728
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +11 -3
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.page.js +4 -1
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.stories.js +11 -1784
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +362 -835
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data.js +427 -418
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.js +134 -175
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.page.js +108 -11
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +17 -25
- package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +4 -2
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +3 -3
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.js +1 -1
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.js +32 -7
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.data.js +0 -3
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.js +145 -1
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.page.js +52 -1
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.stories.js +15 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.js +340 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.data.js +56 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.js +223 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.page.js +235 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.stories.js +55 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/SsoProviders.data.js +34 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.js +12 -3
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.test.js +27 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.page.js +8 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.js +197 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.data.js +37 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.js +187 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.page.js +120 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.stories.js +31 -0
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +9 -5
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.data.js +4 -0
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.js +11 -42
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.page.js +1 -0
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +9 -5
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.data.js +4 -0
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.js +16 -2
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.page.js +17 -1
- package/src/react-extension/components/AuthenticationLogin/Login/Login.js +159 -61
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.data.js +14 -11
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.js +79 -0
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.page.js +16 -0
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain.js +2 -0
- package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +4 -0
- package/src/react-extension/components/Common/Error/ApiError/ApiError.js +119 -0
- package/src/react-extension/components/Common/Error/ApiError/ApiError.test.js +43 -0
- package/src/react-extension/components/Common/Error/ApiError/ApiError.test.page.js +108 -0
- package/src/react-extension/components/Common/Error/ApiError/ApiError.test.stories.js +39 -0
- package/src/react-extension/components/Common/Inputs/Autocomplete/Autocomplete.test.js +12 -0
- package/src/react-extension/components/Common/Inputs/Autocomplete/AutocompleteItem.js +2 -2
- package/src/react-extension/components/Common/Legacy/HandleLegacyAppjs.js +1 -1
- package/src/react-extension/components/Common/Navigation/Header/Logo.js +13 -1
- package/src/react-extension/components/Resource/CreateResource/CreateResource.js +103 -30
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.js +44 -10
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.page.js +35 -7
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +3 -3
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesListContextualMenu.js +6 -5
- package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.js +5 -4
- package/src/react-extension/components/Resource/EditResource/EditResource.js +95 -23
- package/src/react-extension/components/Resource/EditResource/EditResource.test.js +45 -13
- package/src/react-extension/components/Resource/EditResource/EditResource.test.page.js +35 -2
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetails.js +2 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.js +3 -2
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +23 -2
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.js +8 -0
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.page.js +26 -2
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +22 -1
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.js +8 -0
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.page.js +25 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetails.js +2 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.js +2 -1
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +14 -1
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.js +8 -0
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.page.js +12 -0
- package/src/react-extension/components/User/CreateUser/CreateUser.js +42 -3
- package/src/react-extension/components/User/CreateUser/CreateUser.test.js +16 -0
- package/src/react-extension/components/User/CreateUser/CreateUser.test.page.js +26 -0
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +2 -1
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.js +5 -5
- package/src/react-extension/components/User/EditUser/EditUser.js +29 -2
- package/src/react-extension/components/User/EditUser/EditUser.test.js +12 -0
- package/src/react-extension/components/User/EditUser/EditUser.test.page.js +26 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.js +2 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.test.data.js +1332 -1331
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.js +2 -1
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +19 -1
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.js +9 -0
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.page.js +12 -0
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.js +2 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +16 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.js +8 -0
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.page.js +26 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +6 -4
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +4 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +21 -11
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.page.js +10 -1
- package/src/react-extension/contexts/AdminSmtpSettingsContext.js +2 -0
- package/src/react-extension/contexts/AdminSmtpSettingsContext.test.data.js +13 -0
- package/src/react-extension/contexts/AdminSmtpSettingsContext.test.js +3 -1
- package/src/react-extension/contexts/AdminSsoContext.js +558 -0
- package/src/react-extension/contexts/AdminSsoContext.test.data.js +51 -0
- package/src/react-extension/contexts/Administration/AdministrationInternationalizationContext/AdministrationInternationalizationContext.js +194 -0
- package/src/react-extension/contexts/Administration/AdministrationInternationalizationContext/AdministrationInternationalizationContext.test.js +111 -0
- package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.js +265 -0
- package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.test.js +178 -0
- package/src/react-extension/contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext.js +453 -0
- package/src/react-extension/contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext.test.js +218 -0
- package/src/react-extension/contexts/Administration/AdministrationSubscription/AdministrationSubscription.js +168 -0
- package/src/react-extension/contexts/Administration/AdministrationSubscription/AdministrationSubscription.test.js +73 -0
- package/src/react-extension/contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext.js +353 -0
- package/src/react-extension/contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext.test.js +220 -0
- package/src/react-extension/contexts/AdministrationWorkspaceContext.js +17 -178
- package/src/react-extension/contexts/AdministrationWorkspaceContext.test.js +0 -26
- package/src/react-extension/contexts/ApiAppContext.test.data.js +4 -2
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.js +54 -4
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.data.js +10 -1
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.js +92 -14
- package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.js +1 -0
- package/src/react-extension/contexts/NavigationContext.js +34 -0
- package/src/react-extension/contexts/SsoContext.js +151 -0
- package/src/react-extension/contexts/SsoContext.test.data.js +36 -0
- package/src/react-extension/contexts/SsoContext.test.js +104 -0
- package/src/react-extension/lib/Domain/DomainUtil.js +70 -0
- package/src/react-extension/lib/Domain/DomainUtil.test.js +129 -0
- package/src/react-extension/lib/Domain/Domains.js +6113 -0
- package/src/react-extension/lib/Error/InputValidator.js +24 -0
- package/src/react-extension/lib/Map/DynamicRef.js +49 -0
- package/src/react-extension/lib/Map/DynamicRef.test.js +56 -0
- package/src/react-extension/lib/Map/MapObject.js +48 -0
- package/src/react-extension/lib/Map/MapObject.test.js +43 -0
- package/src/react-quickaccess/ExtQuickAccess.js +7 -4
- package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.js +3 -1
- package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.data.js +4 -0
- package/src/react-quickaccess/components/LoginPage/LoginPage.js +115 -4
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.data.js +10 -0
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +30 -3
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +33 -1
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +25 -0
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.js +60 -0
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.page.js +60 -0
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +33 -1
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +36 -7
- package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.js +3 -2
- package/src/react-quickaccess/contexts/SsoContext.js +150 -0
- package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +5 -0
- package/src/shared/constants/inputs.const.js +30 -0
- package/src/shared/lib/Browser/clipBoard.js +45 -0
- package/src/shared/lib/Browser/clipBoard.test.js +59 -0
- package/src/shared/models/Mfa/Duo.js +36 -0
- package/src/shared/models/Mfa/Duo.test.js +59 -0
- package/src/shared/models/Mfa/MfaDTO.js +51 -0
- package/src/shared/models/Mfa/MfaDTO.test.js +48 -0
- package/src/shared/models/Mfa/MfaEnumeration.js +17 -0
- package/src/shared/models/Mfa/MfaModel.js +48 -0
- package/src/shared/models/Mfa/MfaModel.test.js +37 -0
- package/src/shared/models/Mfa/Yubikey.js +35 -0
- package/src/shared/models/Mfa/Yubikey.test.js +47 -0
- package/src/shared/models/selfRegistration/SelfRegistrationDomainsViewModel.js +55 -0
- package/src/shared/models/selfRegistration/SelfRegistrationDomainsViewModel.test.js +37 -0
- package/src/shared/models/selfRegistration/SelfRegistrationDto.js +42 -0
- package/src/shared/models/selfRegistration/SelfRegistrationDto.test.js +48 -0
- package/src/shared/models/selfRegistration/SelfRegistrationEnumeration.js +17 -0
- package/src/shared/models/subscription/SubscriptionDto.js +34 -0
- package/src/shared/models/subscription/SubscriptionDto.test.js +31 -0
- package/src/shared/models/subscription/SubscriptionModel.js +33 -0
- package/src/shared/models/subscription/SubscriptionModel.test.js +48 -0
- package/src/shared/models/user/UserModel.js +37 -0
- package/src/shared/models/userDirectory/UserDirectoryDTO.js +57 -0
- package/src/shared/models/userDirectory/UserDirectoryDTO.test.js +40 -0
- package/src/shared/models/userDirectory/UserDirectoryEnum.js +22 -0
- package/src/shared/models/userDirectory/UserDirectoryModel.js +64 -0
- package/src/shared/models/userDirectory/UserDirectoryModel.test.js +37 -0
- package/src/shared/services/actions/subscription/SubscriptionActionService.js +69 -0
- package/src/shared/services/actions/subscription/SubscriptionActionService.test.js +73 -0
- package/src/shared/services/api/Internationalisation/InternationalisationService.js +46 -0
- package/src/shared/services/api/Mfa/MfaService.js +54 -0
- package/src/shared/services/{accountRecovery → api/accountRecovery}/ApiAppAccountRecoveryUserService.js +2 -2
- package/src/shared/services/{accountRecovery → api/accountRecovery}/ExtAppAccountRecoveryUserService.js +0 -0
- package/src/shared/services/api/secrets/pownedService.js +64 -0
- package/src/shared/services/api/secrets/pownedService.test.js +63 -0
- package/src/shared/services/api/selfRegistration/selfRegistrationService.js +64 -0
- package/src/shared/services/api/user/UserService.js +45 -0
- package/src/shared/services/api/userDirectory/UserDirectoryService.js +108 -0
- package/src/shared/services/forms/Mfa/MfaFormService.js +195 -0
- package/src/shared/services/forms/Mfa/MfaFormService.test.js +341 -0
- package/src/shared/services/forms/selfRegistration/SelfRegistrationFormService.js +92 -0
- package/src/shared/services/forms/selfRegistration/SelfRegistrationFormService.test.js +101 -0
- package/src/shared/services/forms/userDirectory/UserDirectoryFormService.js +118 -0
- package/src/shared/services/forms/userDirectory/UserDirectoryFormService.test.js +128 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.js +0 -205
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.data.js +0 -37
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.js +0 -197
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.page.js +0 -133
|
@@ -0,0 +1,194 @@
|
|
|
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.8.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import React from "react";
|
|
16
|
+
import PropTypes from "prop-types";
|
|
17
|
+
import {withAppContext} from "../../AppContext";
|
|
18
|
+
import InternationalisationService from '../../../../shared/services/api/Internationalisation/InternationalisationService';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The Administration Internationalization Context
|
|
22
|
+
* @type {React.Context<Object>}
|
|
23
|
+
*/
|
|
24
|
+
export const AdminInternationalizationContext = React.createContext({
|
|
25
|
+
getCurrentLocale: () => {}, // Returns settings saved
|
|
26
|
+
getLocale: () => {}, // Returns settings for UI changes
|
|
27
|
+
supportedLocales: () => {}, // Return supported locales
|
|
28
|
+
setLocale: () => {}, // Set the settings object with changes
|
|
29
|
+
hasLocaleChanges: () => {}, // Check if the settings has changes
|
|
30
|
+
findLocale: () => {}, // Find the current Internalisation settings and store it in the state
|
|
31
|
+
save: () => {}, // Save settings
|
|
32
|
+
setProcessing: () => {}, //Update processing object
|
|
33
|
+
isProcessing: () => {}, // returns true if a process is running and the UI must be disabled
|
|
34
|
+
clearContext: () => {}, // put the data to its default state value
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The Administration Internationalization context provider
|
|
39
|
+
*/
|
|
40
|
+
export class AdminInternationalizationContextProvider extends React.Component {
|
|
41
|
+
/**
|
|
42
|
+
* Default constructor
|
|
43
|
+
* @param props The component props
|
|
44
|
+
*/
|
|
45
|
+
constructor(props) {
|
|
46
|
+
super(props);
|
|
47
|
+
this.state = this.defaultState;
|
|
48
|
+
const apiClientOptions = props.context.getApiClientOptions();
|
|
49
|
+
this.internalisationService = new InternationalisationService(apiClientOptions);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Returns the default component state
|
|
54
|
+
*/
|
|
55
|
+
get defaultState() {
|
|
56
|
+
return {
|
|
57
|
+
currentLocale: null, // The current locale
|
|
58
|
+
locale: "en-UK", // Change done to the current
|
|
59
|
+
processing: true, // Context is processing data
|
|
60
|
+
getCurrentLocale: this.getCurrentLocale.bind(this), // Returns locale saved
|
|
61
|
+
getLocale: this.getLocale.bind(this), // Returns locale for UI changes
|
|
62
|
+
setLocale: this.setLocale.bind(this), // Set the locale with changes
|
|
63
|
+
findLocale: this.findLocale.bind(this), // Find the current settings and store it in the state
|
|
64
|
+
hasLocaleChanges: this.hasLocaleChanges.bind(this), // Check if locale has changes
|
|
65
|
+
isProcessing: this.isProcessing.bind(this), // returns true if a process is running and the UI must be disabled
|
|
66
|
+
setProcessing: this.setProcessing.bind(this),
|
|
67
|
+
save: this.save.bind(this), // Save the policy changes
|
|
68
|
+
clearContext: this.clearContext.bind(this), // put the data to its default state value
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Find locale from API
|
|
74
|
+
* @returns {string}
|
|
75
|
+
*/
|
|
76
|
+
findLocale() {
|
|
77
|
+
this.setProcessing(true);
|
|
78
|
+
const result = this.props.context.siteSettings.locale;
|
|
79
|
+
//Init saved locale
|
|
80
|
+
this.setState({currentLocale: result});
|
|
81
|
+
//Init locale which will interact with UI
|
|
82
|
+
this.setState({locale: result});
|
|
83
|
+
|
|
84
|
+
this.setProcessing(false);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Returns the locale actually saved
|
|
89
|
+
* @returns {object}
|
|
90
|
+
*/
|
|
91
|
+
getCurrentLocale() {
|
|
92
|
+
return this.state.currentLocale;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Returns the locale that have been fetch previously.
|
|
97
|
+
* @returns {object}
|
|
98
|
+
*/
|
|
99
|
+
getLocale() {
|
|
100
|
+
return this.state.locale;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Handle locale changes.
|
|
105
|
+
* @params {ReactEvent} The react event
|
|
106
|
+
* @returns {void}
|
|
107
|
+
*/
|
|
108
|
+
async setLocale(locale) {
|
|
109
|
+
await this.setState({locale});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Returns true when the data is under processing
|
|
114
|
+
* @returns {boolean}
|
|
115
|
+
*
|
|
116
|
+
*/
|
|
117
|
+
isProcessing() {
|
|
118
|
+
return this.state.processing;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Handle processing change.
|
|
123
|
+
* @params {Boolean} processing value
|
|
124
|
+
* @returns {void}
|
|
125
|
+
*/
|
|
126
|
+
setProcessing(processing) {
|
|
127
|
+
this.setState({processing});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Check if there are changes to apply
|
|
132
|
+
* @returns {Boolean}
|
|
133
|
+
*/
|
|
134
|
+
hasLocaleChanges() {
|
|
135
|
+
return this.state.locale !== this.state.currentLocale;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Puts the state to its default in order to avoid keeping the data users didn't want to save.
|
|
140
|
+
*/
|
|
141
|
+
clearContext() {
|
|
142
|
+
const {currentLocale, locale, processing} = this.defaultState;
|
|
143
|
+
this.setState({
|
|
144
|
+
currentLocale, locale, processing
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Whenever the save has been requested
|
|
150
|
+
*/
|
|
151
|
+
async save() {
|
|
152
|
+
this.setProcessing(true);
|
|
153
|
+
await this.internalisationService.save({value: this.state.locale});
|
|
154
|
+
this.props.context.onRefreshLocaleRequested(this.state.locale);
|
|
155
|
+
this.findLocale();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Render the component
|
|
160
|
+
* @returns {JSX}
|
|
161
|
+
*/
|
|
162
|
+
render() {
|
|
163
|
+
return (
|
|
164
|
+
<AdminInternationalizationContext.Provider value={this.state}>
|
|
165
|
+
{this.props.children}
|
|
166
|
+
</AdminInternationalizationContext.Provider>
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
AdminInternationalizationContextProvider.propTypes = {
|
|
172
|
+
context: PropTypes.any, // The application context
|
|
173
|
+
children: PropTypes.any, // The children components
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
export default withAppContext(AdminInternationalizationContextProvider);
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Resource Workspace Context Consumer HOC
|
|
180
|
+
* @param WrappedComponent
|
|
181
|
+
*/
|
|
182
|
+
export function withAdminInternationalization(WrappedComponent) {
|
|
183
|
+
return class WithAdminInternationalization extends React.Component {
|
|
184
|
+
render() {
|
|
185
|
+
return (
|
|
186
|
+
<AdminInternationalizationContext.Consumer>
|
|
187
|
+
{
|
|
188
|
+
adminInternationalizationContext => <WrappedComponent adminInternationalizationContext={adminInternationalizationContext} {...this.props} />
|
|
189
|
+
}
|
|
190
|
+
</AdminInternationalizationContext.Consumer>
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
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.8.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {defaultLocale, defaultProps} from "../../../../react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.data";
|
|
16
|
+
import {AdminInternationalizationContextProvider} from './AdministrationInternationalizationContext';
|
|
17
|
+
import {mockApiResponse} from '../../../../../test/mocks/mockApiResponse';
|
|
18
|
+
import {enableFetchMocks} from 'jest-fetch-mock';
|
|
19
|
+
|
|
20
|
+
const frLocale = "fr-Fr";
|
|
21
|
+
|
|
22
|
+
describe("AdministrationInternationalizationContext", () => {
|
|
23
|
+
let adminInternationalizationContext; // The AdministrationInternationalizationContext to test
|
|
24
|
+
const props = defaultProps(); // The props to pass
|
|
25
|
+
|
|
26
|
+
beforeEach(() => {
|
|
27
|
+
jest.resetAllMocks();
|
|
28
|
+
adminInternationalizationContext = new AdminInternationalizationContextProvider(props);
|
|
29
|
+
const setStateMock = state => adminInternationalizationContext.state = Object.assign(adminInternationalizationContext.state, state);
|
|
30
|
+
jest.spyOn(adminInternationalizationContext, "setState").mockImplementation(setStateMock);
|
|
31
|
+
enableFetchMocks();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
describe("AdministrationInternationalizationContext::findLocale", () => {
|
|
36
|
+
it("should get the current locale and store it in its state", async() => {
|
|
37
|
+
await adminInternationalizationContext.findLocale();
|
|
38
|
+
|
|
39
|
+
expect.assertions(3);
|
|
40
|
+
|
|
41
|
+
expect(adminInternationalizationContext.getLocale()).toEqual(defaultLocale);
|
|
42
|
+
expect(adminInternationalizationContext.getCurrentLocale()).toEqual(defaultLocale);
|
|
43
|
+
expect(adminInternationalizationContext.isProcessing()).toBeFalsy();
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
describe("AdministrationInternationalizationContext::hasLocaleChanges", () => {
|
|
49
|
+
it("should return true if settings is different then current setting", () => {
|
|
50
|
+
adminInternationalizationContext.setLocale(frLocale);
|
|
51
|
+
|
|
52
|
+
expect.assertions(1);
|
|
53
|
+
|
|
54
|
+
expect(adminInternationalizationContext.hasLocaleChanges()).toBeTruthy();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it("should return false if settings is different then current setting", async() => {
|
|
58
|
+
await adminInternationalizationContext.findLocale();
|
|
59
|
+
|
|
60
|
+
adminInternationalizationContext.setLocale(frLocale);
|
|
61
|
+
adminInternationalizationContext.setLocale(defaultLocale);
|
|
62
|
+
|
|
63
|
+
expect.assertions(1);
|
|
64
|
+
|
|
65
|
+
expect(adminInternationalizationContext.hasLocaleChanges()).toBeFalsy();
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
describe("AdministrationInternationalizationContext::clearContext", () => {
|
|
71
|
+
it("should clear the context and set it by default", () => {
|
|
72
|
+
adminInternationalizationContext.setLocale(frLocale);
|
|
73
|
+
|
|
74
|
+
adminInternationalizationContext.clearContext();
|
|
75
|
+
|
|
76
|
+
expect.assertions(3);
|
|
77
|
+
|
|
78
|
+
expect(adminInternationalizationContext.isProcessing()).toBeTruthy();
|
|
79
|
+
expect(adminInternationalizationContext.getCurrentLocale()).toBe(null);
|
|
80
|
+
expect(adminInternationalizationContext.getLocale()).toBe(defaultLocale);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
describe("AdministrationInternationalizationContext::setLocale", () => {
|
|
85
|
+
it("should update locale object and not the current object", async() => {
|
|
86
|
+
await adminInternationalizationContext.findLocale();
|
|
87
|
+
adminInternationalizationContext.setLocale(frLocale);
|
|
88
|
+
|
|
89
|
+
expect.assertions(2);
|
|
90
|
+
|
|
91
|
+
expect(adminInternationalizationContext.getCurrentLocale()).toBe(defaultLocale);
|
|
92
|
+
expect(adminInternationalizationContext.getLocale()).toBe(frLocale);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
describe("AdministrationInternationalizationContext::save", () => {
|
|
97
|
+
it("should save locale and refresh texts", async() => {
|
|
98
|
+
fetch.doMockOnceIf(/locale\/settings/, () => mockApiResponse({}));
|
|
99
|
+
const findLocale = jest.spyOn(adminInternationalizationContext, "findLocale").mockImplementation();
|
|
100
|
+
|
|
101
|
+
await adminInternationalizationContext.save();
|
|
102
|
+
|
|
103
|
+
expect.assertions(3);
|
|
104
|
+
|
|
105
|
+
expect(adminInternationalizationContext.isProcessing()).toBeTruthy();
|
|
106
|
+
expect(findLocale).toHaveBeenCalled();
|
|
107
|
+
expect(JSON.parse(fetch.mock.calls[0][1].body)).toEqual({value: defaultLocale});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.js
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
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.8.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import React from "react";
|
|
16
|
+
import PropTypes from "prop-types";
|
|
17
|
+
import {withAppContext} from "../../AppContext";
|
|
18
|
+
import MfaModel from '../../../../shared/models/Mfa/MfaModel';
|
|
19
|
+
import MfaDTO from '../../../../shared/models/Mfa/MfaDTO';
|
|
20
|
+
import MfaService from "../../../../shared/services/api/Mfa/MfaService";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The Administration Email Notification Context
|
|
24
|
+
* @type {React.Context<Object>}
|
|
25
|
+
*/
|
|
26
|
+
export const AdminMfaContext = React.createContext({
|
|
27
|
+
getCurrentSettings: () => {}, // Returns settings saved
|
|
28
|
+
getSettings: () => {}, // Returns settings for UI changes
|
|
29
|
+
setSettings: () => {}, // Set the settings object with changes
|
|
30
|
+
hasSettingsChanges: () => {}, // Check if the policy has changes
|
|
31
|
+
findMfaSettings: () => {}, // Find the current Mfa settings and store it in the state
|
|
32
|
+
save: () => {}, // Save settings
|
|
33
|
+
setProcessing: () => {}, //Update processing object
|
|
34
|
+
isProcessing: () => {}, // returns true if a process is running and the UI must be disabled
|
|
35
|
+
getErrors: () => {}, // Return current errors
|
|
36
|
+
setError: () => {}, // Init errors object message
|
|
37
|
+
isSubmitted: () => {}, // returns the value submitted
|
|
38
|
+
setSubmitted: () => {}, // Set the submitted variab
|
|
39
|
+
setErrors: () => {}, // Set errors to object object
|
|
40
|
+
clearContext: () => {}, // put the data to its default state value
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The Administration Mfa context provider
|
|
45
|
+
*/
|
|
46
|
+
export class AdminMfaContextProvider extends React.Component {
|
|
47
|
+
/**
|
|
48
|
+
* Default constructor
|
|
49
|
+
* @param props The component props
|
|
50
|
+
*/
|
|
51
|
+
constructor(props) {
|
|
52
|
+
super(props);
|
|
53
|
+
this.state = this.defaultState;
|
|
54
|
+
const apiClientOptions = props.context.getApiClientOptions();
|
|
55
|
+
this.mfaService = new MfaService(apiClientOptions);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Returns the default component state
|
|
60
|
+
*/
|
|
61
|
+
get defaultState() {
|
|
62
|
+
return {
|
|
63
|
+
errors: this.initErrors(),
|
|
64
|
+
currentSettings: null, // The current settings
|
|
65
|
+
settings: new MfaModel(), // Change done to the settings object
|
|
66
|
+
submitted: false, // The informations about the form state
|
|
67
|
+
processing: true, // Context is processing data
|
|
68
|
+
getCurrentSettings: this.getCurrentSettings.bind(this), // Returns settings saved
|
|
69
|
+
getSettings: this.getSettings.bind(this), // Returns settings for UI changes
|
|
70
|
+
setSettings: this.setSettings.bind(this), // Set the settings object with changes
|
|
71
|
+
findMfaSettings: this.findMfaSettings.bind(this), // Find the current settings and store it in the state
|
|
72
|
+
hasSettingsChanges: this.hasSettingsChanges.bind(this), // Check if setting has changes
|
|
73
|
+
isProcessing: this.isProcessing.bind(this), // returns true if a process is running and the UI must be disabled
|
|
74
|
+
isSubmitted: this.isSubmitted.bind(this), // returns the value submitted
|
|
75
|
+
setSubmitted: this.setSubmitted.bind(this), // Set the submitted variable
|
|
76
|
+
setProcessing: this.setProcessing.bind(this),
|
|
77
|
+
save: this.save.bind(this), // Save the policy changes
|
|
78
|
+
getErrors: this.getErrors.bind(this), // Return current errors
|
|
79
|
+
setError: this.setError.bind(this), // Set an error to object object
|
|
80
|
+
setErrors: this.setErrors.bind(this), // Set errors to object object
|
|
81
|
+
clearContext: this.clearContext.bind(this), // put the data to its default state value
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* init the errors object
|
|
87
|
+
* @return {Promise<void>}
|
|
88
|
+
*/
|
|
89
|
+
initErrors() {
|
|
90
|
+
return {
|
|
91
|
+
yubikeyClientIdentifierError: null, // yubikey client identifier error
|
|
92
|
+
yubikeySecretKeyError: null, // yubikey secret key error
|
|
93
|
+
duoHostnameError: null, // duo hostname error
|
|
94
|
+
duoIntegrationKeyError: null, // duo integration key error
|
|
95
|
+
duoSaltError: null, // duo salt error
|
|
96
|
+
duoSecretKeyError: null, // duo secret key error
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Find the Mfa settings
|
|
102
|
+
* @return {Promise<void>}
|
|
103
|
+
*/
|
|
104
|
+
async findMfaSettings() {
|
|
105
|
+
this.setProcessing(true);
|
|
106
|
+
const result = await this.mfaService.findAllSettings();
|
|
107
|
+
const currentSettings = new MfaModel(result);
|
|
108
|
+
//Init saved setting
|
|
109
|
+
this.setState({currentSettings});
|
|
110
|
+
//Init setting which will interact with UI
|
|
111
|
+
this.setState({settings: Object.assign({}, currentSettings)});
|
|
112
|
+
|
|
113
|
+
this.setProcessing(false);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Returns the setting actually saved inside DB
|
|
118
|
+
* @returns {object}
|
|
119
|
+
*/
|
|
120
|
+
getCurrentSettings() {
|
|
121
|
+
return this.state.currentSettings;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Returns the Mfa settings that have been fetch previously.
|
|
126
|
+
* @returns {object}
|
|
127
|
+
*/
|
|
128
|
+
getSettings() {
|
|
129
|
+
return this.state.settings;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Handle settings changes.
|
|
134
|
+
* @params {ReactEvent} The react event
|
|
135
|
+
* @returns {void}
|
|
136
|
+
*/
|
|
137
|
+
async setSettings(key, value) {
|
|
138
|
+
const newSettings = Object.assign({}, this.state.settings, {[key]: value});
|
|
139
|
+
await this.setState({settings: newSettings});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Returns true when the data is under processing
|
|
144
|
+
* @returns {boolean}
|
|
145
|
+
*
|
|
146
|
+
*/
|
|
147
|
+
isProcessing() {
|
|
148
|
+
return this.state.processing;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Handle processing change.
|
|
153
|
+
* @params {Boolean} processing value
|
|
154
|
+
* @returns {void}
|
|
155
|
+
*/
|
|
156
|
+
setProcessing(processing) {
|
|
157
|
+
this.setState({processing});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Check if there are changes to apply
|
|
162
|
+
* @returns {Boolean}
|
|
163
|
+
*/
|
|
164
|
+
hasSettingsChanges() {
|
|
165
|
+
return JSON.stringify(this.state.currentSettings) !== JSON.stringify(this.state.settings);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* return true if the form has been submitted
|
|
170
|
+
* @returns {Boolean}
|
|
171
|
+
*/
|
|
172
|
+
isSubmitted() {
|
|
173
|
+
return this.state.submitted;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* rchange value for submitted
|
|
178
|
+
* @returns {Boolean}
|
|
179
|
+
*/
|
|
180
|
+
setSubmitted(submitted) {
|
|
181
|
+
this.setState({submitted});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Puts the state to its default in order to avoid keeping the data users didn't want to save.
|
|
186
|
+
*/
|
|
187
|
+
clearContext() {
|
|
188
|
+
const {currentSettings, settings, processing} = this.defaultState;
|
|
189
|
+
this.setState({
|
|
190
|
+
currentSettings, settings, processing
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Whenever the save has been requested
|
|
196
|
+
*/
|
|
197
|
+
async save() {
|
|
198
|
+
this.setProcessing(true);
|
|
199
|
+
const newSettings = new MfaDTO(this.state.settings);
|
|
200
|
+
await this.mfaService.save(newSettings);
|
|
201
|
+
await this.findMfaSettings();
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* return the errors object
|
|
206
|
+
*/
|
|
207
|
+
getErrors() {
|
|
208
|
+
return this.state.errors;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* set an error to object
|
|
213
|
+
*/
|
|
214
|
+
setError(key, value) {
|
|
215
|
+
const errors = Object.assign({}, this.state.errors, {[key]: value});
|
|
216
|
+
this.setState({errors});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* set errors to object
|
|
222
|
+
*/
|
|
223
|
+
setErrors(newErrors, callback = () => {}) {
|
|
224
|
+
const errors = Object.assign({}, this.state.errors, newErrors);
|
|
225
|
+
return this.setState({errors}, callback);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Render the component
|
|
230
|
+
* @returns {JSX}
|
|
231
|
+
*/
|
|
232
|
+
render() {
|
|
233
|
+
return (
|
|
234
|
+
<AdminMfaContext.Provider value={this.state}>
|
|
235
|
+
{this.props.children}
|
|
236
|
+
</AdminMfaContext.Provider>
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
AdminMfaContextProvider.propTypes = {
|
|
242
|
+
context: PropTypes.any, // The application context
|
|
243
|
+
children: PropTypes.any, // The children components
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
export default withAppContext(AdminMfaContextProvider);
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Resource Workspace Context Consumer HOC
|
|
251
|
+
* @param WrappedComponent
|
|
252
|
+
*/
|
|
253
|
+
export function withAdminMfa(WrappedComponent) {
|
|
254
|
+
return class WithAdminMfa extends React.Component {
|
|
255
|
+
render() {
|
|
256
|
+
return (
|
|
257
|
+
<AdminMfaContext.Consumer>
|
|
258
|
+
{
|
|
259
|
+
adminMfaContext => <WrappedComponent adminMfaContext={adminMfaContext} {...this.props} />
|
|
260
|
+
}
|
|
261
|
+
</AdminMfaContext.Consumer>
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
}
|