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
|
@@ -22,6 +22,7 @@ import UserSettings from "../shared/lib/Settings/UserSettings";
|
|
|
22
22
|
import OrchestrateLoginBoxMain from "./components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain";
|
|
23
23
|
import Footer from "./components/Common/Footer/Footer";
|
|
24
24
|
import OrchestrateLoginBoxFooter from "./components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxFooter";
|
|
25
|
+
import SsoContextProvider from "./contexts/SsoContext";
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* The login application served by the browser extension.
|
|
@@ -127,22 +128,24 @@ class ExtAuthenticationLogin extends Component {
|
|
|
127
128
|
{this.isReady() &&
|
|
128
129
|
<TranslationProvider loadingPath="/webAccessibleResources/locales/{{lng}}/{{ns}}.json">
|
|
129
130
|
<Router>
|
|
130
|
-
<
|
|
131
|
-
<
|
|
132
|
-
<div className="
|
|
133
|
-
<div className="
|
|
134
|
-
<div className="
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
<
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
<
|
|
131
|
+
<SsoContextProvider>
|
|
132
|
+
<AuthenticationLoginContextProvider>
|
|
133
|
+
<div id="container" className="container page login">
|
|
134
|
+
<div className="content">
|
|
135
|
+
<div className="header">
|
|
136
|
+
<div className="logo"><span className="visually-hidden">Passbolt</span></div>
|
|
137
|
+
</div>
|
|
138
|
+
<div className="login-form">
|
|
139
|
+
<OrchestrateLoginBoxMain/>
|
|
140
|
+
</div>
|
|
141
|
+
<div className="login-box-footer">
|
|
142
|
+
<OrchestrateLoginBoxFooter/>
|
|
143
|
+
</div>
|
|
141
144
|
</div>
|
|
142
145
|
</div>
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
</
|
|
146
|
+
<Footer/>
|
|
147
|
+
</AuthenticationLoginContextProvider>
|
|
148
|
+
</SsoContextProvider>
|
|
146
149
|
</Router>
|
|
147
150
|
</TranslationProvider>
|
|
148
151
|
}
|
|
@@ -157,4 +160,3 @@ ExtAuthenticationLogin.propTypes = {
|
|
|
157
160
|
};
|
|
158
161
|
|
|
159
162
|
export default ExtAuthenticationLogin;
|
|
160
|
-
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 3.9.0
|
|
13
|
+
*/
|
|
14
|
+
import React from "react";
|
|
15
|
+
import ExtAuthenticationLogin from "./ExtAuthenticationLogin";
|
|
16
|
+
import MockPort from "./test/mock/MockPort";
|
|
17
|
+
import siteSettingsFixture from "./test/fixture/Settings/siteSettings";
|
|
18
|
+
import mockStorage from "../../demo/ext-app/mock/mockStorage";
|
|
19
|
+
|
|
20
|
+
export default {
|
|
21
|
+
title: 'Components/ExtAuthenticationLogin/ExtAuthenticationLogin',
|
|
22
|
+
component: ExtAuthenticationLogin
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
function getMockedPort() {
|
|
26
|
+
const mockedPort = new MockPort();
|
|
27
|
+
mockedPort.addRequestListener("passbolt.organization-settings.get", () => siteSettingsFixture);
|
|
28
|
+
mockedPort.addRequestListener("passbolt.locale.get", () => ({
|
|
29
|
+
locale: 'en-UK',
|
|
30
|
+
label: 'English'
|
|
31
|
+
}));
|
|
32
|
+
return mockedPort;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const mockedStorage = new mockStorage();
|
|
36
|
+
|
|
37
|
+
const Template = args => <ExtAuthenticationLogin {...args}/>;
|
|
38
|
+
|
|
39
|
+
const defaultParameters = {
|
|
40
|
+
css: "ext_authentication"
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const Initial = Template.bind({});
|
|
44
|
+
Initial.args = {
|
|
45
|
+
port: getMockedPort(),
|
|
46
|
+
storage: mockedStorage
|
|
47
|
+
};
|
|
48
|
+
Initial.parameters = defaultParameters;
|
|
49
|
+
|
|
50
|
+
const mockedPortWithSso = getMockedPort();
|
|
51
|
+
const ssoLocalConfiguredProvider = "azure";
|
|
52
|
+
mockedPortWithSso.addRequestListener("passbolt.sso.get-local-configured-provider", () => ssoLocalConfiguredProvider);
|
|
53
|
+
|
|
54
|
+
export const WithSsoKitAvailable = Template.bind({});
|
|
55
|
+
WithSsoKitAvailable.args = {
|
|
56
|
+
port: mockedPortWithSso,
|
|
57
|
+
storage: mockedStorage
|
|
58
|
+
};
|
|
59
|
+
WithSsoKitAvailable.parameters = defaultParameters;
|
|
@@ -140,6 +140,7 @@ class ExtBootstrapApp extends Component {
|
|
|
140
140
|
"/app/account-recovery/requests/review/:accountRecoveryRequestId",
|
|
141
141
|
"/app/administration/subscription",
|
|
142
142
|
"/app/administration/account-recovery",
|
|
143
|
+
"/app/administration/sso",
|
|
143
144
|
"/app/folders/view/:filterByFolderId",
|
|
144
145
|
"/app/groups/view/:selectedGroupId",
|
|
145
146
|
"/app/groups/edit/:selectedGroupId",
|
|
@@ -36,6 +36,8 @@ import ManageAccountRecoveryAdministrationSettings
|
|
|
36
36
|
from "./ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings";
|
|
37
37
|
import ManageSmtpAdministrationSettings
|
|
38
38
|
from "./ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.js";
|
|
39
|
+
import DisplaySelfRegistrationAdministration from "./DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration";
|
|
40
|
+
import ManageSsoSettings from "./ManageSsoSettings/ManageSsoSettings";
|
|
39
41
|
|
|
40
42
|
class AdministrationWorkspace extends Component {
|
|
41
43
|
/**
|
|
@@ -94,6 +96,22 @@ class AdministrationWorkspace extends Component {
|
|
|
94
96
|
return AdministrationWorkspaceMenuTypes.SMTP_SETTINGS === this.props.administrationWorkspaceContext.selectedAdministration;
|
|
95
97
|
}
|
|
96
98
|
|
|
99
|
+
/**
|
|
100
|
+
* If Self registration settings menu is selected
|
|
101
|
+
* @returns {boolean}
|
|
102
|
+
*/
|
|
103
|
+
isSelfRegistrationSelected() {
|
|
104
|
+
return AdministrationWorkspaceMenuTypes.SELF_REGISTRATION === this.props.administrationWorkspaceContext.selectedAdministration;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* If SSO menu is selected
|
|
109
|
+
* @returns {boolean}
|
|
110
|
+
*/
|
|
111
|
+
isSsoSelected() {
|
|
112
|
+
return AdministrationWorkspaceMenuTypes.SSO === this.props.administrationWorkspaceContext.selectedAdministration;
|
|
113
|
+
}
|
|
114
|
+
|
|
97
115
|
render() {
|
|
98
116
|
const AdministrationWorkspaceAction = this.props.administrationWorkspaceContext.administrationWorkspaceAction;
|
|
99
117
|
return (
|
|
@@ -141,6 +159,12 @@ class AdministrationWorkspace extends Component {
|
|
|
141
159
|
{this.isSmtpSettingsSelected() &&
|
|
142
160
|
<ManageSmtpAdministrationSettings/>
|
|
143
161
|
}
|
|
162
|
+
{this.isSelfRegistrationSelected() &&
|
|
163
|
+
<DisplaySelfRegistrationAdministration/>
|
|
164
|
+
}
|
|
165
|
+
{this.isSsoSelected() &&
|
|
166
|
+
<ManageSsoSettings/>
|
|
167
|
+
}
|
|
144
168
|
</div>
|
|
145
169
|
</div>
|
|
146
170
|
</div>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* @param appContext An existing app context
|
|
4
4
|
* @returns {any | ({userSettings: UserSettings, siteSettings: SiteSettings, port: MockPort} & {})}
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
|
|
7
|
+
import DisplayAdministrationEmailNotificationActions from "./DisplayAdministrationWorkspaceActions/DisplayAdministrationEmailNotificationActions/DisplayAdministrationEmailNotificationActions";
|
|
8
8
|
|
|
9
9
|
export function defaultAppContext(appContext) {
|
|
10
10
|
const defaultAppContext = {
|
|
@@ -25,7 +25,7 @@ export function defaultProps(selectedAdministration) {
|
|
|
25
25
|
},
|
|
26
26
|
administrationWorkspaceContext: {
|
|
27
27
|
selectedAdministration,
|
|
28
|
-
administrationWorkspaceAction:
|
|
28
|
+
administrationWorkspaceAction: DisplayAdministrationEmailNotificationActions
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
}
|
|
@@ -23,7 +23,6 @@ import AdministrationWorkspacePage from "./AdministrationWorkspace.test.page";
|
|
|
23
23
|
import {waitFor} from "@testing-library/dom";
|
|
24
24
|
import {AdministrationWorkspaceMenuTypes} from "../../contexts/AdministrationWorkspaceContext";
|
|
25
25
|
|
|
26
|
-
jest.mock("./DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions", () => () => <></>); // eslint-disable-line no-use-before-define
|
|
27
26
|
jest.mock("./DisplayAdministrationMenu/DisplayAdministrationMenu", () => () => <></>);
|
|
28
27
|
jest.mock("./DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb", () => () => <></>);
|
|
29
28
|
jest.mock("./DisplayMfaAdministration/DisplayMfaAdministration", () => () => <span className="mfa-details"></span>);
|
|
@@ -32,6 +31,7 @@ jest.mock("./DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAd
|
|
|
32
31
|
jest.mock("./DisplaySubscriptionKey/DisplaySubscriptionKey", () => () => <span className="subscription-key-details"></span>);
|
|
33
32
|
jest.mock("./DisplayInternationalizationAdministration/DisplayInternationalizationAdministration", () => () => <span className="internationalization-details"></span>);
|
|
34
33
|
jest.mock("./ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings", () => () => <span className="account-recovery-details"></span>);
|
|
34
|
+
jest.mock("./DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration", () => () => <span className="self-registration-details"></span>);
|
|
35
35
|
|
|
36
36
|
beforeEach(() => {
|
|
37
37
|
jest.resetModules();
|
|
@@ -106,5 +106,17 @@ describe("Display Administration Workspace", () => {
|
|
|
106
106
|
expect(page.isInternationalizationSelected).toBeFalsy();
|
|
107
107
|
expect(page.isAccountRecoverySelected).toBeTruthy();
|
|
108
108
|
});
|
|
109
|
+
|
|
110
|
+
it('As AD, I should see the self registration details area', async() => {
|
|
111
|
+
page = new AdministrationWorkspacePage(context, defaultProps(AdministrationWorkspaceMenuTypes.SELF_REGISTRATION));
|
|
112
|
+
await waitFor(() => {});
|
|
113
|
+
expect(page.isMfaSelected).toBeFalsy();
|
|
114
|
+
expect(page.isUserDirectorySelected).toBeFalsy();
|
|
115
|
+
expect(page.isEmailNotificationsSelected).toBeFalsy();
|
|
116
|
+
expect(page.isSubscriptionKeySelected).toBeFalsy();
|
|
117
|
+
expect(page.isInternationalizationSelected).toBeFalsy();
|
|
118
|
+
expect(page.isAccountRecoverySelected).toBeFalsy();
|
|
119
|
+
expect(page.isSelfRegistrationSelected).toBeTruthy();
|
|
120
|
+
});
|
|
109
121
|
});
|
|
110
122
|
|
|
@@ -82,5 +82,12 @@ export default class AdministrationWorkspacePage {
|
|
|
82
82
|
get isAccountRecoverySelected() {
|
|
83
83
|
return Boolean(this._page.container.querySelector('.account-recovery-details'));
|
|
84
84
|
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Returns true if the account recovery area is visible
|
|
88
|
+
*/
|
|
89
|
+
get isSelfRegistrationSelected() {
|
|
90
|
+
return Boolean(this._page.container.querySelector('.self-registration-details'));
|
|
91
|
+
}
|
|
85
92
|
}
|
|
86
93
|
|
|
@@ -0,0 +1,101 @@
|
|
|
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.9.0
|
|
13
|
+
*/
|
|
14
|
+
import React from "react";
|
|
15
|
+
import PropTypes from "prop-types";
|
|
16
|
+
import {Trans, withTranslation} from "react-i18next";
|
|
17
|
+
import DialogWrapper from "../../Common/Dialog/DialogWrapper/DialogWrapper";
|
|
18
|
+
import {withAdminSso} from "../../../contexts/AdminSsoContext";
|
|
19
|
+
import FormCancelButton from "../../Common/Inputs/FormSubmitButton/FormCancelButton";
|
|
20
|
+
import FormSubmitButton from "../../Common/Inputs/FormSubmitButton/FormSubmitButton";
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ConfirmDeleteSsoSettingsDialog extends React.Component {
|
|
24
|
+
/**
|
|
25
|
+
* Constructor
|
|
26
|
+
* @param {Object} props
|
|
27
|
+
*/
|
|
28
|
+
constructor(props) {
|
|
29
|
+
super(props);
|
|
30
|
+
this.state = this.defaultState;
|
|
31
|
+
this.bindCallbacks();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get default state
|
|
36
|
+
* @returns {Object}
|
|
37
|
+
*/
|
|
38
|
+
get defaultState() {
|
|
39
|
+
return {
|
|
40
|
+
processing: false
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Bind callbacks
|
|
46
|
+
*/
|
|
47
|
+
bindCallbacks() {
|
|
48
|
+
this.handleConfirmDelete = this.handleConfirmDelete.bind(this);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Handles the form submission
|
|
53
|
+
* @param {Event} event
|
|
54
|
+
* @returns {Promise<void>}
|
|
55
|
+
*/
|
|
56
|
+
async handleConfirmDelete(event) {
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
this.setState({processing: true});
|
|
59
|
+
await this.props.adminSsoContext.deleteSettings();
|
|
60
|
+
this.props.onClose();
|
|
61
|
+
this.setState({processing: false});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Returns true if the input must be disabled.
|
|
66
|
+
* @returns {boolean}
|
|
67
|
+
*/
|
|
68
|
+
hasAllInputDisabled() {
|
|
69
|
+
return this.state.processing;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Render the component
|
|
74
|
+
* @returns {JSX}
|
|
75
|
+
*/
|
|
76
|
+
render() {
|
|
77
|
+
const isDisabled = this.hasAllInputDisabled();
|
|
78
|
+
return (
|
|
79
|
+
<DialogWrapper className='delete-sso-settings-dialog' title={this.props.t("Disable Single Sign-On settings?")} onClose={this.props.onClose} disabled={isDisabled}>
|
|
80
|
+
<form onSubmit={this.handleConfirmDelete} noValidate>
|
|
81
|
+
<div className="form-content">
|
|
82
|
+
<p><Trans>Are you sure you want to disable the current Single Sign-On settings?</Trans></p>
|
|
83
|
+
<p><Trans>This action cannot be undone. All the data associated with SSO will be permanently deleted.</Trans></p>
|
|
84
|
+
</div>
|
|
85
|
+
<div className="submit-wrapper clearfix">
|
|
86
|
+
<FormCancelButton disabled={isDisabled} onClick={this.props.onClose}/>
|
|
87
|
+
<FormSubmitButton warning={true} disabled={isDisabled} processing={this.state.processing} value={this.props.t("Disable")}/>
|
|
88
|
+
</div>
|
|
89
|
+
</form>
|
|
90
|
+
</DialogWrapper>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
ConfirmDeleteSsoSettingsDialog.propTypes = {
|
|
96
|
+
adminSsoContext: PropTypes.object, // The administration SSO settings context
|
|
97
|
+
onClose: PropTypes.func, // The close dialog callback
|
|
98
|
+
t: PropTypes.func, // The translation function
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export default withAdminSso(withTranslation('common')(ConfirmDeleteSsoSettingsDialog));
|
|
@@ -0,0 +1,23 @@
|
|
|
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.9.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export function defaultProps(props = {}) {
|
|
16
|
+
const _props = {
|
|
17
|
+
adminSsoContext: {
|
|
18
|
+
deleteSettings: () => { console.log("Delete settings confirmed!"); }
|
|
19
|
+
},
|
|
20
|
+
onClose: () => { console.log("Close dialog called"); }
|
|
21
|
+
};
|
|
22
|
+
return Object.assign(_props, props);
|
|
23
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
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.9.0
|
|
13
|
+
*/
|
|
14
|
+
import React from "react";
|
|
15
|
+
import ConfirmDeleteSsoSettingsDialog from "./ConfirmDeleteSsoSettingsDialog";
|
|
16
|
+
import {defaultProps} from "./ConfirmDeleteSsoSettingsDialog.test.data";
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
export default {
|
|
20
|
+
title: 'Components/Administration/ConfirmDeleteSsoSettingsDialog',
|
|
21
|
+
component: ConfirmDeleteSsoSettingsDialog
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const Template = args => <ConfirmDeleteSsoSettingsDialog {...args}/>;
|
|
25
|
+
|
|
26
|
+
export const Default = Template.bind({});
|
|
27
|
+
Default.args = defaultProps();
|
|
@@ -223,7 +223,7 @@ class ConfirmSaveAccountRecoverySettings extends Component {
|
|
|
223
223
|
}
|
|
224
224
|
</div>
|
|
225
225
|
<div className="warning message">
|
|
226
|
-
<Trans>
|
|
226
|
+
<Trans>Please review carefully this configuration as it will not be trivial to change this later.</Trans>
|
|
227
227
|
</div>
|
|
228
228
|
<div className="submit-wrapper clearfix">
|
|
229
229
|
<a
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "../../../contexts/AdministrationWorkspaceContext";
|
|
20
20
|
import {withAppContext} from "../../../contexts/AppContext";
|
|
21
21
|
import {withRouter} from "react-router-dom";
|
|
22
|
-
import {Trans} from "react-i18next";
|
|
22
|
+
import {Trans, withTranslation} from "react-i18next";
|
|
23
23
|
import {withNavigationContext} from "../../../contexts/NavigationContext";
|
|
24
24
|
|
|
25
25
|
/**
|
|
@@ -89,6 +89,24 @@ class DisplayAdministrationMenu extends React.Component {
|
|
|
89
89
|
return siteSettings && siteSettings.canIUse('smtpSettings');
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Can I use the self registration settings plugin
|
|
94
|
+
* @returns {boolean}
|
|
95
|
+
*/
|
|
96
|
+
get canIUseSelfRegistrationSettings() {
|
|
97
|
+
const siteSettings = this.props.context.siteSettings;
|
|
98
|
+
return siteSettings && siteSettings.canIUse('selfRegistration');
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Can I use the sso plugin
|
|
103
|
+
* @returns {boolean}
|
|
104
|
+
*/
|
|
105
|
+
get canIUseSso() {
|
|
106
|
+
const siteSettings = this.props.context.siteSettings;
|
|
107
|
+
return siteSettings && siteSettings.canIUse('sso');
|
|
108
|
+
}
|
|
109
|
+
|
|
92
110
|
/**
|
|
93
111
|
* Bind callbacks methods
|
|
94
112
|
*/
|
|
@@ -100,6 +118,8 @@ class DisplayAdministrationMenu extends React.Component {
|
|
|
100
118
|
this.handleInternationalizationClick = this.handleInternationalizationClick.bind(this);
|
|
101
119
|
this.handleAccountRecoveryClick = this.handleAccountRecoveryClick.bind(this);
|
|
102
120
|
this.handleSmtpSettingsClick = this.handleSmtpSettingsClick.bind(this);
|
|
121
|
+
this.handleSelfRegistrationClick = this.handleSelfRegistrationClick.bind(this);
|
|
122
|
+
this.handleSsoClick = this.handleSsoClick.bind(this);
|
|
103
123
|
}
|
|
104
124
|
|
|
105
125
|
/**
|
|
@@ -151,6 +171,20 @@ class DisplayAdministrationMenu extends React.Component {
|
|
|
151
171
|
this.props.navigationContext.onGoToAdministrationSmtpSettingsRequested();
|
|
152
172
|
}
|
|
153
173
|
|
|
174
|
+
/**
|
|
175
|
+
* Handle when the user click on the self registration settings menu
|
|
176
|
+
*/
|
|
177
|
+
handleSelfRegistrationClick() {
|
|
178
|
+
this.props.navigationContext.onGoToAdministrationSelfRegistrationRequested();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Handle when the user click on the sso menu
|
|
183
|
+
*/
|
|
184
|
+
handleSsoClick() {
|
|
185
|
+
this.props.navigationContext.onGoToAdministrationSsoRequested();
|
|
186
|
+
}
|
|
187
|
+
|
|
154
188
|
/**
|
|
155
189
|
* If MFA menu is selected
|
|
156
190
|
* @returns {boolean}
|
|
@@ -199,6 +233,14 @@ class DisplayAdministrationMenu extends React.Component {
|
|
|
199
233
|
return AdministrationWorkspaceMenuTypes.ACCOUNT_RECOVERY === this.props.administrationWorkspaceContext.selectedAdministration;
|
|
200
234
|
}
|
|
201
235
|
|
|
236
|
+
/**
|
|
237
|
+
* If SSO menu is selected
|
|
238
|
+
* @returns {boolean}
|
|
239
|
+
*/
|
|
240
|
+
isSsoSelected() {
|
|
241
|
+
return AdministrationWorkspaceMenuTypes.SSO === this.props.administrationWorkspaceContext.selectedAdministration;
|
|
242
|
+
}
|
|
243
|
+
|
|
202
244
|
/**
|
|
203
245
|
* If SMTP settings menu is selected
|
|
204
246
|
* @returns {boolean}
|
|
@@ -207,6 +249,14 @@ class DisplayAdministrationMenu extends React.Component {
|
|
|
207
249
|
return AdministrationWorkspaceMenuTypes.SMTP_SETTINGS === this.props.administrationWorkspaceContext.selectedAdministration;
|
|
208
250
|
}
|
|
209
251
|
|
|
252
|
+
/**
|
|
253
|
+
* If Self registration settings menu is selected
|
|
254
|
+
* @returns {boolean}
|
|
255
|
+
*/
|
|
256
|
+
isSelfRegistrationSettingsSelected() {
|
|
257
|
+
return AdministrationWorkspaceMenuTypes.SELF_REGISTRATION === this.props.administrationWorkspaceContext.selectedAdministration;
|
|
258
|
+
}
|
|
259
|
+
|
|
210
260
|
/**
|
|
211
261
|
* Render the component
|
|
212
262
|
* @returns {JSX}
|
|
@@ -294,6 +344,32 @@ class DisplayAdministrationMenu extends React.Component {
|
|
|
294
344
|
</div>
|
|
295
345
|
</li>
|
|
296
346
|
}
|
|
347
|
+
{this.canIUseSelfRegistrationSettings &&
|
|
348
|
+
<li id="self_registration_menu">
|
|
349
|
+
<div className={`row ${this.isSelfRegistrationSettingsSelected() ? "selected" : ""}`}>
|
|
350
|
+
<div className="main-cell-wrapper">
|
|
351
|
+
<div className="main-cell">
|
|
352
|
+
<a onClick={this.handleSelfRegistrationClick}>
|
|
353
|
+
<span><Trans>Self Registration</Trans></span>
|
|
354
|
+
</a>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
</li>
|
|
359
|
+
}
|
|
360
|
+
{this.canIUseSso &&
|
|
361
|
+
<li id="sso_menu">
|
|
362
|
+
<div className={`row ${this.isSsoSelected() ? "selected" : ""}`}>
|
|
363
|
+
<div className="main-cell-wrapper">
|
|
364
|
+
<div className="main-cell">
|
|
365
|
+
<a onClick={this.handleSsoClick}>
|
|
366
|
+
<span><Trans>Single Sign-On</Trans></span> <span className="beta chips"><Trans>Beta</Trans></span>
|
|
367
|
+
</a>
|
|
368
|
+
</div>
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
</li>
|
|
372
|
+
}
|
|
297
373
|
</ul>
|
|
298
374
|
</div>
|
|
299
375
|
);
|
|
@@ -307,4 +383,4 @@ DisplayAdministrationMenu.propTypes = {
|
|
|
307
383
|
navigationContext: PropTypes.any, // The application navigation context
|
|
308
384
|
};
|
|
309
385
|
|
|
310
|
-
export default withRouter(withAppContext(withNavigationContext(withAdministrationWorkspace((DisplayAdministrationMenu)))));
|
|
386
|
+
export default withRouter(withAppContext(withNavigationContext(withAdministrationWorkspace(withTranslation("common")(DisplayAdministrationMenu)))));
|
|
@@ -29,7 +29,9 @@ export function defaultProps(data = {}) {
|
|
|
29
29
|
onGoToAdministrationMfaRequested: jest.fn(),
|
|
30
30
|
onGoToAdministrationInternationalizationRequested: jest.fn(),
|
|
31
31
|
onGoToAdministrationAccountRecoveryRequested: jest.fn(),
|
|
32
|
-
onGoToAdministrationSmtpSettingsRequested: jest.fn()
|
|
32
|
+
onGoToAdministrationSmtpSettingsRequested: jest.fn(),
|
|
33
|
+
onGoToAdministrationSelfRegistrationRequested: jest.fn(),
|
|
34
|
+
onGoToAdministrationSsoRequested: jest.fn(),
|
|
33
35
|
}
|
|
34
36
|
}, data);
|
|
35
37
|
}
|
|
@@ -134,4 +134,64 @@ describe("As AD I can see the administration menu", () => {
|
|
|
134
134
|
expect(page.smtpSettings).toBeNull();
|
|
135
135
|
});
|
|
136
136
|
});
|
|
137
|
+
|
|
138
|
+
describe("As a logged in administrator in the administrator workspace, I can see the User self registration settings option in the left-side bar", () => {
|
|
139
|
+
it('If the feature flag is true, the menu should be visible', async() => {
|
|
140
|
+
expect.assertions(4);
|
|
141
|
+
const props = defaultProps({
|
|
142
|
+
administrationWorkspaceContext: {selectedAdministration: AdministrationWorkspaceMenuTypes.SELF_REGISTRATION}
|
|
143
|
+
}); // The props to pass
|
|
144
|
+
page = new DisplayAdministrationMenuPage(context, props);
|
|
145
|
+
expect(page.exists()).toBeTruthy();
|
|
146
|
+
await page.goToSelfRegistration();
|
|
147
|
+
expect(page.selfRegistration).toBeTruthy();
|
|
148
|
+
expect(page.menuSelected).toBe('Self Registration');
|
|
149
|
+
expect(props.navigationContext.onGoToAdministrationSelfRegistrationRequested).toHaveBeenCalled();
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it('If the feature flag is false, the menu should not be visible', async() => {
|
|
153
|
+
expect.assertions(2);
|
|
154
|
+
const props = defaultProps({
|
|
155
|
+
context: {
|
|
156
|
+
siteSettings: {
|
|
157
|
+
canIUse: feature => feature !== "selfRegistration"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
administrationWorkspaceContext: {selectedAdministration: AdministrationWorkspaceMenuTypes.MFA}
|
|
161
|
+
}); // The props to pass
|
|
162
|
+
page = new DisplayAdministrationMenuPage(context, props);
|
|
163
|
+
expect(page.exists()).toBeTruthy();
|
|
164
|
+
expect(page.selfRegistration).toBeNull();
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
describe("As a signed-in administrator on the administration workspace, I can see the SSO setting option in the left-side bar", () => {
|
|
169
|
+
it('If the feature flag is true, the menu should be visible', async() => {
|
|
170
|
+
expect.assertions(4);
|
|
171
|
+
const props = defaultProps({
|
|
172
|
+
administrationWorkspaceContext: {selectedAdministration: AdministrationWorkspaceMenuTypes.SSO}
|
|
173
|
+
}); // The props to pass
|
|
174
|
+
page = new DisplayAdministrationMenuPage(context, props);
|
|
175
|
+
expect(page.exists()).toBeTruthy();
|
|
176
|
+
await page.goToSsoSettings();
|
|
177
|
+
expect(page.ssoSettings).toBeTruthy();
|
|
178
|
+
expect(page.menuSelected).toBe('Single Sign-On');
|
|
179
|
+
expect(props.navigationContext.onGoToAdministrationSsoRequested).toHaveBeenCalled();
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
it('If the feature flag is false, the menu should not be visible', async() => {
|
|
183
|
+
expect.assertions(2);
|
|
184
|
+
const props = defaultProps({
|
|
185
|
+
context: {
|
|
186
|
+
siteSettings: {
|
|
187
|
+
canIUse: feature => feature !== "sso"
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
administrationWorkspaceContext: {selectedAdministration: AdministrationWorkspaceMenuTypes.MFA}
|
|
191
|
+
}); // The props to pass
|
|
192
|
+
page = new DisplayAdministrationMenuPage(context, props);
|
|
193
|
+
expect(page.exists()).toBeTruthy();
|
|
194
|
+
expect(page.ssoSettings).toBeNull();
|
|
195
|
+
});
|
|
196
|
+
});
|
|
137
197
|
});
|
|
@@ -103,6 +103,20 @@ export default class DisplayAdministrationMenuPage {
|
|
|
103
103
|
return this._page.container.querySelector('#smtp_settings_menu .row .main-cell-wrapper .main-cell a');
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Returns the self registration menu
|
|
108
|
+
*/
|
|
109
|
+
get selfRegistration() {
|
|
110
|
+
return this._page.container.querySelector('#self_registration_menu .row .main-cell-wrapper .main-cell a');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Returns the Single Sign-On menu
|
|
115
|
+
*/
|
|
116
|
+
get ssoSettings() {
|
|
117
|
+
return this._page.container.querySelector('#sso_menu .row .main-cell-wrapper .main-cell a');
|
|
118
|
+
}
|
|
119
|
+
|
|
106
120
|
/**
|
|
107
121
|
* Returns true if the page object exists in the container
|
|
108
122
|
*/
|
|
@@ -152,9 +166,14 @@ export default class DisplayAdministrationMenuPage {
|
|
|
152
166
|
async goToSmtpSettings() {
|
|
153
167
|
await this.click(this.smtpSettings);
|
|
154
168
|
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
169
|
|
|
170
|
+
/** Click on the self registration settings element */
|
|
171
|
+
async goToSelfRegistration() {
|
|
172
|
+
await this.click(this.selfRegistration);
|
|
173
|
+
}
|
|
160
174
|
|
|
175
|
+
/** Click on the SSO settings element */
|
|
176
|
+
async goToSsoSettings() {
|
|
177
|
+
await this.click(this.ssoSettings);
|
|
178
|
+
}
|
|
179
|
+
}
|