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,178 @@
|
|
|
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/DisplayMfaAdministration/DisplayMfaAdministration.test.data";
|
|
16
|
+
import {AdminMfaContextProvider} from "./AdministrationMfaContext";
|
|
17
|
+
import {enableFetchMocks} from 'jest-fetch-mock';
|
|
18
|
+
import {mockMfaSettings, mockDuoError} from "../../../../react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.data";
|
|
19
|
+
import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
|
|
20
|
+
import MfaModel from '../../../../shared/models/Mfa/MfaModel';
|
|
21
|
+
import {mockDefaultMfaModel} from '../../../components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.data';
|
|
22
|
+
import MfaDTO from '../../../../shared/models/Mfa/MfaDTO';
|
|
23
|
+
|
|
24
|
+
describe("AdminMfaContext", () => {
|
|
25
|
+
let adminMfaContext; // The adminMfaContext to test
|
|
26
|
+
const props = defaultProps(); // The props to pass
|
|
27
|
+
|
|
28
|
+
//Initialize context by default
|
|
29
|
+
const initContext = async() => {
|
|
30
|
+
fetch.doMock(() => mockApiResponse(mockMfaSettings));
|
|
31
|
+
await adminMfaContext.findMfaSettings();
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
beforeEach(() => {
|
|
35
|
+
jest.resetAllMocks();
|
|
36
|
+
adminMfaContext = new AdminMfaContextProvider(props);
|
|
37
|
+
const setStateMock = state => adminMfaContext.state = Object.assign(adminMfaContext.state, state);
|
|
38
|
+
jest.spyOn(adminMfaContext, "setState").mockImplementation(setStateMock);
|
|
39
|
+
enableFetchMocks();
|
|
40
|
+
});
|
|
41
|
+
describe("AdminMfaContext::findMfaSettings", () => {
|
|
42
|
+
it("should get the current settings and store it in its state", async() => {
|
|
43
|
+
// Mock the call to API
|
|
44
|
+
const mockApiSettingsFetch = fetch.doMockOnceIf(/mfa\/settings.json/, () => mockApiResponse(mockMfaSettings));
|
|
45
|
+
const expectedResult = new MfaModel(mockMfaSettings);
|
|
46
|
+
await adminMfaContext.findMfaSettings();
|
|
47
|
+
|
|
48
|
+
expect.assertions(4);
|
|
49
|
+
|
|
50
|
+
expect(mockApiSettingsFetch).toHaveBeenCalledTimes(1);
|
|
51
|
+
expect(adminMfaContext.getSettings()).toEqual(expectedResult);
|
|
52
|
+
expect(adminMfaContext.getCurrentSettings()).toEqual(expectedResult);
|
|
53
|
+
expect(adminMfaContext.isProcessing()).toBeFalsy();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("should initialize with default value if object is empty", async() => {
|
|
57
|
+
// Mock the call to API
|
|
58
|
+
const mockApiSettingsFetch = fetch.doMockOnceIf(/mfa\/settings.json/, () => mockApiResponse({}));
|
|
59
|
+
await adminMfaContext.findMfaSettings();
|
|
60
|
+
|
|
61
|
+
expect.assertions(4);
|
|
62
|
+
|
|
63
|
+
expect(mockApiSettingsFetch).toHaveBeenCalledTimes(1);
|
|
64
|
+
expect(adminMfaContext.getSettings()).toEqual(mockDefaultMfaModel);
|
|
65
|
+
expect(adminMfaContext.getCurrentSettings()).toEqual(mockDefaultMfaModel);
|
|
66
|
+
expect(adminMfaContext.isProcessing()).toBeFalsy();
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("should set processing to true when loading settings", async() => {
|
|
70
|
+
adminMfaContext.setProcessing(false);
|
|
71
|
+
try {
|
|
72
|
+
await adminMfaContext.findMfaSettings();
|
|
73
|
+
} catch {
|
|
74
|
+
expect.assertions(1);
|
|
75
|
+
expect(adminMfaContext.isProcessing()).toBeTruthy();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
describe("AdminMfaContext::hasSettingsChanges", () => {
|
|
81
|
+
beforeEach(async() => {
|
|
82
|
+
await initContext();
|
|
83
|
+
});
|
|
84
|
+
it("should return true if settings is different then current setting", () => {
|
|
85
|
+
adminMfaContext.setSettings("duoToggle", false);
|
|
86
|
+
|
|
87
|
+
expect.assertions(1);
|
|
88
|
+
|
|
89
|
+
expect(adminMfaContext.hasSettingsChanges()).toBeTruthy();
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it("should return false if settings is different then current setting", () => {
|
|
93
|
+
adminMfaContext.setSettings("duoToggle", false);
|
|
94
|
+
adminMfaContext.setSettings("duoToggle", true);
|
|
95
|
+
|
|
96
|
+
expect.assertions(1);
|
|
97
|
+
|
|
98
|
+
expect(adminMfaContext.hasSettingsChanges()).toBeFalsy();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
describe("AdminMfaContext::clearContext", () => {
|
|
103
|
+
beforeEach(async() => {
|
|
104
|
+
await initContext();
|
|
105
|
+
});
|
|
106
|
+
it("should clear the context and set it by default", () => {
|
|
107
|
+
adminMfaContext.setSettings("duoToggle", true);
|
|
108
|
+
adminMfaContext.setSettings("yubikeyToggle", true);
|
|
109
|
+
adminMfaContext.setSettings("toptToggle", true);
|
|
110
|
+
adminMfaContext.clearContext();
|
|
111
|
+
|
|
112
|
+
expect.assertions(5);
|
|
113
|
+
|
|
114
|
+
expect(adminMfaContext.isProcessing()).toBeTruthy();
|
|
115
|
+
expect(adminMfaContext.getCurrentSettings()).toBe(null);
|
|
116
|
+
expect(adminMfaContext.getSettings().duoToggle).toBeFalsy();
|
|
117
|
+
expect(adminMfaContext.getSettings().toptToggle).toBeFalsy();
|
|
118
|
+
expect(adminMfaContext.getSettings().yubikeyToggle).toBeFalsy();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
describe("AdminMfaContext::save", () => {
|
|
123
|
+
it("should save settings and call findMfaSettings", async() => {
|
|
124
|
+
fetch.doMockOnceIf(/mfa\/settings.json/, () => mockApiResponse({}));
|
|
125
|
+
const findSettings = jest.spyOn(adminMfaContext, "findMfaSettings").mockImplementation();
|
|
126
|
+
|
|
127
|
+
await adminMfaContext.save();
|
|
128
|
+
|
|
129
|
+
expect.assertions(3);
|
|
130
|
+
|
|
131
|
+
expect(adminMfaContext.isProcessing()).toBeTruthy();
|
|
132
|
+
expect(findSettings).toHaveBeenCalled();
|
|
133
|
+
expect(JSON.parse(fetch.mock.calls[0][1].body)).toEqual(expect.objectContaining(new MfaDTO()));
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
describe("AdminMfaContext::setSettings", () => {
|
|
138
|
+
it("should update settings object and not the current object", async() => {
|
|
139
|
+
await initContext();
|
|
140
|
+
adminMfaContext.setSettings("duoToggle", false);
|
|
141
|
+
|
|
142
|
+
expect.assertions(2);
|
|
143
|
+
|
|
144
|
+
expect(adminMfaContext.getCurrentSettings().duoToggle).toBeTruthy();
|
|
145
|
+
expect(adminMfaContext.getSettings().duoToggle).toBeFalsy();
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
describe("AdminMfaContext::errors", () => {
|
|
150
|
+
it("should update error object with targeted property", async() => {
|
|
151
|
+
await initContext();
|
|
152
|
+
adminMfaContext.setError("duoSaltError", "error");
|
|
153
|
+
|
|
154
|
+
expect.assertions(1);
|
|
155
|
+
|
|
156
|
+
expect(adminMfaContext.getErrors().duoSaltError).toBe("error");
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it("should init errors with default property", async() => {
|
|
160
|
+
expect.assertions(1);
|
|
161
|
+
expect(adminMfaContext.getErrors()).toEqual(adminMfaContext.initErrors());
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it("should update error object with all properties ", async() => {
|
|
165
|
+
const mockError = mockDuoError();
|
|
166
|
+
adminMfaContext.setErrors(mockError);
|
|
167
|
+
|
|
168
|
+
expect.assertions(4);
|
|
169
|
+
|
|
170
|
+
expect(adminMfaContext.getErrors().duoSaltError).toEqual(mockError.duoSaltError);
|
|
171
|
+
expect(adminMfaContext.getErrors().duoIntegrationKeyError).toEqual(mockError.duoIntegrationKeyError);
|
|
172
|
+
expect(adminMfaContext.getErrors().duoHostnameError).toEqual(mockError.duoHostnameError);
|
|
173
|
+
expect(adminMfaContext.getErrors().duoSecretKeyError).toEqual(mockError.duoSecretKeyError);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
|
|
@@ -0,0 +1,453 @@
|
|
|
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.3
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import React from "react";
|
|
16
|
+
import PropTypes from "prop-types";
|
|
17
|
+
import {withAppContext} from "../../AppContext";
|
|
18
|
+
import SelfRegistrationService from "../../../../shared/services/api/selfRegistration/selfRegistrationService";
|
|
19
|
+
import SelfRegistrationDomainsViewModel from "../../../../shared/models/selfRegistration/SelfRegistrationDomainsViewModel";
|
|
20
|
+
import MapObject from "../../../lib/Map/MapObject";
|
|
21
|
+
import SelfRegistrationDto from "../../../../shared/models/selfRegistration/SelfRegistrationDto";
|
|
22
|
+
import SelfRegistrationFormService from "../../../../shared/services/forms/selfRegistration/SelfRegistrationFormService";
|
|
23
|
+
import ConfirmSaveSelfRegistrationSettings from "../../../components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings";
|
|
24
|
+
import NotifyError from "../../../components/Common/Error/NotifyError/NotifyError";
|
|
25
|
+
import {withActionFeedback} from "../../ActionFeedbackContext";
|
|
26
|
+
import {withDialog} from "../../DialogContext";
|
|
27
|
+
import {withTranslation} from "react-i18next";
|
|
28
|
+
import ConfirmDeletionSelfRegistrationSettings from "../../../components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings";
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The Administration Self registration Context
|
|
32
|
+
* @type {React.Context<Object>}
|
|
33
|
+
*/
|
|
34
|
+
export const AdminSelfRegistrationContext = React.createContext({
|
|
35
|
+
getCurrentSettings: () => {}, // Returns settings saved
|
|
36
|
+
getAllowedDomains: () => {}, // Returns allowed domains for UI changes
|
|
37
|
+
setAllowedDomains: () => {}, // Returns allowed domains for UI changes
|
|
38
|
+
hasSettingsChanges: () => {}, // Check if the policy has changes
|
|
39
|
+
setDomains: () => {}, // change domains
|
|
40
|
+
findSettings: () => {}, // Find the current self registraiton settings and store it in the state
|
|
41
|
+
setProcessing: () => {}, //Update processing object
|
|
42
|
+
isProcessing: () => {}, // returns true if a process is running and the UI must be disabled
|
|
43
|
+
clearContext: () => {}, // put the data to its default state value
|
|
44
|
+
isSubmitted: () => {}, // returns the value submitted
|
|
45
|
+
setSubmitted: () => {}, // Set the submitted variable
|
|
46
|
+
setErrors: () => {}, // Set errors to object object
|
|
47
|
+
getErrors: () => {}, // Return current errors
|
|
48
|
+
setError: () => {}, // Init errors object message
|
|
49
|
+
save: () => {}, // Save settings,
|
|
50
|
+
delete: () => {}, // Delete settings,
|
|
51
|
+
shouldFocus: () => {}, // Return the focus object,
|
|
52
|
+
setFocus: () => {}, // Set the focus object,
|
|
53
|
+
isSaved: () => {}, // return saved value
|
|
54
|
+
setSaved: () => {}, // init saved value
|
|
55
|
+
validateForm: () => {} // Validate the form
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The Administration self registration context provider
|
|
60
|
+
*/
|
|
61
|
+
export class AdminSelfRegistrationContextProvider extends React.Component {
|
|
62
|
+
/**
|
|
63
|
+
* Default constructor
|
|
64
|
+
* @param props The component props
|
|
65
|
+
*/
|
|
66
|
+
constructor(props) {
|
|
67
|
+
super(props);
|
|
68
|
+
this.state = this.defaultState;
|
|
69
|
+
const apiClientOptions = props.context.getApiClientOptions();
|
|
70
|
+
this.selfRegistrationService = new SelfRegistrationService(
|
|
71
|
+
apiClientOptions
|
|
72
|
+
);
|
|
73
|
+
this.selfRegistrationFormService = new SelfRegistrationFormService(
|
|
74
|
+
this.props.t
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Returns the default component state
|
|
80
|
+
*/
|
|
81
|
+
get defaultState() {
|
|
82
|
+
return {
|
|
83
|
+
errors: new Map(), // The error map object
|
|
84
|
+
submitted: false, // The informations about the form state
|
|
85
|
+
currentSettings: null, // The current settings
|
|
86
|
+
focus: false, // return request to focus to input
|
|
87
|
+
saved: false, // return request to inform about a saved
|
|
88
|
+
domains: new SelfRegistrationDomainsViewModel(), // Change done to the allowed domains object
|
|
89
|
+
processing: true, // Context is processing data
|
|
90
|
+
getCurrentSettings: this.getCurrentSettings.bind(this), // Returns settings saved
|
|
91
|
+
getAllowedDomains: this.getAllowedDomains.bind(this), // Returns allowed domains for UI changes
|
|
92
|
+
setAllowedDomains: this.setAllowedDomains.bind(this), // Returns allowed domains for UI changes
|
|
93
|
+
setDomains: this.setDomains.bind(this), // change domains
|
|
94
|
+
findSettings: this.findSettings.bind(this), // Find the current self registraiton settings and store it in the state
|
|
95
|
+
hasSettingsChanges: this.hasSettingsChanges.bind(this), // Check if setting has changes
|
|
96
|
+
isProcessing: this.isProcessing.bind(this), // returns true if a process is running and the UI must be disabled
|
|
97
|
+
setProcessing: this.setProcessing.bind(this),
|
|
98
|
+
clearContext: this.clearContext.bind(this), // put the data to its default state value
|
|
99
|
+
isSubmitted: this.isSubmitted.bind(this), // returns the value submitted
|
|
100
|
+
setSubmitted: this.setSubmitted.bind(this), // Set the submitted variable
|
|
101
|
+
getErrors: this.getErrors.bind(this), // Return current errors
|
|
102
|
+
setError: this.setError.bind(this), // Set an error to object object
|
|
103
|
+
setErrors: this.setErrors.bind(this), // Set errors to object object
|
|
104
|
+
save: this.save.bind(this), // Save the policy changes
|
|
105
|
+
shouldFocus: this.shouldFocus.bind(this), // Return the focus object,
|
|
106
|
+
setFocus: this.setFocus.bind(this), // Set the focus object
|
|
107
|
+
isSaved: this.isSaved.bind(this), // return saved value
|
|
108
|
+
setSaved: this.setSaved.bind(this), // init saved value
|
|
109
|
+
deleteSettings: this.deleteSettings.bind(this), // Delete settings,
|
|
110
|
+
validateForm: this.validateForm.bind(this), // Validate the form
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Find the self registration settings
|
|
116
|
+
* @return {Promise<void>}
|
|
117
|
+
*/
|
|
118
|
+
async findSettings(callback = () => {}) {
|
|
119
|
+
this.setProcessing(true);
|
|
120
|
+
const result = await this.selfRegistrationService.find();
|
|
121
|
+
//Init saved setting
|
|
122
|
+
this.setState({currentSettings: result});
|
|
123
|
+
const domains = new SelfRegistrationDomainsViewModel(result);
|
|
124
|
+
//Init allowed domains which will interact with UI
|
|
125
|
+
this.setDomains(domains, callback);
|
|
126
|
+
this.setProcessing(false);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Returns the setting actually saved inside DB
|
|
131
|
+
* @returns {object}
|
|
132
|
+
*/
|
|
133
|
+
getCurrentSettings() {
|
|
134
|
+
return this.state.currentSettings;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Returns the allowed domains settings that have been fetch previously.
|
|
139
|
+
* @returns {object}
|
|
140
|
+
*/
|
|
141
|
+
getAllowedDomains() {
|
|
142
|
+
return this.state.domains.allowedDomains;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Handle settings changes.
|
|
148
|
+
* @params {ReactEvent} The react event
|
|
149
|
+
* @returns {void}
|
|
150
|
+
*/
|
|
151
|
+
setAllowedDomains(key, value, callback = () => {}) {
|
|
152
|
+
this.setState(prevState => {
|
|
153
|
+
const allowedDomains = MapObject.clone(prevState.domains.allowedDomains);
|
|
154
|
+
allowedDomains.set(key, value);
|
|
155
|
+
return {domains: {allowedDomains}};
|
|
156
|
+
}, callback);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Handle domains changes.
|
|
161
|
+
* @params {ReactEvent} The react event
|
|
162
|
+
* @returns {void}
|
|
163
|
+
*/
|
|
164
|
+
setDomains(domains, callback = () => {}) {
|
|
165
|
+
this.setState({domains}, callback);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Returns true when the data is under processing
|
|
170
|
+
* @returns {boolean}
|
|
171
|
+
*
|
|
172
|
+
*/
|
|
173
|
+
isProcessing() {
|
|
174
|
+
return this.state.processing;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Handle processing change.
|
|
179
|
+
* @params {Boolean} processing value
|
|
180
|
+
* @returns {void}
|
|
181
|
+
*/
|
|
182
|
+
setProcessing(processing) {
|
|
183
|
+
this.setState({processing});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* return true if the form has been submitted
|
|
188
|
+
* @returns {Boolean}
|
|
189
|
+
*/
|
|
190
|
+
isSubmitted() {
|
|
191
|
+
return this.state.submitted;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* change value for isSubmitted
|
|
196
|
+
* @params {Boolean}
|
|
197
|
+
* @returns {Boolean}
|
|
198
|
+
*/
|
|
199
|
+
setSubmitted(submitted) {
|
|
200
|
+
this.setState({submitted});
|
|
201
|
+
this.setFocus(submitted);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* return the errors object
|
|
206
|
+
*/
|
|
207
|
+
getErrors() {
|
|
208
|
+
return this.state.errors;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* return the focus object
|
|
213
|
+
*/
|
|
214
|
+
shouldFocus() {
|
|
215
|
+
return this.state.focus;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* change value for isSubmitted
|
|
220
|
+
* @params {Boolean}
|
|
221
|
+
* @returns {Boolean}
|
|
222
|
+
*/
|
|
223
|
+
setFocus(focus) {
|
|
224
|
+
this.setState({focus});
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* set an error to object
|
|
229
|
+
*/
|
|
230
|
+
setError(key, value) {
|
|
231
|
+
this.setState(prevState => {
|
|
232
|
+
const errors = MapObject.clone(prevState.errors);
|
|
233
|
+
errors.set(key, value);
|
|
234
|
+
return {errors};
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* set errors to object
|
|
240
|
+
*/
|
|
241
|
+
setErrors(errors) {
|
|
242
|
+
this.setState({errors});
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Check if there are changes to apply
|
|
247
|
+
* @returns {Boolean}
|
|
248
|
+
*/
|
|
249
|
+
hasSettingsChanges() {
|
|
250
|
+
// we compare the domains from the server vs the UI
|
|
251
|
+
const savedDomains = this.state.currentSettings?.data?.allowed_domains || [];
|
|
252
|
+
const uiDomains = MapObject.listValues(this.state.domains.allowedDomains);
|
|
253
|
+
|
|
254
|
+
return (
|
|
255
|
+
(JSON.stringify(savedDomains) !== JSON.stringify(uiDomains))
|
|
256
|
+
);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Puts the state to its default in order to avoid keeping the data users didn't want to save.
|
|
261
|
+
*/
|
|
262
|
+
clearContext() {
|
|
263
|
+
const {currentSettings, domains, processing} = this.defaultState;
|
|
264
|
+
this.setState({
|
|
265
|
+
currentSettings,
|
|
266
|
+
domains,
|
|
267
|
+
processing,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Whenever the save has been requested
|
|
273
|
+
*/
|
|
274
|
+
async save() {
|
|
275
|
+
this.setSubmitted(true);
|
|
276
|
+
const isValid = await this.validateForm();
|
|
277
|
+
if (isValid) {
|
|
278
|
+
if (this.hasSettingsChanges() && this.getAllowedDomains().size === 0) {
|
|
279
|
+
this.displayConfirmDeletionDialog();
|
|
280
|
+
} else {
|
|
281
|
+
this.displayConfirmSummaryDialog();
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* validate the form
|
|
288
|
+
* @returns {void}
|
|
289
|
+
*/
|
|
290
|
+
async validateForm() {
|
|
291
|
+
const errors = await this.selfRegistrationFormService.validate(this.state.getAllowedDomains());
|
|
292
|
+
this.state.setErrors(errors);
|
|
293
|
+
return errors.size === 0;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Handle save operation error.
|
|
298
|
+
* @param {object} error The returned error
|
|
299
|
+
*/
|
|
300
|
+
async handleSubmitError(error) {
|
|
301
|
+
if (error.name !== "UserAbortsOperationError") {
|
|
302
|
+
// Unexpected error occurred.
|
|
303
|
+
console.error(error);
|
|
304
|
+
await this.handleError(error);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Whenever the submit request is done
|
|
310
|
+
*/
|
|
311
|
+
async saveSettings() {
|
|
312
|
+
try {
|
|
313
|
+
this.setProcessing(true);
|
|
314
|
+
const newSettings = new SelfRegistrationDto(
|
|
315
|
+
this.state.domains,
|
|
316
|
+
this.state.currentSettings
|
|
317
|
+
);
|
|
318
|
+
await this.selfRegistrationService.save(newSettings);
|
|
319
|
+
await this.findSettings(() => this.setSaved(true));
|
|
320
|
+
await this.props.actionFeedbackContext.displaySuccess(
|
|
321
|
+
this.props.t(
|
|
322
|
+
"The self registration settings for the organization were updated."
|
|
323
|
+
)
|
|
324
|
+
);
|
|
325
|
+
} catch (error) {
|
|
326
|
+
this.handleSubmitError(error);
|
|
327
|
+
} finally {
|
|
328
|
+
this.setProcessing(false);
|
|
329
|
+
this.setSubmitted(false);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* handle error to display the error dialog
|
|
335
|
+
* @param error
|
|
336
|
+
*/
|
|
337
|
+
async handleError(error) {
|
|
338
|
+
this.handleCloseDialog();
|
|
339
|
+
const errorDialogProps = {
|
|
340
|
+
error: error,
|
|
341
|
+
};
|
|
342
|
+
this.props.dialogContext.open(NotifyError, errorDialogProps);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Handle close dialog
|
|
347
|
+
*/
|
|
348
|
+
handleCloseDialog() {
|
|
349
|
+
this.props.dialogContext.close();
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Display the confirmation summary dialog
|
|
354
|
+
* @returns {Promise<void>}
|
|
355
|
+
*/
|
|
356
|
+
displayConfirmSummaryDialog() {
|
|
357
|
+
this.props.dialogContext.open(ConfirmSaveSelfRegistrationSettings, {
|
|
358
|
+
domains: this.getAllowedDomains(),
|
|
359
|
+
onSubmit: () => this.saveSettings(),
|
|
360
|
+
onClose: () => this.handleCloseDialog(),
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Display the confirmation dialog for deletion seytings
|
|
366
|
+
* @returns {Promise<void>}
|
|
367
|
+
*/
|
|
368
|
+
displayConfirmDeletionDialog() {
|
|
369
|
+
this.props.dialogContext.open(ConfirmDeletionSelfRegistrationSettings, {
|
|
370
|
+
onSubmit: () => this.deleteSettings(),
|
|
371
|
+
onClose: () => this.handleCloseDialog(),
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Whenever the delete has been requested
|
|
377
|
+
*/
|
|
378
|
+
async deleteSettings() {
|
|
379
|
+
try {
|
|
380
|
+
this.setProcessing(true);
|
|
381
|
+
await this.selfRegistrationService.delete(this.state.currentSettings.id);
|
|
382
|
+
await this.findSettings();
|
|
383
|
+
await this.props.actionFeedbackContext.displaySuccess(
|
|
384
|
+
this.props.t(
|
|
385
|
+
"The self registration settings for the organization were updated."
|
|
386
|
+
)
|
|
387
|
+
);
|
|
388
|
+
} catch (error) {
|
|
389
|
+
this.handleSubmitError(error);
|
|
390
|
+
} finally {
|
|
391
|
+
this.setProcessing(false);
|
|
392
|
+
this.setSubmitted(false);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* return the saved state
|
|
398
|
+
*/
|
|
399
|
+
isSaved() {
|
|
400
|
+
return this.state.saved;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Set saved state
|
|
405
|
+
* @Param {Boolean}
|
|
406
|
+
*/
|
|
407
|
+
setSaved(saved) {
|
|
408
|
+
return this.setState({saved});
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Render the component
|
|
413
|
+
* @returns {JSX}
|
|
414
|
+
*/
|
|
415
|
+
render() {
|
|
416
|
+
return (
|
|
417
|
+
<AdminSelfRegistrationContext.Provider value={this.state}>
|
|
418
|
+
{this.props.children}
|
|
419
|
+
</AdminSelfRegistrationContext.Provider>
|
|
420
|
+
);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
AdminSelfRegistrationContextProvider.propTypes = {
|
|
425
|
+
context: PropTypes.any, // The application context
|
|
426
|
+
children: PropTypes.any, // The children components
|
|
427
|
+
t: PropTypes.any, // The translate context
|
|
428
|
+
dialogContext: PropTypes.any, // The dialog context
|
|
429
|
+
actionFeedbackContext: PropTypes.object, // The action feedback context
|
|
430
|
+
};
|
|
431
|
+
|
|
432
|
+
export default withAppContext(withDialog(withActionFeedback(withTranslation("common")(AdminSelfRegistrationContextProvider))));
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Resource Workspace Context Consumer HOC
|
|
436
|
+
* @param WrappedComponent
|
|
437
|
+
*/
|
|
438
|
+
export function withAdminSelfRegistration(WrappedComponent) {
|
|
439
|
+
return class WithAdminSelfRegistration extends React.Component {
|
|
440
|
+
render() {
|
|
441
|
+
return (
|
|
442
|
+
<AdminSelfRegistrationContext.Consumer>
|
|
443
|
+
{adminSelfRegistrationContext => (
|
|
444
|
+
<WrappedComponent
|
|
445
|
+
adminSelfRegistrationContext={adminSelfRegistrationContext}
|
|
446
|
+
{...this.props}
|
|
447
|
+
/>
|
|
448
|
+
)}
|
|
449
|
+
</AdminSelfRegistrationContext.Consumer>
|
|
450
|
+
);
|
|
451
|
+
}
|
|
452
|
+
};
|
|
453
|
+
}
|