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,353 @@
|
|
|
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 UserDirectoryService from '../../../../shared/services/api/userDirectory/UserDirectoryService';
|
|
19
|
+
import UserService from '../../../../shared/services/api/user/UserService';
|
|
20
|
+
import UserDirectoryModel from '../../../../shared/models/userDirectory/UserDirectoryModel';
|
|
21
|
+
import UserDirectoryDTO from '../../../../shared/models/userDirectory/UserDirectoryDTO';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The Administration user directory Context
|
|
25
|
+
* @type {React.Context<Object>}
|
|
26
|
+
*/
|
|
27
|
+
export const AdminUserDirectoryContext = React.createContext({
|
|
28
|
+
getCurrentSettings: () => {}, // Returns settings saved
|
|
29
|
+
getSettings: () => {}, // Returns settings for UI changes
|
|
30
|
+
setSettings: () => {}, // Set the settings object with changes
|
|
31
|
+
getUsers: () => {}, // Returns users for UI changes
|
|
32
|
+
hasSettingsChanges: () => {}, // Check if the policy has changes
|
|
33
|
+
findUserDirectorySettings: () => {}, // Find the current user directory settings and store it in the state
|
|
34
|
+
save: () => {}, // Save settings
|
|
35
|
+
delete: () => {}, // Save the current settings
|
|
36
|
+
test: () => {}, // Test settings method
|
|
37
|
+
setProcessing: () => {}, //Update processing object
|
|
38
|
+
isProcessing: () => {}, // returns true if a process is running and the UI must be disabled
|
|
39
|
+
getErrors: () => {}, // Return current errors
|
|
40
|
+
setError: () => {}, // Init errors object message
|
|
41
|
+
simulateUsers: () => {}, // synchronize users directory request.
|
|
42
|
+
requestSynchronization: () => {}, // request a synchronization,
|
|
43
|
+
mustOpenSynchronizePopUp: () => {}, // return the mustSynchronize value
|
|
44
|
+
synchronizeUsers: () => {}, // simulate synchronize users directory
|
|
45
|
+
isSubmitted: () => {}, // returns the value submitted
|
|
46
|
+
setSubmitted: () => {}, // Set the submitted variab
|
|
47
|
+
setErrors: () => {}, // Set errors to object object
|
|
48
|
+
clearContext: () => {}, // put the data to its default state value
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The Administration user directory context provider
|
|
53
|
+
*/
|
|
54
|
+
export class AdminUserDirectoryContextProvider extends React.Component {
|
|
55
|
+
/**
|
|
56
|
+
* Default constructor
|
|
57
|
+
* @param props The component props
|
|
58
|
+
*/
|
|
59
|
+
constructor(props) {
|
|
60
|
+
super(props);
|
|
61
|
+
this.state = this.defaultState;
|
|
62
|
+
this.userDirectoryService = new UserDirectoryService(props.context.getApiClientOptions());
|
|
63
|
+
this.userService = new UserService(props.context.getApiClientOptions());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Returns the default component state
|
|
68
|
+
*/
|
|
69
|
+
get defaultState() {
|
|
70
|
+
return {
|
|
71
|
+
users: [], //The users from server
|
|
72
|
+
errors: this.initErrors(), // The errors provided by forms
|
|
73
|
+
mustSynchronize: false, // request a synchronization with a popup
|
|
74
|
+
currentSettings: null, // The current settings
|
|
75
|
+
settings: new UserDirectoryModel(), // Change done to the settings object
|
|
76
|
+
submitted: false, // The informations about the form state
|
|
77
|
+
processing: true, // Context is processing data
|
|
78
|
+
getCurrentSettings: this.getCurrentSettings.bind(this), // Returns settings saved
|
|
79
|
+
getSettings: this.getSettings.bind(this), // Returns settings for UI changes
|
|
80
|
+
setSettings: this.setSettings.bind(this), // Set the settings object with changes
|
|
81
|
+
findUserDirectorySettings: this.findUserDirectorySettings.bind(this), // Find the current settings and store it in the state
|
|
82
|
+
hasSettingsChanges: this.hasSettingsChanges.bind(this), // Check if setting has changes
|
|
83
|
+
isProcessing: this.isProcessing.bind(this), // returns true if a process is running and the UI must be disabled
|
|
84
|
+
isSubmitted: this.isSubmitted.bind(this), // returns the value submitted
|
|
85
|
+
setSubmitted: this.setSubmitted.bind(this), // Set the submitted variable
|
|
86
|
+
setProcessing: this.setProcessing.bind(this), // Set the processing
|
|
87
|
+
simulateUsers: this.simulateUsers.bind(this), // synchronize users directory request.
|
|
88
|
+
synchronizeUsers: this.synchronizeUsers.bind(this), // simulate synchronize users directory
|
|
89
|
+
save: this.save.bind(this), // Save the policy changes
|
|
90
|
+
delete: this.delete.bind(this), // Save the current settings
|
|
91
|
+
test: this.test.bind(this), // test the settings for the user directory
|
|
92
|
+
getErrors: this.getErrors.bind(this), // Return current errors
|
|
93
|
+
setError: this.setError.bind(this), // Set an error to object object
|
|
94
|
+
setErrors: this.setErrors.bind(this), // Set errors to object object
|
|
95
|
+
getUsers: this.getUsers.bind(this), // return the users object
|
|
96
|
+
requestSynchronization: this.requestSynchronization.bind(this), // request a synchronization,
|
|
97
|
+
mustOpenSynchronizePopUp: this.mustOpenSynchronizePopUp.bind(this), // return the mustSynchronize value
|
|
98
|
+
clearContext: this.clearContext.bind(this), // put the data to its default state value
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* init the errors object
|
|
104
|
+
* @return {Promise<void>}
|
|
105
|
+
*/
|
|
106
|
+
initErrors() {
|
|
107
|
+
return {
|
|
108
|
+
hostError: null, // host error
|
|
109
|
+
portError: null, // port error
|
|
110
|
+
domainError: null, // domain error
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Find the User directory settings
|
|
116
|
+
* @return {Promise<void>}
|
|
117
|
+
*/
|
|
118
|
+
async findUserDirectorySettings() {
|
|
119
|
+
this.setProcessing(true);
|
|
120
|
+
const result = await this.userDirectoryService.findAll();
|
|
121
|
+
const usersResult = await this.userService.findAll();
|
|
122
|
+
|
|
123
|
+
const userLogged = usersResult.body.find(user => this.props.context.loggedInUser.id === user.id);
|
|
124
|
+
|
|
125
|
+
const currentSettings = new UserDirectoryModel(result, userLogged.id);
|
|
126
|
+
//Init users
|
|
127
|
+
this.setState({users: this.sortUsers(usersResult.body)});
|
|
128
|
+
//Init saved setting
|
|
129
|
+
this.setState({currentSettings});
|
|
130
|
+
//Init setting which will interact with UI
|
|
131
|
+
this.setState({settings: Object.assign({}, currentSettings)});
|
|
132
|
+
|
|
133
|
+
this.setProcessing(false);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* sort users
|
|
138
|
+
* @param {Array<User>} users
|
|
139
|
+
* @return {Promise<void>}
|
|
140
|
+
*/
|
|
141
|
+
sortUsers(users) {
|
|
142
|
+
const getUserFullName = user => `${user.profile.first_name} ${user.profile.last_name}`;
|
|
143
|
+
const nameSorter = (u1, u2) => getUserFullName(u1).localeCompare(getUserFullName(u2));
|
|
144
|
+
return users.sort(nameSorter);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Returns the setting actually saved inside DB
|
|
149
|
+
* @returns {object}
|
|
150
|
+
*/
|
|
151
|
+
getCurrentSettings() {
|
|
152
|
+
return this.state.currentSettings;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Returns the User directory settings that have been fetch previously.
|
|
157
|
+
* @returns {object}
|
|
158
|
+
*/
|
|
159
|
+
getSettings() {
|
|
160
|
+
return this.state.settings;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Request to open the synchronization popup
|
|
165
|
+
* @returns {object}
|
|
166
|
+
*/
|
|
167
|
+
requestSynchronization(result) {
|
|
168
|
+
this.setState({mustSynchronize: result});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Return the mustSynchronize value
|
|
173
|
+
* @returns {object}
|
|
174
|
+
*/
|
|
175
|
+
mustOpenSynchronizePopUp() {
|
|
176
|
+
return this.state.mustSynchronize;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Handle settings changes.
|
|
181
|
+
* @params {ReactEvent} The react event
|
|
182
|
+
* @returns {void}
|
|
183
|
+
*/
|
|
184
|
+
async setSettings(key, value) {
|
|
185
|
+
const newSettings = Object.assign({}, this.state.settings, {[key]: value});
|
|
186
|
+
await this.setState({settings: newSettings});
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Returns true when the data is under processing
|
|
191
|
+
* @returns {boolean}
|
|
192
|
+
*
|
|
193
|
+
*/
|
|
194
|
+
isProcessing() {
|
|
195
|
+
return this.state.processing;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Handle processing change.
|
|
200
|
+
* @params {Boolean} processing value
|
|
201
|
+
* @returns {void}
|
|
202
|
+
*/
|
|
203
|
+
setProcessing(processing) {
|
|
204
|
+
this.setState({processing});
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Check if there are changes to apply
|
|
209
|
+
* @returns {Boolean}
|
|
210
|
+
*/
|
|
211
|
+
hasSettingsChanges() {
|
|
212
|
+
return JSON.stringify(this.state.currentSettings) !== JSON.stringify(this.state.settings);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* return true if the form has been submitted
|
|
217
|
+
* @returns {Boolean}
|
|
218
|
+
*/
|
|
219
|
+
isSubmitted() {
|
|
220
|
+
return this.state.submitted;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* rchange value for submitted
|
|
225
|
+
* @returns {Boolean}
|
|
226
|
+
*/
|
|
227
|
+
setSubmitted(submitted) {
|
|
228
|
+
this.setState({submitted});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Puts the state to its default in order to avoid keeping the data users didn't want to save.
|
|
233
|
+
*/
|
|
234
|
+
clearContext() {
|
|
235
|
+
const {currentSettings, settings, processing} = this.defaultState;
|
|
236
|
+
this.setState({
|
|
237
|
+
currentSettings, settings, processing
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Whenever the save has been requested
|
|
243
|
+
*/
|
|
244
|
+
async save() {
|
|
245
|
+
this.setProcessing(true);
|
|
246
|
+
const newSettings = new UserDirectoryDTO(this.state.settings);
|
|
247
|
+
await this.userDirectoryService.update(newSettings);
|
|
248
|
+
await this.findUserDirectorySettings();
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Whenever the delete has been requested
|
|
253
|
+
*/
|
|
254
|
+
async delete() {
|
|
255
|
+
this.setProcessing(true);
|
|
256
|
+
await this.userDirectoryService.delete();
|
|
257
|
+
await this.findUserDirectorySettings();
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Whenever the test has been requested
|
|
262
|
+
*/
|
|
263
|
+
async test() {
|
|
264
|
+
this.setProcessing(true);
|
|
265
|
+
const newSettings = new UserDirectoryDTO(this.state.settings);
|
|
266
|
+
const result = await this.userDirectoryService.test(newSettings);
|
|
267
|
+
this.setProcessing(false);
|
|
268
|
+
return result;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Whenever the simulate users has been requested
|
|
273
|
+
*/
|
|
274
|
+
async simulateUsers() {
|
|
275
|
+
return this.userDirectoryService.simulate();
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Whenever the synchronize users has been requested
|
|
280
|
+
*/
|
|
281
|
+
async synchronizeUsers() {
|
|
282
|
+
return this.userDirectoryService.synchronize();
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* return the errors object
|
|
287
|
+
*/
|
|
288
|
+
getErrors() {
|
|
289
|
+
return this.state.errors;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* set an error to object
|
|
294
|
+
*/
|
|
295
|
+
setError(key, value) {
|
|
296
|
+
const errors = Object.assign({}, this.state.errors, {[key]: value});
|
|
297
|
+
this.setState({errors});
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* return the users object
|
|
302
|
+
*/
|
|
303
|
+
getUsers() {
|
|
304
|
+
return this.state.users;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* set errors to object
|
|
309
|
+
*/
|
|
310
|
+
setErrors(newErrors, callback = () => {}) {
|
|
311
|
+
const errors = Object.assign({}, this.state.errors, newErrors);
|
|
312
|
+
return this.setState({errors}, callback);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Render the component
|
|
317
|
+
* @returns {JSX}
|
|
318
|
+
*/
|
|
319
|
+
render() {
|
|
320
|
+
return (
|
|
321
|
+
<AdminUserDirectoryContext.Provider value={this.state}>
|
|
322
|
+
{this.props.children}
|
|
323
|
+
</AdminUserDirectoryContext.Provider>
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
AdminUserDirectoryContextProvider.propTypes = {
|
|
329
|
+
context: PropTypes.any, // The application context
|
|
330
|
+
children: PropTypes.any, // The children components
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
export default withAppContext(AdminUserDirectoryContextProvider);
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Resource Workspace Context Consumer HOC
|
|
338
|
+
* @param WrappedComponent
|
|
339
|
+
*/
|
|
340
|
+
export function withAdminUserDirectory(WrappedComponent) {
|
|
341
|
+
return class WithAdminUserDirectory extends React.Component {
|
|
342
|
+
render() {
|
|
343
|
+
return (
|
|
344
|
+
<AdminUserDirectoryContext.Consumer>
|
|
345
|
+
{
|
|
346
|
+
adminUserDirectoryContext => <WrappedComponent adminUserDirectoryContext={adminUserDirectoryContext} {...this.props} />
|
|
347
|
+
}
|
|
348
|
+
</AdminUserDirectoryContext.Consumer>
|
|
349
|
+
);
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
|
|
@@ -0,0 +1,220 @@
|
|
|
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 {defaultProps} from "../../../../react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data";
|
|
16
|
+
import {enableFetchMocks} from 'jest-fetch-mock';
|
|
17
|
+
import {AdminUserDirectoryContextProvider} from "./AdministrationUserDirectoryContext";
|
|
18
|
+
import {mockApiResponse} from '../../../../../test/mocks/mockApiResponse';
|
|
19
|
+
import {mockResult, mockUsers} from '../../../components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data';
|
|
20
|
+
import UserDirectoryModel from '../../../../shared/models/userDirectory/UserDirectoryModel';
|
|
21
|
+
import UserDirectoryDTO from '../../../../shared/models/userDirectory/UserDirectoryDTO';
|
|
22
|
+
import {mockErrors} from '../../../components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data';
|
|
23
|
+
|
|
24
|
+
describe("AdminUserDirectoryContext", () => {
|
|
25
|
+
let adminUserDirectoryContext; // The adminUserDirectoryContext to test
|
|
26
|
+
const props = defaultProps(null, mockUsers[4].id); // The props to pass
|
|
27
|
+
|
|
28
|
+
const mockApiCalls = () => {
|
|
29
|
+
fetch.doMockOnceIf(/directorysync\/settings*/, () => mockApiResponse(mockResult));
|
|
30
|
+
fetch.doMockOnceIf(/users*/, () => mockApiResponse(mockUsers));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//Initialize context by default
|
|
34
|
+
const initContext = async() => {
|
|
35
|
+
mockApiCalls();
|
|
36
|
+
await adminUserDirectoryContext.findUserDirectorySettings();
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
jest.resetAllMocks();
|
|
41
|
+
adminUserDirectoryContext = new AdminUserDirectoryContextProvider(props);
|
|
42
|
+
const setStateMock = state => adminUserDirectoryContext.state = Object.assign(adminUserDirectoryContext.state, state);
|
|
43
|
+
jest.spyOn(adminUserDirectoryContext, "setState").mockImplementation(setStateMock);
|
|
44
|
+
enableFetchMocks();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
describe("AdminUserDirectoryContext::findUserDirectorySettings", () => {
|
|
48
|
+
it("should get the current settings and store it in its state", async() => {
|
|
49
|
+
// Mock the call to API
|
|
50
|
+
mockApiCalls();
|
|
51
|
+
const expectedResult = new UserDirectoryModel(mockResult);
|
|
52
|
+
await adminUserDirectoryContext.findUserDirectorySettings();
|
|
53
|
+
|
|
54
|
+
expect.assertions(3);
|
|
55
|
+
|
|
56
|
+
expect(adminUserDirectoryContext.getSettings()).toEqual(expectedResult);
|
|
57
|
+
expect(adminUserDirectoryContext.getCurrentSettings()).toEqual(expectedResult);
|
|
58
|
+
expect(adminUserDirectoryContext.isProcessing()).toBeFalsy();
|
|
59
|
+
});
|
|
60
|
+
it("should sort users", async() => {
|
|
61
|
+
// Mock the call to API
|
|
62
|
+
mockApiCalls();
|
|
63
|
+
jest.spyOn(adminUserDirectoryContext, "sortUsers");
|
|
64
|
+
|
|
65
|
+
await adminUserDirectoryContext.findUserDirectorySettings();
|
|
66
|
+
|
|
67
|
+
expect.assertions(2);
|
|
68
|
+
|
|
69
|
+
expect(adminUserDirectoryContext.sortUsers).toHaveBeenCalled();
|
|
70
|
+
expect(adminUserDirectoryContext.getUsers()).toEqual(adminUserDirectoryContext.sortUsers(mockUsers));
|
|
71
|
+
});
|
|
72
|
+
it("should set processing to true when loading settings", async() => {
|
|
73
|
+
adminUserDirectoryContext.setProcessing(false);
|
|
74
|
+
try {
|
|
75
|
+
await adminUserDirectoryContext.findUserDirectorySettings();
|
|
76
|
+
} catch {
|
|
77
|
+
expect.assertions(1);
|
|
78
|
+
expect(adminUserDirectoryContext.isProcessing()).toBeTruthy();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe("AdminUserDirectoryContext::hasSettingsChanges", () => {
|
|
83
|
+
beforeEach(async() => {
|
|
84
|
+
await initContext();
|
|
85
|
+
});
|
|
86
|
+
it("should return true if settings is different then current setting", () => {
|
|
87
|
+
adminUserDirectoryContext.setSettings("userDirectoryToggle", false);
|
|
88
|
+
|
|
89
|
+
expect.assertions(1);
|
|
90
|
+
|
|
91
|
+
expect(adminUserDirectoryContext.hasSettingsChanges()).toBeTruthy();
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it("should return false if settings is different then current setting", () => {
|
|
95
|
+
adminUserDirectoryContext.setSettings("createGroups", false);
|
|
96
|
+
adminUserDirectoryContext.setSettings("createGroups", true);
|
|
97
|
+
|
|
98
|
+
expect.assertions(1);
|
|
99
|
+
|
|
100
|
+
expect(adminUserDirectoryContext.hasSettingsChanges()).toBeFalsy();
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
describe("AdminUserDirectoryContext::clearContext", () => {
|
|
105
|
+
beforeEach(async() => {
|
|
106
|
+
await initContext();
|
|
107
|
+
});
|
|
108
|
+
it("should clear the context and set it by default", () => {
|
|
109
|
+
adminUserDirectoryContext.setSettings("userDirectoryToggle", true);
|
|
110
|
+
adminUserDirectoryContext.clearContext();
|
|
111
|
+
|
|
112
|
+
expect.assertions(3);
|
|
113
|
+
|
|
114
|
+
expect(adminUserDirectoryContext.isProcessing()).toBeTruthy();
|
|
115
|
+
expect(adminUserDirectoryContext.getCurrentSettings()).toBe(null);
|
|
116
|
+
expect(adminUserDirectoryContext.getSettings().userDirectoryToggle).toBeFalsy();
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
describe("AdminUserDirectoryContext::save", () => {
|
|
121
|
+
it("should save settings and call findUserDirectorySettings", async() => {
|
|
122
|
+
fetch.doMockOnceIf(/directorysync*/, () => mockApiResponse({}));
|
|
123
|
+
const findSettings = jest.spyOn(adminUserDirectoryContext, "findUserDirectorySettings").mockImplementation();
|
|
124
|
+
|
|
125
|
+
await adminUserDirectoryContext.save();
|
|
126
|
+
|
|
127
|
+
expect.assertions(3);
|
|
128
|
+
|
|
129
|
+
expect(adminUserDirectoryContext.isProcessing()).toBeTruthy();
|
|
130
|
+
expect(findSettings).toHaveBeenCalled();
|
|
131
|
+
expect(JSON.parse(fetch.mock.calls[0][1].body)).toEqual(expect.objectContaining(new UserDirectoryDTO(new UserDirectoryModel())));
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
describe("AdminUserDirectoryContext::delete", () => {
|
|
136
|
+
it("should delete settings and call findUserDirectorySettings", async() => {
|
|
137
|
+
fetch.doMockOnceIf(/directorysync*/, () => mockApiResponse({}));
|
|
138
|
+
const findSettings = jest.spyOn(adminUserDirectoryContext, "findUserDirectorySettings").mockImplementation();
|
|
139
|
+
|
|
140
|
+
await adminUserDirectoryContext.delete();
|
|
141
|
+
|
|
142
|
+
expect.assertions(2);
|
|
143
|
+
|
|
144
|
+
expect(adminUserDirectoryContext.isProcessing()).toBeTruthy();
|
|
145
|
+
expect(findSettings).toHaveBeenCalled();
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
describe("AdminUserDirectoryContext::test", () => {
|
|
150
|
+
it("should test configuration", async() => {
|
|
151
|
+
fetch.doMockOnceIf(/directorysync\/settings\/test*/, () => mockApiResponse(mockResult));
|
|
152
|
+
const result = await adminUserDirectoryContext.test();
|
|
153
|
+
|
|
154
|
+
expect.assertions(2);
|
|
155
|
+
|
|
156
|
+
expect(adminUserDirectoryContext.isProcessing()).toBeFalsy();
|
|
157
|
+
expect(result.body).toEqual(mockResult);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
describe("AdminUserDirectoryContext::simulateUsers", () => {
|
|
163
|
+
it("should simulate configuration", async() => {
|
|
164
|
+
fetch.doMockOnceIf(/directorysync*/, () => mockApiResponse(mockResult));
|
|
165
|
+
const result = await adminUserDirectoryContext.simulateUsers();
|
|
166
|
+
|
|
167
|
+
expect.assertions(1);
|
|
168
|
+
|
|
169
|
+
expect(result).toEqual(mockResult);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
describe("AdminUserDirectoryContext::synchronizeUsers", () => {
|
|
174
|
+
it("should synchronize configuration", async() => {
|
|
175
|
+
fetch.doMockOnceIf(/directorysync\/synchronize*/, () => mockApiResponse(mockResult));
|
|
176
|
+
const result = await adminUserDirectoryContext.synchronizeUsers();
|
|
177
|
+
|
|
178
|
+
expect.assertions(1);
|
|
179
|
+
|
|
180
|
+
expect(result).toEqual(mockResult);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
describe("AdminUserDirectoryContext::setSettings", () => {
|
|
185
|
+
it("should update settings object and not the current object", async() => {
|
|
186
|
+
await initContext();
|
|
187
|
+
adminUserDirectoryContext.setSettings("userDirectoryToggle", false);
|
|
188
|
+
|
|
189
|
+
expect.assertions(2);
|
|
190
|
+
|
|
191
|
+
expect(adminUserDirectoryContext.getCurrentSettings().userDirectoryToggle).toBeTruthy();
|
|
192
|
+
expect(adminUserDirectoryContext.getSettings().userDirectoryToggle).toBeFalsy();
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
describe("AdminUserDirectoryContext::errors", () => {
|
|
197
|
+
it("should update error object with targeted property", async() => {
|
|
198
|
+
await initContext();
|
|
199
|
+
adminUserDirectoryContext.setError("hostError", "error");
|
|
200
|
+
|
|
201
|
+
expect.assertions(1);
|
|
202
|
+
|
|
203
|
+
expect(adminUserDirectoryContext.getErrors().hostError).toBe("error");
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
it("should init errors with default property", async() => {
|
|
207
|
+
expect(adminUserDirectoryContext.getErrors()).toEqual(adminUserDirectoryContext.initErrors());
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it("should update error object with all properties ", async() => {
|
|
211
|
+
const mockError = mockErrors();
|
|
212
|
+
adminUserDirectoryContext.setErrors(mockError);
|
|
213
|
+
expect.assertions(3);
|
|
214
|
+
expect(adminUserDirectoryContext.getErrors().hostError).toEqual(mockError.hostError);
|
|
215
|
+
expect(adminUserDirectoryContext.getErrors().domainError).toEqual(mockError.domainError);
|
|
216
|
+
expect(adminUserDirectoryContext.getErrors().portError).toEqual(mockError.portError);
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
|