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
|
@@ -18,10 +18,12 @@ import {DateTime} from "luxon";
|
|
|
18
18
|
import {withAdministrationWorkspace} from "../../../contexts/AdministrationWorkspaceContext";
|
|
19
19
|
import {Trans, withTranslation} from "react-i18next";
|
|
20
20
|
import {withDialog} from "../../../../react-extension/contexts/DialogContext";
|
|
21
|
-
import EditSubscriptionKey from "../EditSubscriptionKey/EditSubscriptionKey";
|
|
22
21
|
import {withNavigationContext} from "../../../contexts/NavigationContext";
|
|
23
22
|
import Icon from "../../../../shared/components/Icons/Icon";
|
|
24
23
|
import AnimatedFeedback from "../../../../shared/components/Icons/AnimatedFeedback";
|
|
24
|
+
import SubscriptionActionService from '../../../../shared/services/actions/subscription/SubscriptionActionService';
|
|
25
|
+
import DisplayAdministrationSubscriptionActions from "../DisplayAdministrationWorkspaceActions/DisplayAdministrationSubscriptionActions/DisplayAdministrationSubscriptionActions";
|
|
26
|
+
import {withAdminSubscription} from "../../../contexts/Administration/AdministrationSubscription/AdministrationSubscription";
|
|
25
27
|
|
|
26
28
|
/**
|
|
27
29
|
* This component allows to display the subscription key for the administration
|
|
@@ -35,6 +37,7 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
35
37
|
super(props);
|
|
36
38
|
this.state = this.defaultState;
|
|
37
39
|
this.bindCallbacks();
|
|
40
|
+
this.subscriptionActionService = SubscriptionActionService.getInstance(this.props);
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
/**
|
|
@@ -43,34 +46,31 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
43
46
|
*/
|
|
44
47
|
get defaultState() {
|
|
45
48
|
return {
|
|
46
|
-
loading: true, // component is loading or not
|
|
47
|
-
|
|
48
|
-
// Subscription Key
|
|
49
|
-
customerId: "", // Chargebee customer id
|
|
50
|
-
subscriptionId: "", // Chargebee subscription id
|
|
51
|
-
users: null, // The number of users the subscription is valid for
|
|
52
|
-
email: "", // The email used to manage the subscription
|
|
53
|
-
expiry: null, // The date when the license key expires
|
|
54
|
-
created: null, // The date when the license key was created
|
|
55
|
-
data: null, // Base64 encoded subscription, the original subscription key
|
|
56
|
-
|
|
57
49
|
// active users
|
|
58
50
|
activeUsers: null // The number of active users
|
|
59
51
|
};
|
|
60
52
|
}
|
|
61
53
|
|
|
54
|
+
/**
|
|
55
|
+
* ComponentDidMount
|
|
56
|
+
* Invoked immediately after component is inserted into the tree
|
|
57
|
+
* @return {void}
|
|
58
|
+
*/
|
|
62
59
|
async componentDidMount() {
|
|
60
|
+
this.props.administrationWorkspaceContext.setDisplayAdministrationWorkspaceAction(DisplayAdministrationSubscriptionActions);
|
|
63
61
|
this.findActiveUsers();
|
|
64
|
-
this.findSubscriptionKey();
|
|
62
|
+
await this.findSubscriptionKey();
|
|
65
63
|
}
|
|
66
64
|
|
|
67
65
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
66
|
+
* componentWillUnmount
|
|
67
|
+
* Use to clear the data from the form in case the user put something that needs to be cleared.
|
|
70
68
|
*/
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
componentWillUnmount() {
|
|
70
|
+
this.props.administrationWorkspaceContext.resetDisplayAdministrationWorkspaceAction();
|
|
71
|
+
this.props.adminSubcriptionContext.clearContext();
|
|
72
|
+
SubscriptionActionService.killInstance();
|
|
73
|
+
this.mfaFormService = null;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/**
|
|
@@ -81,44 +81,11 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
81
81
|
this.handleUpdateKey = this.handleUpdateKey.bind(this);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
/**
|
|
85
|
-
* Handle the must refresh subscription key
|
|
86
|
-
* @param previousRefreshSubscriptionKey Previous refresh subscription key
|
|
87
|
-
*/
|
|
88
|
-
async handleMustRefreshSubscriptionKey(previousRefreshSubscriptionKey) {
|
|
89
|
-
const hasRefreshSubscriptionKeyChanged = this.props.administrationWorkspaceContext.must.refreshSubscriptionKey !== previousRefreshSubscriptionKey;
|
|
90
|
-
if (hasRefreshSubscriptionKeyChanged && this.props.administrationWorkspaceContext.must.refreshSubscriptionKey) {
|
|
91
|
-
await this.findActiveUsers();
|
|
92
|
-
await this.findSubscriptionKey();
|
|
93
|
-
this.props.administrationWorkspaceContext.onResetActionsSettings();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Handle the must edit subscription key
|
|
99
|
-
* @param previousEditSubscriptionKey Previous edit subscription key
|
|
100
|
-
*/
|
|
101
|
-
async handleMustEditSubscriptionKey(previousEditSubscriptionKey) {
|
|
102
|
-
const hasEditSubscriptionKeyChanged = this.props.administrationWorkspaceContext.must.editSubscriptionKey !== previousEditSubscriptionKey;
|
|
103
|
-
if (hasEditSubscriptionKeyChanged && this.props.administrationWorkspaceContext.must.editSubscriptionKey) {
|
|
104
|
-
this.openEditSubscriptionKey();
|
|
105
|
-
this.props.administrationWorkspaceContext.onResetActionsSettings();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
openEditSubscriptionKey() {
|
|
110
|
-
const editSubscriptionKey = {
|
|
111
|
-
key: this.state.data
|
|
112
|
-
};
|
|
113
|
-
this.props.context.setContext({editSubscriptionKey});
|
|
114
|
-
this.props.dialogContext.open(EditSubscriptionKey);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
84
|
/**
|
|
118
85
|
* fetch the active users
|
|
119
86
|
*/
|
|
120
87
|
async findActiveUsers() {
|
|
121
|
-
const activeUsers = await this.getActiveUsers();
|
|
88
|
+
const activeUsers = await this.props.adminSubcriptionContext.getActiveUsers();
|
|
122
89
|
this.setState({activeUsers});
|
|
123
90
|
}
|
|
124
91
|
|
|
@@ -126,69 +93,18 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
126
93
|
* fetch the subscription key
|
|
127
94
|
*/
|
|
128
95
|
async findSubscriptionKey() {
|
|
129
|
-
|
|
130
|
-
const subscription = await this.props.context.onGetSubscriptionKeyRequested();
|
|
131
|
-
const customerId = subscription.customer_id;
|
|
132
|
-
const subscriptionId = subscription.subscription_id;
|
|
133
|
-
const users = subscription.users;
|
|
134
|
-
const email = subscription.email;
|
|
135
|
-
const expiry = subscription.expiry;
|
|
136
|
-
const created = subscription.created;
|
|
137
|
-
const data = subscription.data;
|
|
138
|
-
|
|
139
|
-
this.setState({
|
|
140
|
-
loading: false,
|
|
141
|
-
customerId,
|
|
142
|
-
subscriptionId,
|
|
143
|
-
users,
|
|
144
|
-
email,
|
|
145
|
-
expiry,
|
|
146
|
-
created,
|
|
147
|
-
data
|
|
148
|
-
});
|
|
149
|
-
} catch (error) {
|
|
150
|
-
this.handleSubscriptionError(error);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Handle subscription error
|
|
156
|
-
* @param error
|
|
157
|
-
*/
|
|
158
|
-
handleSubscriptionError(error) {
|
|
159
|
-
if (error.name === "PassboltSubscriptionError") {
|
|
160
|
-
const subscription = error.subscription;
|
|
161
|
-
const customerId = subscription.customer_id || "N/A";
|
|
162
|
-
const subscriptionId = subscription.subscription_id;
|
|
163
|
-
const users = subscription.users;
|
|
164
|
-
const email = subscription.email || "N/A";
|
|
165
|
-
const expiry = subscription.expiry;
|
|
166
|
-
const created = subscription.created;
|
|
167
|
-
const data = subscription.data;
|
|
168
|
-
|
|
169
|
-
this.setState({
|
|
170
|
-
loading: false,
|
|
171
|
-
customerId,
|
|
172
|
-
subscriptionId,
|
|
173
|
-
users,
|
|
174
|
-
email,
|
|
175
|
-
expiry,
|
|
176
|
-
created,
|
|
177
|
-
data,
|
|
178
|
-
});
|
|
179
|
-
} else {
|
|
180
|
-
this.setState({loading: false});
|
|
181
|
-
}
|
|
96
|
+
this.props.adminSubcriptionContext.findSubscriptionKey();
|
|
182
97
|
}
|
|
183
98
|
|
|
184
99
|
/**
|
|
185
100
|
* Handle renew key click event
|
|
186
101
|
*/
|
|
187
102
|
handleRenewKey() {
|
|
103
|
+
const subscription = this.props.adminSubcriptionContext.getSubscription();
|
|
188
104
|
if (this.hasLimitUsersExceeded()) {
|
|
189
|
-
this.props.navigationContext.onGoToNewTab(`https://www.passbolt.com/subscription/ee/update/qty?subscription_id=${
|
|
105
|
+
this.props.navigationContext.onGoToNewTab(`https://www.passbolt.com/subscription/ee/update/qty?subscription_id=${subscription.subscriptionId}&customer_id=${subscription.customerId}`);
|
|
190
106
|
} else if (this.hasSubscriptionKeyExpired() || this.hasSubscriptionKeyGoingToExpire()) {
|
|
191
|
-
this.props.navigationContext.onGoToNewTab(`https://www.passbolt.com/subscription/ee/update/renew?subscription_id=${
|
|
107
|
+
this.props.navigationContext.onGoToNewTab(`https://www.passbolt.com/subscription/ee/update/renew?subscription_id=${subscription.subscriptionId}&customer_id=${subscription.customerId}`);
|
|
192
108
|
}
|
|
193
109
|
}
|
|
194
110
|
|
|
@@ -196,15 +112,7 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
196
112
|
* Handle update key click event
|
|
197
113
|
*/
|
|
198
114
|
handleUpdateKey() {
|
|
199
|
-
this.
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* True if state is loading
|
|
204
|
-
* @returns {boolean}
|
|
205
|
-
*/
|
|
206
|
-
isLoading() {
|
|
207
|
-
return this.state.loading;
|
|
115
|
+
this.subscriptionActionService.editSubscription();
|
|
208
116
|
}
|
|
209
117
|
|
|
210
118
|
/**
|
|
@@ -212,7 +120,7 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
212
120
|
* @returns {boolean}
|
|
213
121
|
*/
|
|
214
122
|
hasSubscriptionKeyExpired() {
|
|
215
|
-
return DateTime.fromISO(this.
|
|
123
|
+
return DateTime.fromISO(this.props.adminSubcriptionContext.getSubscription().expiry) < DateTime.now();
|
|
216
124
|
}
|
|
217
125
|
|
|
218
126
|
/**
|
|
@@ -220,7 +128,7 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
220
128
|
* @returns {boolean}
|
|
221
129
|
*/
|
|
222
130
|
hasSubscriptionKeyGoingToExpire() {
|
|
223
|
-
return DateTime.fromISO(this.
|
|
131
|
+
return DateTime.fromISO(this.props.adminSubcriptionContext.getSubscription().expiry) < DateTime.now().plus({days: 30}) && !this.hasSubscriptionKeyExpired();
|
|
224
132
|
}
|
|
225
133
|
|
|
226
134
|
/**
|
|
@@ -228,7 +136,7 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
228
136
|
* @returns {boolean}
|
|
229
137
|
*/
|
|
230
138
|
hasSubscriptionKey() {
|
|
231
|
-
return Boolean(this.
|
|
139
|
+
return Boolean(this.props.adminSubcriptionContext.getSubscription().data);
|
|
232
140
|
}
|
|
233
141
|
|
|
234
142
|
/**
|
|
@@ -236,7 +144,8 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
236
144
|
* @returns {boolean}
|
|
237
145
|
*/
|
|
238
146
|
hasLimitUsersExceeded() {
|
|
239
|
-
|
|
147
|
+
const subscription = this.props.adminSubcriptionContext.getSubscription();
|
|
148
|
+
return subscription.users < this.state.activeUsers;
|
|
240
149
|
}
|
|
241
150
|
|
|
242
151
|
/**
|
|
@@ -288,17 +197,6 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
288
197
|
return duration > -1000 && duration < 0 ? this.translate('Just now') : dateTime.toRelative({locale: this.props.context.locale});
|
|
289
198
|
}
|
|
290
199
|
|
|
291
|
-
/**
|
|
292
|
-
* Get active users
|
|
293
|
-
* @returns {*}
|
|
294
|
-
* @constructor
|
|
295
|
-
*/
|
|
296
|
-
async getActiveUsers() {
|
|
297
|
-
const users = await this.props.context.port.request("passbolt.users.get-all");
|
|
298
|
-
const filterActiveUsers = user => user.active;
|
|
299
|
-
return users.filter(filterActiveUsers).length;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
200
|
/**
|
|
303
201
|
* Get the translate function
|
|
304
202
|
* @returns {function(...[*]=)}
|
|
@@ -312,9 +210,11 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
312
210
|
* @returns {JSX}
|
|
313
211
|
*/
|
|
314
212
|
render() {
|
|
213
|
+
const subscription = this.props.adminSubcriptionContext.getSubscription();
|
|
214
|
+
const isProcessing = this.props.adminSubcriptionContext.isProcessing();
|
|
315
215
|
return (
|
|
316
216
|
<div className="row">
|
|
317
|
-
{!
|
|
217
|
+
{!isProcessing &&
|
|
318
218
|
<div className="subscription-key col8 main-column">
|
|
319
219
|
<h3><Trans>Subscription key details</Trans></h3>
|
|
320
220
|
<div className="feedback-card">
|
|
@@ -349,31 +249,31 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
349
249
|
<ul>
|
|
350
250
|
<li className="customer-id">
|
|
351
251
|
<span className="label"><Trans>Customer id:</Trans></span>
|
|
352
|
-
<span className="value">{
|
|
252
|
+
<span className="value">{subscription.customerId}</span>
|
|
353
253
|
</li>
|
|
354
254
|
<li className="subscription-id">
|
|
355
255
|
<span className="label"><Trans>Subscription id:</Trans></span>
|
|
356
|
-
<span className="value">{
|
|
256
|
+
<span className="value">{subscription.subscriptionId}</span>
|
|
357
257
|
</li>
|
|
358
258
|
<li className="email">
|
|
359
259
|
<span className="label"><Trans>Email:</Trans></span>
|
|
360
|
-
<span className="value">{
|
|
260
|
+
<span className="value">{subscription.email}</span>
|
|
361
261
|
</li>
|
|
362
262
|
<li className="users">
|
|
363
263
|
<span
|
|
364
264
|
className={`label ${this.hasLimitUsersExceeded() ? "error" : ""}`}><Trans>Users limit:</Trans></span>
|
|
365
265
|
<span
|
|
366
|
-
className={`value ${this.hasLimitUsersExceeded() ? "error" : ""}`}>{
|
|
266
|
+
className={`value ${this.hasLimitUsersExceeded() ? "error" : ""}`}>{subscription.users} (<Trans>currently:</Trans> {this.state.activeUsers})</span>
|
|
367
267
|
</li>
|
|
368
268
|
<li className="created">
|
|
369
269
|
<span className="label"><Trans>Valid from:</Trans></span>
|
|
370
|
-
<span className="value">{this.formatDate(
|
|
270
|
+
<span className="value">{this.formatDate(subscription.created)}</span>
|
|
371
271
|
</li>
|
|
372
272
|
<li className="expiry">
|
|
373
273
|
<span
|
|
374
274
|
className={`label ${this.hasSubscriptionKeyExpired() ? "error" : ""} ${this.hasSubscriptionKeyGoingToExpire() ? "warning" : ""}`}><Trans>Expires on:</Trans></span>
|
|
375
275
|
<span
|
|
376
|
-
className={`value ${this.hasSubscriptionKeyExpired() ? "error" : ""} ${this.hasSubscriptionKeyGoingToExpire() ? "warning" : ""}`}>{this.formatDate(
|
|
276
|
+
className={`value ${this.hasSubscriptionKeyExpired() ? "error" : ""} ${this.hasSubscriptionKeyGoingToExpire() ? "warning" : ""}`}>{this.formatDate(subscription.expiry)} ({`${this.hasSubscriptionKeyExpired() ? this.translate("expired ") : ""}${this.formatDateTimeAgo(subscription.expiry)}`})</span>
|
|
377
277
|
</li>
|
|
378
278
|
</ul>
|
|
379
279
|
}
|
|
@@ -396,7 +296,7 @@ class DisplaySubscriptionKey extends React.Component {
|
|
|
396
296
|
</div>
|
|
397
297
|
</div>
|
|
398
298
|
}
|
|
399
|
-
{!
|
|
299
|
+
{!isProcessing &&
|
|
400
300
|
<div className="col4 last">
|
|
401
301
|
<div className="sidebar-help">
|
|
402
302
|
<h3><Trans>Need help?</Trans></h3>
|
|
@@ -417,8 +317,9 @@ DisplaySubscriptionKey.propTypes = {
|
|
|
417
317
|
context: PropTypes.any, // The application context
|
|
418
318
|
navigationContext: PropTypes.any, // The application navigation context
|
|
419
319
|
administrationWorkspaceContext: PropTypes.object, // The administration workspace context
|
|
320
|
+
adminSubcriptionContext: PropTypes.object, // The administration subscription context
|
|
420
321
|
dialogContext: PropTypes.any, // The dialog congtext
|
|
421
322
|
t: PropTypes.func,
|
|
422
323
|
};
|
|
423
324
|
|
|
424
|
-
export default withAppContext(withNavigationContext(withAdministrationWorkspace(withDialog(withTranslation('common')(DisplaySubscriptionKey)))));
|
|
325
|
+
export default withAppContext(withNavigationContext(withAdminSubscription(withAdministrationWorkspace(withDialog(withTranslation('common')(DisplaySubscriptionKey))))));
|
|
@@ -20,7 +20,6 @@ import {DateTime} from "luxon";
|
|
|
20
20
|
import {defaultAppContext} from "../../../contexts/ExtAppContext.test.data";
|
|
21
21
|
import {defaultDialogContext} from "../../../contexts/DialogContext.test.data";
|
|
22
22
|
import {defaultNavigationContext} from "../../../contexts/NavigationContext.test.data";
|
|
23
|
-
import {defaultAdministrationWorkspaceContext} from "../../../contexts/AdministrationWorkspaceContext.test.data";
|
|
24
23
|
import MockPort from "../../../test/mock/MockPort";
|
|
25
24
|
|
|
26
25
|
/**
|
|
@@ -33,12 +32,15 @@ export function defaultProps(props = {}) {
|
|
|
33
32
|
port.addRequestListener('passbolt.users.get-all', () => mockUsers);
|
|
34
33
|
const defaultContext = {
|
|
35
34
|
onGetSubscriptionKeyRequested: () => mockSubscription,
|
|
36
|
-
port: port
|
|
35
|
+
port: port,
|
|
37
36
|
};
|
|
38
37
|
|
|
39
38
|
const defaultProps = {
|
|
40
39
|
context: defaultAppContext(Object.assign(defaultContext, props?.context)),
|
|
41
|
-
administrationWorkspaceContext:
|
|
40
|
+
administrationWorkspaceContext: {
|
|
41
|
+
setDisplayAdministrationWorkspaceAction: jest.fn(),
|
|
42
|
+
resetDisplayAdministrationWorkspaceAction: jest.fn()
|
|
43
|
+
},
|
|
42
44
|
dialogContext: defaultDialogContext(),
|
|
43
45
|
navigationContext: defaultNavigationContext()
|
|
44
46
|
};
|
|
@@ -120,6 +122,16 @@ export const mockSubscription = {
|
|
|
120
122
|
"data": "data"
|
|
121
123
|
};
|
|
122
124
|
|
|
125
|
+
export const mockSubscriptionModel = {
|
|
126
|
+
"created": "2020-12-01T00:00:00.661Z",
|
|
127
|
+
"customerId": "1n6BPvHRWfizhmARz",
|
|
128
|
+
"data": "data",
|
|
129
|
+
"email": "ada@passbolt.com",
|
|
130
|
+
"expiry": expiredDate.toISOString(),
|
|
131
|
+
"subscriptionId": "1n6BPvHRWfizhmARz",
|
|
132
|
+
"users": 5,
|
|
133
|
+
};
|
|
134
|
+
|
|
123
135
|
export const mockSubscriptionUsersExceeded = {
|
|
124
136
|
"customer_id": "1n6BPvHRWfizhmARz",
|
|
125
137
|
"subscription_id": "1n6BPvHRWfizhmARz",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import {
|
|
19
19
|
defaultProps, formatDate,
|
|
20
|
-
mockSubscription, mockSubscriptionExpired,
|
|
20
|
+
mockSubscription, mockSubscriptionExpired,
|
|
21
21
|
mockSubscriptionUsersExceeded,
|
|
22
22
|
mockUsers
|
|
23
23
|
} from "./DisplaySubscriptionKey.test.data";
|
|
@@ -27,16 +27,14 @@ import {waitFor} from "@testing-library/react";
|
|
|
27
27
|
import {DateTime} from "luxon";
|
|
28
28
|
import EditSubscriptionKey from "../EditSubscriptionKey/EditSubscriptionKey";
|
|
29
29
|
import PassboltSubscriptionError from "../../../lib/Error/PassboltSubscriptionError";
|
|
30
|
-
import {defaultAdministrationWorkspaceContext} from "../../../contexts/AdministrationWorkspaceContext.test.data";
|
|
31
30
|
|
|
32
31
|
beforeEach(() => {
|
|
33
32
|
jest.resetModules();
|
|
34
33
|
});
|
|
35
34
|
|
|
36
|
-
describe("
|
|
35
|
+
describe("DisplaySubscriptionKeyPage", () => {
|
|
37
36
|
let page; // The page to test against
|
|
38
37
|
const props = defaultProps(); // The props to pass
|
|
39
|
-
|
|
40
38
|
describe(' As AD I can see the subscription', () => {
|
|
41
39
|
/**
|
|
42
40
|
* Given a valid subscription
|
|
@@ -47,7 +45,7 @@ describe("As AD I should see the subscription", () => {
|
|
|
47
45
|
* And I should be able to identify when the subscription expire
|
|
48
46
|
*/
|
|
49
47
|
it('As AD I should see all details about the subscription', async() => {
|
|
50
|
-
page = new DisplaySubscriptionKeyPage(props);
|
|
48
|
+
page = new DisplaySubscriptionKeyPage(props.context, props);
|
|
51
49
|
await waitFor(() => {});
|
|
52
50
|
expect(page.exists()).toBeTruthy();
|
|
53
51
|
expect(page.title).toBe("Subscription key details");
|
|
@@ -68,7 +66,7 @@ describe("As AD I should see the subscription", () => {
|
|
|
68
66
|
jest.spyOn(props.context, 'onGetSubscriptionKeyRequested').mockImplementationOnce(() => {
|
|
69
67
|
throw new PassboltSubscriptionError("users exceeded", mockSubscriptionUsersExceeded);
|
|
70
68
|
});
|
|
71
|
-
page = new DisplaySubscriptionKeyPage(props);
|
|
69
|
+
page = new DisplaySubscriptionKeyPage(props.context, props);
|
|
72
70
|
await waitFor(() => {});
|
|
73
71
|
|
|
74
72
|
expect(page.subscriptionDetailsTitle).toBe("Your subscription key is not valid.");
|
|
@@ -90,7 +88,7 @@ describe("As AD I should see the subscription", () => {
|
|
|
90
88
|
jest.spyOn(props.context, 'onGetSubscriptionKeyRequested').mockImplementationOnce(() => {
|
|
91
89
|
throw new PassboltSubscriptionError("key expired", mockSubscriptionExpired);
|
|
92
90
|
});
|
|
93
|
-
page = new DisplaySubscriptionKeyPage(props);
|
|
91
|
+
page = new DisplaySubscriptionKeyPage(props.context, props);
|
|
94
92
|
await waitFor(() => {});
|
|
95
93
|
|
|
96
94
|
expect(page.subscriptionDetailsTitle).toBe("Your subscription key is not valid.");
|
|
@@ -108,11 +106,13 @@ describe("As AD I should see the subscription", () => {
|
|
|
108
106
|
expect(props.navigationContext.onGoToNewTab).toHaveBeenCalledWith(`https://www.passbolt.com/subscription/ee/update/renew?subscription_id=${mockSubscriptionExpired.subscription_id}&customer_id=${mockSubscriptionExpired.customer_id}`);
|
|
109
107
|
});
|
|
110
108
|
|
|
109
|
+
|
|
111
110
|
it('As AD I should be able to identify if the key is missing', async() => {
|
|
111
|
+
expect.assertions(4);
|
|
112
112
|
jest.spyOn(props.context, 'onGetSubscriptionKeyRequested').mockImplementationOnce(() => {
|
|
113
113
|
throw new PassboltApiFetchError("missing key", {});
|
|
114
114
|
});
|
|
115
|
-
page = new DisplaySubscriptionKeyPage(props);
|
|
115
|
+
page = new DisplaySubscriptionKeyPage(props.context, props);
|
|
116
116
|
await waitFor(() => {});
|
|
117
117
|
|
|
118
118
|
expect(page.subscriptionDetailsTitle).toBe("Your subscription key is either missing or not valid.");
|
|
@@ -126,67 +126,40 @@ describe("As AD I should see the subscription", () => {
|
|
|
126
126
|
expect(props.context.setContext).toHaveBeenCalledWith({editSubscriptionKey});
|
|
127
127
|
});
|
|
128
128
|
|
|
129
|
+
|
|
129
130
|
it('As AD I should open edit subscription key', async() => {
|
|
130
|
-
|
|
131
|
+
expect.assertions(2);
|
|
132
|
+
page = new DisplaySubscriptionKeyPage(props.context, props);
|
|
133
|
+
|
|
131
134
|
await waitFor(() => {});
|
|
132
135
|
|
|
133
|
-
props.administrationWorkspaceContext = defaultAdministrationWorkspaceContext({
|
|
134
|
-
must: {
|
|
135
|
-
editSubscriptionKey: true,
|
|
136
|
-
refreshSubscriptionKey: false
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
136
|
const editSubscriptionKey = {
|
|
140
137
|
key: mockSubscription.data
|
|
141
138
|
};
|
|
142
139
|
|
|
143
|
-
page.
|
|
144
|
-
|
|
140
|
+
await page.updateKey();
|
|
141
|
+
|
|
145
142
|
expect(props.dialogContext.open).toHaveBeenCalledWith(EditSubscriptionKey);
|
|
146
143
|
expect(props.context.setContext).toHaveBeenCalledWith({editSubscriptionKey});
|
|
147
|
-
expect(props.administrationWorkspaceContext.onResetActionsSettings).toHaveBeenCalled();
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
it('As AD I should refresh the subscription key', async() => {
|
|
151
|
-
page = new DisplaySubscriptionKeyPage(props);
|
|
152
|
-
await waitFor(() => {});
|
|
153
|
-
|
|
154
|
-
props.context.onGetSubscriptionKeyRequested = () => mockSubscriptionUpdated;
|
|
155
|
-
props.administrationWorkspaceContext = defaultAdministrationWorkspaceContext({
|
|
156
|
-
must: {
|
|
157
|
-
editSubscriptionKey: false,
|
|
158
|
-
refreshSubscriptionKey: true
|
|
159
|
-
},
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
page.rerender(props);
|
|
163
|
-
await waitFor(() => {
|
|
164
|
-
expect(page.customerId).toBe(mockSubscriptionUpdated.customer_id);
|
|
165
|
-
expect(page.subscriptionId).toBe(mockSubscriptionUpdated.subscription_id);
|
|
166
|
-
expect(page.email).toBe(mockSubscriptionUpdated.email);
|
|
167
|
-
expect(page.users).toBe(`${mockSubscriptionUpdated.users} (currently: ${mockUsers.length})`);
|
|
168
|
-
expect(page.created).toBe(`${formatDate(mockSubscriptionUpdated.created)}`);
|
|
169
|
-
expect(page.expiry).toBe(`${formatDate(mockSubscriptionUpdated.expiry)} (expired ${DateTime.fromISO(mockSubscriptionUpdated.expiry).toRelative()})`);
|
|
170
|
-
expect(props.administrationWorkspaceContext.onResetActionsSettings).toHaveBeenCalled();
|
|
171
|
-
});
|
|
172
144
|
});
|
|
173
145
|
});
|
|
174
146
|
|
|
175
147
|
describe(' As AD I see an error if no subscription was found', () => {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Given no subscription was found
|
|
150
|
+
* When I go to the subscription
|
|
151
|
+
* Then I should see an error
|
|
152
|
+
*/
|
|
153
|
+
|
|
181
154
|
|
|
182
155
|
it('As AD I should see an error if no subscription key was found', async() => {
|
|
156
|
+
expect.assertions(4);
|
|
183
157
|
jest.spyOn(props.context, 'onGetSubscriptionKeyRequested').mockImplementationOnce(() => {
|
|
184
158
|
throw new PassboltApiFetchError("no subscription key", "");
|
|
185
159
|
});
|
|
186
160
|
|
|
187
|
-
page = new DisplaySubscriptionKeyPage(props);
|
|
161
|
+
page = new DisplaySubscriptionKeyPage(props.context, props);
|
|
188
162
|
await waitFor(() => {});
|
|
189
|
-
|
|
190
163
|
expect(page.subscriptionDetailsTitle).toBe("Your subscription key is either missing or not valid.");
|
|
191
164
|
expect(page.contactUs.getAttribute("href")).toBe("https://www.passbolt.com/contact");
|
|
192
165
|
|
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
import {fireEvent, render, waitFor} from "@testing-library/react";
|
|
15
15
|
import React from "react";
|
|
16
16
|
import DisplaySubscriptionKey from "./DisplaySubscriptionKey";
|
|
17
|
+
import DisplaySubscriptionKeyActions from "../DisplayAdministrationWorkspaceActions/DisplayAdministrationSubscriptionActions/DisplayAdministrationSubscriptionActions";
|
|
17
18
|
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
19
|
+
import AppContext from "../../../contexts/AppContext";
|
|
20
|
+
import {AdminSubscriptionContextProvider} from '../../../contexts/Administration/AdministrationSubscription/AdministrationSubscription';
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
23
|
* The DisplaySubscriptionKey component represented as a page
|
|
@@ -25,18 +28,15 @@ export default class DisplaySubscriptionKeyPage {
|
|
|
25
28
|
* @param appContext An app context
|
|
26
29
|
* @param props Props to attach
|
|
27
30
|
*/
|
|
28
|
-
constructor(props) {
|
|
31
|
+
constructor(appContext, props) {
|
|
29
32
|
this._page = render(
|
|
30
33
|
<MockTranslationProvider>
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this._page.rerender(
|
|
38
|
-
<MockTranslationProvider>
|
|
39
|
-
<DisplaySubscriptionKey {...props}/>
|
|
34
|
+
<AppContext.Provider value={appContext}>
|
|
35
|
+
<AdminSubscriptionContextProvider {...props}>
|
|
36
|
+
<DisplaySubscriptionKeyActions {...props}/>
|
|
37
|
+
<DisplaySubscriptionKey {...props}/>
|
|
38
|
+
</AdminSubscriptionContextProvider>
|
|
39
|
+
</AppContext.Provider>
|
|
40
40
|
</MockTranslationProvider>
|
|
41
41
|
);
|
|
42
42
|
}
|
|
@@ -132,6 +132,14 @@ export default class DisplaySubscriptionKeyPage {
|
|
|
132
132
|
return this._page.container.querySelector('.col4.last a');
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Returns the HTMLElement button of the toolbar that is the "Update key"
|
|
137
|
+
* @returns {HTMLElement}
|
|
138
|
+
*/
|
|
139
|
+
get toolbarActionsUpdateButton() {
|
|
140
|
+
return this._page.container.querySelectorAll(".actions-wrapper .actions a")[0];
|
|
141
|
+
}
|
|
142
|
+
|
|
135
143
|
/**
|
|
136
144
|
* Returns true if the page object exists in the container
|
|
137
145
|
*/
|
|
@@ -153,7 +161,7 @@ export default class DisplaySubscriptionKeyPage {
|
|
|
153
161
|
*/
|
|
154
162
|
async updateKey() {
|
|
155
163
|
const leftClick = {button: 0};
|
|
156
|
-
fireEvent.click(this.
|
|
164
|
+
fireEvent.click(this.toolbarActionsUpdateButton, leftClick);
|
|
157
165
|
await waitFor(() => {});
|
|
158
166
|
}
|
|
159
167
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import DisplaySubscriptionKey from "./DisplaySubscriptionKey";
|
|
3
|
+
import {AdminSubscriptionContextProvider} from '../../../contexts/Administration/AdministrationSubscription/AdministrationSubscription';
|
|
3
4
|
import {
|
|
4
5
|
defaultProps, expiredProps, goingToExpireProps, notFoundProps, usersExceededProps
|
|
5
6
|
} from "./DisplaySubscriptionKey.test.data";
|
|
@@ -11,9 +12,14 @@ export default {
|
|
|
11
12
|
};
|
|
12
13
|
|
|
13
14
|
const Template = args =>
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
|
|
15
|
+
<AdminSubscriptionContextProvider{...args}>
|
|
16
|
+
<div className="panel middle">
|
|
17
|
+
<div className="grid grid-responsive-12">
|
|
18
|
+
<DisplaySubscriptionKey {...args}/>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</AdminSubscriptionContextProvider>
|
|
22
|
+
;
|
|
17
23
|
|
|
18
24
|
|
|
19
25
|
export const Initial = Template.bind({});
|
|
@@ -17,8 +17,8 @@ import DialogWrapper from "../../Common/Dialog/DialogWrapper/DialogWrapper";
|
|
|
17
17
|
import Icon from "../../../../shared/components/Icons/Icon";
|
|
18
18
|
import DisplayLoadingDialog from "../DisplayLoadingDialog/DisplayLoadingDialog";
|
|
19
19
|
import {withActionFeedback} from "../../../contexts/ActionFeedbackContext";
|
|
20
|
-
import {withAdministrationWorkspace} from "../../../contexts/AdministrationWorkspaceContext";
|
|
21
20
|
import {Trans, withTranslation} from "react-i18next";
|
|
21
|
+
import {withAdminUserDirectory} from "../../../contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext";
|
|
22
22
|
|
|
23
23
|
class DisplaySynchronizeUserDirectoryAdministration extends Component {
|
|
24
24
|
/**
|
|
@@ -62,9 +62,8 @@ class DisplaySynchronizeUserDirectoryAdministration extends Component {
|
|
|
62
62
|
*/
|
|
63
63
|
async componentDidMount() {
|
|
64
64
|
try {
|
|
65
|
-
const result = await this.props.
|
|
66
|
-
|
|
67
|
-
this.setState({loading: false, userDirectorySynchronizeResult});
|
|
65
|
+
const result = await this.props.adminUserDirectoryContext.synchronizeUsers();
|
|
66
|
+
this.setState({loading: false, userDirectorySynchronizeResult: result});
|
|
68
67
|
} catch (error) {
|
|
69
68
|
await this.handleError(error);
|
|
70
69
|
}
|
|
@@ -350,8 +349,8 @@ class DisplaySynchronizeUserDirectoryAdministration extends Component {
|
|
|
350
349
|
DisplaySynchronizeUserDirectoryAdministration.propTypes = {
|
|
351
350
|
onClose: PropTypes.func,
|
|
352
351
|
actionFeedbackContext: PropTypes.any, // The action feedback context
|
|
353
|
-
|
|
352
|
+
adminUserDirectoryContext: PropTypes.object, // The administration user directory context
|
|
354
353
|
t: PropTypes.func, // The translation function
|
|
355
354
|
};
|
|
356
355
|
|
|
357
|
-
export default withActionFeedback(
|
|
356
|
+
export default withActionFeedback(withAdminUserDirectory(withTranslation('common')(DisplaySynchronizeUserDirectoryAdministration)));
|