passbolt-browser-extension 5.13.0 → 5.14.2
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/.devcontainer/Dockerfile +33 -3
- package/.devcontainer/devcontainer-lock.json +9 -0
- package/.devcontainer/post-start.sh +1 -2
- package/.github/workflows/codeql-analysis.yml +2 -1
- package/.github/workflows/release_candidate.yaml +3 -1
- package/.gitlab-ci.yml +1 -0
- package/CHANGELOG.md +202 -70
- package/CODEOWNERS +2 -0
- package/RELEASE_NOTES.md +4 -2
- package/package.json +9 -7
- package/renovate.json +6 -0
- package/src/all/background_page/controller/InformMenuController/InformMenuController.js +2 -5
- package/src/all/background_page/controller/InformMenuController/InformMenuController.test.js +31 -1
- package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.js +1 -1
- package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.test.js +6 -14
- package/src/all/background_page/controller/account/updatePrivateKeyController.js +7 -5
- package/src/all/background_page/controller/account/updatePrivateKeyController.test.js +18 -13
- package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.js +4 -2
- package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.test.js +25 -2
- package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.js +1 -1
- package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.test.js +10 -5
- package/src/all/background_page/controller/accountRecovery/recoverAccountController.js +6 -2
- package/src/all/background_page/controller/accountRecovery/recoverAccountController.test.js +11 -4
- package/src/all/background_page/controller/auth/authCheckStatus.test.data.js +6 -6
- package/src/all/background_page/controller/auth/authCheckStatusController.js +11 -3
- package/src/all/background_page/controller/auth/authCheckStatusController.test.js +74 -44
- package/src/all/background_page/controller/auth/authIsMfaRequiredController.js +11 -3
- package/src/all/background_page/controller/auth/authIsMfaRequiredController.test.js +18 -9
- package/src/all/background_page/controller/auth/authLoginController.js +1 -1
- package/src/all/background_page/controller/auth/authLoginController.test.js +10 -5
- package/src/all/background_page/controller/autofill/AutofillController.js +3 -3
- package/src/all/background_page/controller/autofill/AutofillController.test.js +20 -12
- package/src/all/background_page/controller/export/exportResourcesFileController.js +6 -3
- package/src/all/background_page/controller/export/exportResourcesFileController.test.js +34 -4
- package/src/all/background_page/controller/extension/onExtensionInstalledController.js +8 -2
- package/src/all/background_page/controller/extension/onExtensionInstalledController.test.js +5 -1
- package/src/all/background_page/controller/group/{getOrFindGroupsController.js → findGroupsByIdsForShareController.js} +9 -10
- package/src/all/background_page/controller/group/{getOrFindGroupsController.test.js → findGroupsByIdsForShareController.test.js} +8 -8
- package/src/all/background_page/controller/group/groupUpdateController.test.js +1 -0
- package/src/all/background_page/controller/import/importResourcesFileController.test.js +8 -1
- package/src/all/background_page/controller/informCallToActionController/informCallToActionController.js +2 -2
- package/src/all/background_page/controller/informCallToActionController/informCallToActionController.test.js +7 -4
- package/src/all/background_page/controller/locale/getLocaleController.js +3 -2
- package/src/all/background_page/controller/metadata/findMetadataTypesSettingsController.test.js +9 -15
- package/src/all/background_page/controller/metadata/getMetadataTypesSettingsController.test.js +9 -15
- package/src/all/background_page/controller/metadata/getOrFindMetadataKeysSettingsController.test.js +12 -22
- package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.test.js +14 -2
- package/src/all/background_page/controller/move/moveFolderController.test.js +8 -0
- package/src/all/background_page/controller/move/moveResourcesController.test.js +8 -0
- package/src/all/background_page/controller/passwordExpiry/getOrFindPasswordExpirySettingsController.test.js +13 -8
- package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.js +4 -4
- package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.test.js +8 -10
- package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.js +62 -0
- package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.test.js +71 -0
- package/src/all/background_page/controller/recover/generateRecoverAccountRecoveryRequestKeyController.js +1 -1
- package/src/all/background_page/controller/resource/resourceCreateController.js +11 -4
- package/src/all/background_page/controller/resource/resourceCreateController.test.js +12 -1
- package/src/all/background_page/controller/resource/resourceUpdateController.js +11 -4
- package/src/all/background_page/controller/resource/resourceUpdateController.test.js +35 -2
- package/src/all/background_page/controller/resourceType/getResourceTypesController.js +5 -4
- package/src/all/background_page/controller/resourceType/getResourceTypesController.test.js +5 -2
- package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.js +3 -2
- package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.test.js +16 -3
- package/src/all/background_page/controller/secret/findSecretByResourceIdController.js +3 -3
- package/src/all/background_page/controller/secret/findSecretByResourceIdController.test.js +24 -0
- package/src/all/background_page/controller/secretRevision/findResourceSecretRevisionsForDisplayController.js +2 -1
- package/src/all/background_page/controller/setup/generateSetupKeyPairController.js +6 -3
- package/src/all/background_page/controller/setup/generateSetupKeyPairController.test.js +11 -1
- package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.js +1 -1
- package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.test.js +14 -18
- package/src/all/background_page/controller/setup/setSetupLocaleController.js +1 -1
- package/src/all/background_page/controller/setup/setSetupLocaleController.test.js +6 -10
- package/src/all/background_page/controller/setup/signInSetupController.js +6 -2
- package/src/all/background_page/controller/setup/signInSetupController.test.js +10 -5
- package/src/all/background_page/controller/share/shareOneFolderController.test.js +8 -0
- package/src/all/background_page/controller/share/shareResourcesController.test.js +9 -1
- package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.js +59 -0
- package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.test.js +150 -0
- package/src/all/background_page/controller/{group/getOrFindGroupsUsersController.js → user/getOrFindAllUsersController.js} +12 -17
- package/src/all/background_page/controller/user/getOrFindAllUsersController.test.js +55 -0
- package/src/all/background_page/controller/user/getOrFindLoggedInUserController.js +3 -3
- package/src/all/background_page/controller/user/getOrFindLoggedInUserController.test.js +19 -15
- package/src/all/background_page/controller/user/updateUserLocalStorageController.test.js +8 -5
- package/src/all/background_page/event/accountRecoveryEvents.js +4 -4
- package/src/all/background_page/event/appEvents.js +7 -2
- package/src/all/background_page/event/authEvents.js +2 -2
- package/src/all/background_page/event/groupEvents.js +4 -17
- package/src/all/background_page/event/informCallToActionEvents.js +1 -1
- package/src/all/background_page/event/informMenuEvents.js +1 -1
- package/src/all/background_page/event/localeEvents.js +4 -3
- package/src/all/background_page/event/permissionEvents.js +13 -0
- package/src/all/background_page/event/recoverEvents.js +4 -4
- package/src/all/background_page/event/resourceEvents.js +6 -15
- package/src/all/background_page/event/resourceTypeEvents.js +4 -3
- package/src/all/background_page/event/setupEvents.js +4 -4
- package/src/all/background_page/event/siteSettingsEvents.js +29 -0
- package/src/all/background_page/event/userEvents.js +4 -8
- package/src/all/background_page/index.js +0 -37
- package/src/all/background_page/model/entity/account/abstractAccountEntity.js +2 -2
- package/src/all/background_page/model/entity/account/accountAccountRecoveryEntity.js +7 -17
- package/src/all/background_page/model/entity/account/accountEntity.js +7 -14
- package/src/all/background_page/model/entity/account/accountKitEntity.js +1 -2
- package/src/all/background_page/model/entity/account/accountRecoverEntity.js +4 -14
- package/src/all/background_page/model/entity/account/accountSetupEntity.js +4 -14
- package/src/all/background_page/model/entity/account/accountTemporaryEntity.js +2 -5
- package/src/all/background_page/model/entity/gpgkey/generate/generateGpgKeyPairOptionsEntity.test.js +5 -5
- package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.js +49 -0
- package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.data.js +23 -0
- package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.js +51 -0
- package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.js → siteSettings/siteSettingsEntity.js} +17 -24
- package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.data.js → siteSettings/siteSettingsEntity.test.data.js} +9 -9
- package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.js → siteSettings/siteSettingsEntity.test.js} +30 -39
- package/src/all/background_page/model/entity/user/userEntity.test.js +6 -6
- package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +40 -3
- package/src/all/background_page/model/export/resources/resourcesKdbxExporter.test.js +122 -0
- package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.js +1 -1
- package/src/all/background_page/model/locale/localeModel.js +13 -8
- package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.js +6 -6
- package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.test.js +3 -2
- package/src/all/background_page/model/resource/resourceModel.js +4 -4
- package/src/all/background_page/model/user/userModel.js +7 -28
- package/src/all/background_page/model/user/userModel.test.js +51 -99
- package/src/all/background_page/pagemod/appBootstrapPagemod.js +4 -1
- package/src/all/background_page/pagemod/appBootstrapPagemod.test.js +5 -2
- package/src/all/background_page/pagemod/appPagemod.js +32 -6
- package/src/all/background_page/pagemod/appPagemod.test.js +22 -10
- package/src/all/background_page/pagemod/authPagemod.js +2 -10
- package/src/all/background_page/pagemod/authPagemod.test.js +4 -4
- package/src/all/background_page/pagemod/pagemodManager.test.js +5 -2
- package/src/all/background_page/pagemod/quickAccessPagemod.js +2 -2
- package/src/all/background_page/pagemod/quickAccessPagemod.test.js +4 -4
- package/src/all/background_page/pagemod/recoverPagemod.js +2 -2
- package/src/all/background_page/pagemod/recoverPagemod.test.js +6 -0
- package/src/all/background_page/pagemod/setupPagemod.js +2 -2
- package/src/all/background_page/pagemod/setupPagemod.test.js +6 -0
- package/src/all/background_page/pagemod/webIntegrationPagemod.js +21 -2
- package/src/all/background_page/pagemod/webIntegrationPagemod.test.js +16 -25
- package/src/all/background_page/service/account/getActiveAccountService.js +2 -3
- package/src/all/background_page/service/account/getLegacyAccountService.js +3 -14
- package/src/all/background_page/service/account/updateSsoCredentialsService.js +9 -5
- package/src/all/background_page/service/api/group/groupApiService.js +9 -16
- package/src/all/background_page/service/api/group/groupApiService.test.js +59 -26
- package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.js +46 -0
- package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.test.js +63 -0
- package/src/all/background_page/service/auth/checkAuthStatusService.js +27 -14
- package/src/all/background_page/service/auth/checkAuthStatusService.test.js +80 -62
- package/src/all/background_page/service/auth/postLoginService.js +3 -3
- package/src/all/background_page/service/auth/postLoginService.test.js +4 -4
- package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.js +5 -1
- package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.test.js +14 -8
- package/src/all/background_page/service/authenticationStatusService.js +13 -18
- package/src/all/background_page/service/authenticationStatusService.test.js +9 -6
- package/src/all/background_page/service/crypto/generateGpgKeyPairService.test.js +5 -5
- package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.js +7 -6
- package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.test.js +10 -7
- package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.js +7 -2
- package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.test.js +5 -5
- package/src/all/background_page/service/group/findGroupsService.js +42 -1
- package/src/all/background_page/service/group/findGroupsService.test.js +82 -0
- package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.js +82 -0
- package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.test.js +102 -0
- package/src/all/background_page/service/group/groupUpdateService.js +49 -78
- package/src/all/background_page/service/group/groupUpdateService.test.js +136 -0
- package/src/all/background_page/service/localStorage/localStorageService.js +8 -6
- package/src/all/background_page/service/localStorage/localStorageService.test.js +33 -15
- package/src/all/background_page/service/local_storage/abstractLocalStorage.js +193 -0
- package/src/all/background_page/service/local_storage/abstractLocalStorage.test.data.js +45 -0
- package/src/all/background_page/service/local_storage/abstractLocalStorage.test.js +271 -0
- package/src/all/background_page/service/local_storage/activeSessionLocalStorage.js +105 -0
- package/src/all/background_page/service/local_storage/activeSessionLocalStorage.test.js +153 -0
- package/src/all/background_page/service/local_storage/rbacLocalStorage.js +10 -82
- package/src/all/background_page/service/local_storage/rbacLocalStorage.test.js +8 -8
- package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.js +10 -43
- package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.test.js +68 -0
- package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.js +104 -0
- package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.test.js +114 -0
- package/src/all/background_page/service/local_storage/userMeLocalStorage.js +50 -0
- package/src/all/background_page/service/{sessionStorage/userMeSessionStorageService.test.js → local_storage/userMeLocalStorage.test.js} +55 -36
- package/src/all/background_page/service/metadata/encryptMetadataService.js +3 -3
- package/src/all/background_page/service/metadata/encryptMetadataService.test.js +11 -11
- package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.js +4 -4
- package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.test.js +18 -16
- package/src/all/background_page/service/metadata/getOrFindMetadataSettingsService.test.js +6 -8
- package/src/all/background_page/service/metadata/rotateMetadata/rotateResourcesMetadataKeyService.test.js +4 -4
- package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.js +3 -3
- package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.test.js +1 -1
- package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.js +4 -4
- package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.test.js +9 -7
- package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.js +4 -4
- package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.test.js +6 -6
- package/src/all/background_page/service/rbac/findAndUpdateRbacsLocalStorageService.js +2 -2
- package/src/all/background_page/service/rbac/getOrFindRbacService.js +1 -1
- package/src/all/background_page/service/resource/create/resourceCreateService.js +41 -51
- package/src/all/background_page/service/resource/create/resourceCreateService.test.js +100 -98
- package/src/all/background_page/service/resource/export/exportResourcesService.js +7 -7
- package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.js +4 -4
- package/src/all/background_page/service/resource/findResourcesService.js +13 -16
- package/src/all/background_page/service/resource/findResourcesService.test.js +12 -11
- package/src/all/background_page/service/resource/getOrFindResourcesService.js +3 -3
- package/src/all/background_page/service/resource/import/ImportResourcesService.js +9 -9
- package/src/all/background_page/service/resource/import/ImportResourcesService.test.js +30 -15
- package/src/all/background_page/service/resource/update/resourceUpdateService.js +38 -19
- package/src/all/background_page/service/resource/update/resourceUpdateService.test.js +64 -31
- package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.js +49 -0
- package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.test.js +61 -0
- package/src/all/background_page/service/resourceType/getSecretSchemaResourceTypeService.js +44 -0
- package/src/all/background_page/service/resourceType/updateResourceTypesService.js +6 -4
- package/src/all/background_page/service/resourceType/updateResourceTypesService.test.js +19 -14
- package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.js +5 -4
- package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.test.js +16 -9
- package/src/all/background_page/service/share/shareResourceService.js +4 -4
- package/src/all/background_page/service/share/shareResourceService.test.js +6 -6
- package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.js +77 -0
- package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.test.js +130 -0
- package/src/all/background_page/service/siteSettings/findSiteSettingsService.js +47 -0
- package/src/all/background_page/service/siteSettings/findSiteSettingsService.test.js +68 -0
- package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.js +84 -0
- package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.test.js +175 -0
- package/src/all/background_page/service/siteSettings/siteSettingsRuntimeCache.js +70 -0
- package/src/all/background_page/service/sso/generateSsoKitService.test.js +2 -2
- package/src/all/background_page/service/toolbar/toolbarService.js +6 -4
- package/src/all/background_page/service/toolbar/toolbarService.test.js +14 -13
- package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.js +4 -4
- package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.test.js +3 -3
- package/src/all/background_page/service/user/getOrFindMeService.js +64 -0
- package/src/all/background_page/service/user/getOrFindMeService.test.js +65 -0
- package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.js +5 -4
- package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.test.js +12 -11
- package/src/all/background_page/service/validator/appEmailValidatorService.js +11 -6
- package/src/all/background_page/service/validator/appEmailValidatorService.test.js +11 -11
- package/src/all/common/polyfill/browserPolyfill.js +8 -8
- package/src/all/locales/cs-CZ/common.json +1 -4
- package/src/all/locales/de-DE/common.json +1 -4
- package/src/all/locales/en-UK/common.json +0 -3
- package/src/all/locales/es-ES/common.json +1 -4
- package/src/all/locales/fr-FR/common.json +1 -4
- package/src/all/locales/it-IT/common.json +1 -4
- package/src/all/locales/ja-JP/common.json +1 -4
- package/src/all/locales/ko-KR/common.json +0 -3
- package/src/all/locales/lt-LT/common.json +1 -4
- package/src/all/locales/nl-NL/common.json +1 -4
- package/src/all/locales/pl-PL/common.json +1 -4
- package/src/all/locales/pt-BR/common.json +1 -4
- package/src/all/locales/ro-RO/common.json +1 -4
- package/src/all/locales/ru-RU/common.json +1 -4
- package/src/all/locales/sl-SI/common.json +1 -4
- package/src/all/locales/sv-SE/common.json +1 -4
- package/src/all/locales/uk-UA/common.json +1 -4
- package/src/all/webAccessibleResources/js/app/QuickAccess.js +7 -0
- package/src/chrome/manifest.json +1 -1
- package/src/chrome-mv3/manifest.json +1 -1
- package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.js +132 -0
- package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.test.js +125 -0
- package/src/chrome-mv3/offscreens/service/offscreen/handleOffscreenRequestService.js +4 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.js +83 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.test.js +116 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.js +99 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.data.js +45 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.js +87 -0
- package/src/chrome-mv3/serviceWorker/service/network/requestFetchOffscreenService.js +0 -1
- package/src/chrome-mv3/serviceWorker/service/offscreen/handleOffscreenResponseService.js +15 -0
- package/src/firefox/manifest.json +1 -1
- package/src/safari/background_page/index.js +0 -37
- package/src/safari/common/polyfill/safariBrowserPolyfill.js +10 -10
- package/src/safari/manifest.json +1 -1
- package/test/jest.setup.js +4 -2
- package/src/all/background_page/controller/group/getOrFindGroupsUsersController.test.js +0 -69
- package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.js +0 -55
- package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.test.js +0 -45
- package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.js +0 -76
- package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.test.js +0 -102
- package/src/all/background_page/event/organizationSettingsEvents.js +0 -37
- package/src/all/background_page/model/organizationSettings/organizationSettingsModel.js +0 -93
- package/src/all/background_page/model/resourceType/resourceTypeModel.js +0 -72
- package/src/all/background_page/model/resourceType/resourceTypeModel.test.js +0 -101
- package/src/all/background_page/service/api/organizationSettings/organizationSettingsService.js +0 -58
- package/src/all/background_page/service/group/getOrFindGroupsService.js +0 -65
- package/src/all/background_page/service/group/getOrFindGroupsService.test.js +0 -168
- package/src/all/background_page/service/group/getOrFindGroupsUsersService.js +0 -51
- package/src/all/background_page/service/group/getOrFindGroupsUsersService.test.js +0 -94
- package/src/all/background_page/service/local_storage/authStatusLocalStorage.js +0 -70
- package/src/all/background_page/service/sessionStorage/userMeSessionStorageService.js +0 -94
|
@@ -1,45 +0,0 @@
|
|
|
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.6.0
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { enableFetchMocks } from "jest-fetch-mock";
|
|
16
|
-
import { mockApiResponse } from "../../../../../test/mocks/mockApiResponse";
|
|
17
|
-
import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
|
|
18
|
-
import { anonymousOrganizationSettings } from "../../model/entity/organizationSettings/organizationSettingsEntity.test.data";
|
|
19
|
-
import GetOrganizationSettingsController from "./getOrganizationSettingsController";
|
|
20
|
-
|
|
21
|
-
beforeEach(() => {
|
|
22
|
-
enableFetchMocks();
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
describe("GetOrganizationSettingsController", () => {
|
|
26
|
-
describe("GetOrganizationSettingsController::exec", () => {
|
|
27
|
-
it("Should retrieve the organization settings.", async () => {
|
|
28
|
-
jest.useFakeTimers();
|
|
29
|
-
const timeDiff = 3600000;
|
|
30
|
-
// Mock API fetch account recovery organization policy response.
|
|
31
|
-
const servertime = new Date().getTime() + timeDiff;
|
|
32
|
-
const mockApiResult = anonymousOrganizationSettings();
|
|
33
|
-
fetch.doMock(() => mockApiResponse(mockApiResult, { servertime: servertime / 1000 }));
|
|
34
|
-
|
|
35
|
-
const controller = new GetOrganizationSettingsController(null, null, defaultApiClientOptions());
|
|
36
|
-
const organizationSettings = await controller.exec();
|
|
37
|
-
|
|
38
|
-
expect.assertions(1);
|
|
39
|
-
const settingsDto = organizationSettings.toDto();
|
|
40
|
-
|
|
41
|
-
mockApiResult.serverTimeDiff = timeDiff;
|
|
42
|
-
await expect(settingsDto).toEqual(mockApiResult);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
});
|
package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c) 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) 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 4.10.1
|
|
13
|
-
*/
|
|
14
|
-
import { assertArrayUUID } from "../../utils/assertions";
|
|
15
|
-
import FindResourcesService from "../../service/resource/findResourcesService";
|
|
16
|
-
import GetPassphraseService from "../../service/passphrase/getPassphraseService";
|
|
17
|
-
import UserPassphraseRequiredError from "passbolt-styleguide/src/shared/error/userPassphraseRequiredError";
|
|
18
|
-
|
|
19
|
-
class FindAllByIdsForDisplayPermissionsController {
|
|
20
|
-
/**
|
|
21
|
-
* Constructor.
|
|
22
|
-
* @param {Worker} worker The associated worker.
|
|
23
|
-
* @param {string} requestId The associated request id.
|
|
24
|
-
* @param {ApiClientOptions} apiClientOptions The api client options.
|
|
25
|
-
* @param {AccountEntity} account The user account
|
|
26
|
-
*/
|
|
27
|
-
constructor(worker, requestId, apiClientOptions, account) {
|
|
28
|
-
this.worker = worker;
|
|
29
|
-
this.requestId = requestId;
|
|
30
|
-
this.findResourcesService = new FindResourcesService(account, apiClientOptions);
|
|
31
|
-
this.getPassphraseService = new GetPassphraseService(account);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Controller executor.
|
|
36
|
-
* @param {Array<string>} resourceIds The resources ids
|
|
37
|
-
* @returns {Promise<void>}
|
|
38
|
-
*/
|
|
39
|
-
async _exec(resourceIds) {
|
|
40
|
-
try {
|
|
41
|
-
const result = await this.exec(resourceIds);
|
|
42
|
-
this.worker.port.emit(this.requestId, "SUCCESS", result);
|
|
43
|
-
} catch (error) {
|
|
44
|
-
console.error(error);
|
|
45
|
-
this.worker.port.emit(this.requestId, "ERROR", error);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Find the resource to display the permissions for.
|
|
51
|
-
* @param {Array<string>} resourceIds The resources ids
|
|
52
|
-
* @returns {Promise<ResourcesCollection>}
|
|
53
|
-
*/
|
|
54
|
-
async exec(resourceIds) {
|
|
55
|
-
assertArrayUUID(resourceIds);
|
|
56
|
-
|
|
57
|
-
try {
|
|
58
|
-
/**
|
|
59
|
-
* Try to fetch the resources.
|
|
60
|
-
* If the user passphrase is required but not in sessionStorage, prompt the user. The passphrase is needed when:
|
|
61
|
-
* 1. the metadata could be decrypted with a metadata session key, but the session keys are themselves encrypted;
|
|
62
|
-
* 2. the metadata is encrypted with the shared‑metadata key, but this one is not yet decrypted in the session storage;
|
|
63
|
-
* 3. the metadata is encrypted with the user’s private key.
|
|
64
|
-
*/
|
|
65
|
-
return await this.findResourcesService.findAllByIdsForDisplayPermissions(resourceIds);
|
|
66
|
-
} catch (error) {
|
|
67
|
-
if (!(error instanceof UserPassphraseRequiredError)) {
|
|
68
|
-
throw error;
|
|
69
|
-
}
|
|
70
|
-
const passphrase = await this.getPassphraseService.getPassphrase(this.worker, 60);
|
|
71
|
-
return this.findResourcesService.findAllByIdsForDisplayPermissions(resourceIds, passphrase);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export default FindAllByIdsForDisplayPermissionsController;
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c) 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) 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 4.10.1
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
|
|
16
|
-
import AccountEntity from "../../model/entity/account/accountEntity";
|
|
17
|
-
import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
|
|
18
|
-
import { multipleResourceDtos } from "../../service/resource/findResourcesService.test.data";
|
|
19
|
-
import FindAllByIdsForDisplayPermissionsController from "./findAllByIdsForDisplayPermissionsController";
|
|
20
|
-
import ResourcesCollection from "../../model/entity/resource/resourcesCollection";
|
|
21
|
-
import { pgpKeys } from "passbolt-styleguide/test/fixture/pgpKeys/keys";
|
|
22
|
-
import { v4 as uuidv4 } from "uuid";
|
|
23
|
-
import { TEST_RESOURCE_TYPE_V5_DEFAULT } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypeEntity.test.data";
|
|
24
|
-
import { METADATA_KEY_TYPE_USER_KEY } from "../../model/entity/resource/resourceEntity";
|
|
25
|
-
import { defaultResourceDto } from "passbolt-styleguide/src/shared/models/entity/resource/resourceEntity.test.data";
|
|
26
|
-
import { metadata } from "passbolt-styleguide/test/fixture/encryptedMetadata/metadata";
|
|
27
|
-
import { mockPassboltResponse } from "passbolt-styleguide/test/mocks/mockApiResponse";
|
|
28
|
-
|
|
29
|
-
describe("FindAllByIdsForDisplayPermissionsController", () => {
|
|
30
|
-
let controller, worker;
|
|
31
|
-
|
|
32
|
-
beforeEach(() => {
|
|
33
|
-
worker = {
|
|
34
|
-
port: {
|
|
35
|
-
emit: jest.fn(),
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
const account = new AccountEntity(defaultAccountDto());
|
|
39
|
-
const apiClientOptions = defaultApiClientOptions();
|
|
40
|
-
controller = new FindAllByIdsForDisplayPermissionsController(worker, null, apiClientOptions, account);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
describe("::exec", () => {
|
|
44
|
-
it("should return the resource collection associated to the resource ids", async () => {
|
|
45
|
-
expect.assertions(3);
|
|
46
|
-
|
|
47
|
-
const resourcesDto = multipleResourceDtos();
|
|
48
|
-
const resourceIds = resourcesDto.map((resource) => resource.id);
|
|
49
|
-
jest
|
|
50
|
-
.spyOn(controller.findResourcesService.resourceService, "findAll")
|
|
51
|
-
.mockImplementation(() => mockPassboltResponse(resourcesDto));
|
|
52
|
-
jest
|
|
53
|
-
.spyOn(controller.findResourcesService.decryptMetadataService, "decryptAllFromForeignModels")
|
|
54
|
-
.mockImplementation((collection) => collection);
|
|
55
|
-
jest.spyOn(controller.getPassphraseService, "getPassphrase");
|
|
56
|
-
|
|
57
|
-
const result = await controller.exec(resourceIds);
|
|
58
|
-
expect(controller.getPassphraseService.getPassphrase).not.toHaveBeenCalled();
|
|
59
|
-
expect(result).toEqual(new ResourcesCollection(resourcesDto));
|
|
60
|
-
expect(controller.findResourcesService.resourceService.findAll).toHaveBeenCalledWith(
|
|
61
|
-
{ permission: true, "permissions.group": true, "permissions.user.profile": true },
|
|
62
|
-
{ "has-id": resourceIds },
|
|
63
|
-
);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("requests the user passphrase whenever the decryption of the metadata requires it and try to load the data again", async () => {
|
|
67
|
-
expect.assertions(3);
|
|
68
|
-
|
|
69
|
-
const resourcesDto = [
|
|
70
|
-
defaultResourceDto({
|
|
71
|
-
resource_type_id: TEST_RESOURCE_TYPE_V5_DEFAULT,
|
|
72
|
-
metadata_key_type: METADATA_KEY_TYPE_USER_KEY,
|
|
73
|
-
metadata_key_id: uuidv4(),
|
|
74
|
-
metadata: metadata.withAdaKey.encryptedMetadata[0],
|
|
75
|
-
}),
|
|
76
|
-
];
|
|
77
|
-
const resourceIds = resourcesDto.map((resource) => resource.id);
|
|
78
|
-
jest
|
|
79
|
-
.spyOn(controller.findResourcesService.resourceService, "findAll")
|
|
80
|
-
.mockImplementation(() => mockPassboltResponse(resourcesDto));
|
|
81
|
-
|
|
82
|
-
jest.spyOn(controller.getPassphraseService, "getPassphrase").mockReturnValue(pgpKeys.ada.passphrase);
|
|
83
|
-
|
|
84
|
-
const result = await controller.exec(resourceIds);
|
|
85
|
-
expect(controller.getPassphraseService.getPassphrase).toHaveBeenCalledTimes(1);
|
|
86
|
-
const expectedResourcesDto = JSON.parse(JSON.stringify(resourcesDto));
|
|
87
|
-
expectedResourcesDto[0].metadata = metadata.withAdaKey.decryptedMetadata[0];
|
|
88
|
-
expectedResourcesDto[0].metadata.description = ""; // Encrypted and decrypted dummy data are not equivalent.
|
|
89
|
-
expectedResourcesDto[0].metadata.username = "shared@passbolt.com"; // Encrypted and decrypted dummy data are not equivalent.
|
|
90
|
-
expect(result.toDto()).toEqual(expectedResourcesDto);
|
|
91
|
-
expect(controller.findResourcesService.resourceService.findAll).toHaveBeenCalledTimes(2);
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it("should throw an error if the resource id array is not an array of uuid", async () => {
|
|
95
|
-
expect.assertions(1);
|
|
96
|
-
|
|
97
|
-
const promise = controller.exec([1]);
|
|
98
|
-
|
|
99
|
-
await expect(promise).rejects.toThrow("The given parameter is not a valid array of uuid");
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
});
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c) Passbolt SARL (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) Passbolt SARL (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.2.0
|
|
13
|
-
*/
|
|
14
|
-
import User from "../model/user";
|
|
15
|
-
import OrganizationSettingsModel from "../model/organizationSettings/organizationSettingsModel";
|
|
16
|
-
|
|
17
|
-
const listen = function (worker) {
|
|
18
|
-
/*
|
|
19
|
-
* Get the organization settings.
|
|
20
|
-
*
|
|
21
|
-
* @listens passbolt.organization-settings.get
|
|
22
|
-
* @param requestId {uuid} The request identifier
|
|
23
|
-
* @param refreshCache {boolean} Should refresh the cache, default true
|
|
24
|
-
*/
|
|
25
|
-
worker.port.on("passbolt.organization-settings.get", async (requestId, refreshCache = true) => {
|
|
26
|
-
try {
|
|
27
|
-
const apiClientOptions = await User.getInstance().getApiClientOptions();
|
|
28
|
-
const organizationSettingsModel = new OrganizationSettingsModel(apiClientOptions);
|
|
29
|
-
const organizationSettings = await organizationSettingsModel.getOrFind(refreshCache);
|
|
30
|
-
worker.port.emit(requestId, "SUCCESS", organizationSettings);
|
|
31
|
-
} catch (error) {
|
|
32
|
-
console.error(error);
|
|
33
|
-
worker.port.emit(requestId, "ERROR", error);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
export const OrganizationSettingsEvents = { listen };
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c) 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) 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.2.0
|
|
13
|
-
*/
|
|
14
|
-
import OrganizationSettingsService from "../../service/api/organizationSettings/organizationSettingsService";
|
|
15
|
-
import OrganizationSettingsEntity from "../entity/organizationSettings/organizationSettingsEntity";
|
|
16
|
-
import PassboltApiFetchError from "passbolt-styleguide/src/shared/lib/Error/PassboltApiFetchError";
|
|
17
|
-
|
|
18
|
-
// Settings local cache.
|
|
19
|
-
let _settings;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Organization settings model.
|
|
23
|
-
*/
|
|
24
|
-
class OrganizationSettingsModel {
|
|
25
|
-
/**
|
|
26
|
-
* Constructor
|
|
27
|
-
*
|
|
28
|
-
* @param {ApiClientOptions} apiClientOptions
|
|
29
|
-
* @public
|
|
30
|
-
*/
|
|
31
|
-
constructor(apiClientOptions) {
|
|
32
|
-
this.organizationSettingsService = new OrganizationSettingsService(apiClientOptions);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Set the settings.
|
|
37
|
-
* @params {OrganizationSettingsEntity} settings The settings
|
|
38
|
-
*/
|
|
39
|
-
static set(settings) {
|
|
40
|
-
if (!(settings instanceof OrganizationSettingsEntity)) {
|
|
41
|
-
throw new Error("The settings should be an instance of OrganizationSettingsEntity");
|
|
42
|
-
}
|
|
43
|
-
_settings = settings;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* get the cached settings if any.
|
|
48
|
-
* @return {OrganizationSettingsEntity|null}
|
|
49
|
-
*/
|
|
50
|
-
static get() {
|
|
51
|
-
return _settings || null;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Returns the organization settings from the local cache or requests the server.
|
|
56
|
-
* @param {boolean} refreshCache Should request the API to retrieve the organization settings and refresh the cache.
|
|
57
|
-
* Default false
|
|
58
|
-
* @returns {Promise<OrganizationSettingsEntity>}
|
|
59
|
-
*/
|
|
60
|
-
async getOrFind(refreshCache = false) {
|
|
61
|
-
if (refreshCache || !_settings) {
|
|
62
|
-
_settings = await this.find();
|
|
63
|
-
}
|
|
64
|
-
return _settings;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Flush the settings cache
|
|
69
|
-
*/
|
|
70
|
-
static flushCache() {
|
|
71
|
-
_settings = null;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Find the organization settings.
|
|
76
|
-
* @returns {Promise<OrganizationSettingsEntity>}
|
|
77
|
-
*/
|
|
78
|
-
async find() {
|
|
79
|
-
let organizationSettingsDto;
|
|
80
|
-
|
|
81
|
-
try {
|
|
82
|
-
organizationSettingsDto = await this.organizationSettingsService.find();
|
|
83
|
-
} catch (error) {
|
|
84
|
-
// When the cloud organization is disabled or not found, the cloud API returns a 403.
|
|
85
|
-
if (error instanceof PassboltApiFetchError && error?.data?.code === 403) {
|
|
86
|
-
organizationSettingsDto = OrganizationSettingsEntity.disabledOrganizationSettings;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return new OrganizationSettingsEntity(organizationSettingsDto);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export default OrganizationSettingsModel;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c) 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) 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 v3.0.0
|
|
13
|
-
*/
|
|
14
|
-
import ResourceTypeLocalStorage from "../../service/local_storage/resourceTypeLocalStorage";
|
|
15
|
-
import ResourceTypeService from "../../service/api/resourceType/resourceTypeService";
|
|
16
|
-
import ResourceTypesCollection from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypesCollection";
|
|
17
|
-
import { assertUuid } from "../../utils/assertions";
|
|
18
|
-
|
|
19
|
-
class ResourceTypeModel {
|
|
20
|
-
/**
|
|
21
|
-
* Constructor
|
|
22
|
-
*
|
|
23
|
-
* @param {ApiClientOptions} apiClientOptions
|
|
24
|
-
* @public
|
|
25
|
-
*/
|
|
26
|
-
constructor(apiClientOptions) {
|
|
27
|
-
this.resourceTypeService = new ResourceTypeService(apiClientOptions);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Update the resourceTypes local storage with the latest API resourceTypes the user has access.
|
|
32
|
-
*
|
|
33
|
-
* @returns {Promise<ResourceTypesCollection>}
|
|
34
|
-
* @private
|
|
35
|
-
*/
|
|
36
|
-
async updateLocalStorage() {
|
|
37
|
-
const resourceTypeDtos = await this.resourceTypeService.findAll();
|
|
38
|
-
const resourceTypesCollection = new ResourceTypesCollection(resourceTypeDtos);
|
|
39
|
-
await ResourceTypeLocalStorage.set(resourceTypesCollection);
|
|
40
|
-
return resourceTypesCollection;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Get a collection of all resourceTypes from the local storage.
|
|
45
|
-
* If the local storage is unset, initialize it.
|
|
46
|
-
*
|
|
47
|
-
* @return {Promise<ResourceTypesCollection>}
|
|
48
|
-
*/
|
|
49
|
-
async getOrFindAll() {
|
|
50
|
-
const resourceTypeDtos = await ResourceTypeLocalStorage.get();
|
|
51
|
-
if (typeof resourceTypeDtos !== "undefined") {
|
|
52
|
-
return new ResourceTypesCollection(resourceTypeDtos);
|
|
53
|
-
}
|
|
54
|
-
return this.updateLocalStorage();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Return the secret section of the schema definition for a given resource type id
|
|
59
|
-
*
|
|
60
|
-
* @param {string} resourceTypeId uuid
|
|
61
|
-
* @returns {Promise<Object|undefined>}
|
|
62
|
-
*/
|
|
63
|
-
async getSecretSchemaById(resourceTypeId) {
|
|
64
|
-
assertUuid(resourceTypeId, "The resource type id should be a valid UUID");
|
|
65
|
-
|
|
66
|
-
const types = await this.getOrFindAll();
|
|
67
|
-
const type = types.getFirst("id", resourceTypeId);
|
|
68
|
-
return type?.definition?.secret;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export default ResourceTypeModel;
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c) 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) 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 4.9.4
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
|
|
16
|
-
import { enableFetchMocks } from "jest-fetch-mock";
|
|
17
|
-
import { resourceTypesCollectionDto } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypesCollection.test.data";
|
|
18
|
-
import ResourceTypeModel from "./resourceTypeModel";
|
|
19
|
-
import ResourceTypeLocalStorage from "../../service/local_storage/resourceTypeLocalStorage";
|
|
20
|
-
import { resourceTypePasswordDescriptionTotpDto } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypeEntity.test.data";
|
|
21
|
-
|
|
22
|
-
beforeEach(() => {
|
|
23
|
-
enableFetchMocks();
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe("ResourceTypeModel", () => {
|
|
27
|
-
let resourceTypeModel;
|
|
28
|
-
|
|
29
|
-
beforeEach(() => {
|
|
30
|
-
resourceTypeModel = new ResourceTypeModel(defaultApiClientOptions());
|
|
31
|
-
jest.spyOn(ResourceTypeLocalStorage, "set").mockImplementation(jest.fn());
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
describe("::getOrFindAll", () => {
|
|
35
|
-
it("Should get resource types from local storage", async () => {
|
|
36
|
-
expect.assertions(3);
|
|
37
|
-
|
|
38
|
-
jest.spyOn(resourceTypeModel.resourceTypeService, "findAll");
|
|
39
|
-
jest.spyOn(ResourceTypeLocalStorage, "get").mockImplementationOnce(() => resourceTypesCollectionDto());
|
|
40
|
-
|
|
41
|
-
const resourceTypeCollection = await resourceTypeModel.getOrFindAll();
|
|
42
|
-
|
|
43
|
-
expect(resourceTypeModel.resourceTypeService.findAll).toHaveBeenCalledTimes(0);
|
|
44
|
-
expect(resourceTypeCollection.toDto()).toEqual(resourceTypesCollectionDto());
|
|
45
|
-
expect(ResourceTypeLocalStorage.set).toHaveBeenCalledTimes(0);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it("Should find resource types from api call", async () => {
|
|
49
|
-
expect.assertions(4);
|
|
50
|
-
jest
|
|
51
|
-
.spyOn(resourceTypeModel.resourceTypeService, "findAll")
|
|
52
|
-
.mockImplementationOnce(() => resourceTypesCollectionDto());
|
|
53
|
-
|
|
54
|
-
const resourceTypeCollection = await resourceTypeModel.getOrFindAll();
|
|
55
|
-
|
|
56
|
-
expect(resourceTypeModel.resourceTypeService.findAll).toHaveBeenCalledTimes(1);
|
|
57
|
-
expect(resourceTypeCollection.toDto()).toEqual(resourceTypesCollectionDto());
|
|
58
|
-
expect(ResourceTypeLocalStorage.set).toHaveBeenCalledTimes(1);
|
|
59
|
-
expect(ResourceTypeLocalStorage.set).toHaveBeenCalledWith(resourceTypeCollection);
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
describe("::getSecretSchemaById", () => {
|
|
64
|
-
it("Should return the right secret schema based on the resource type id", async () => {
|
|
65
|
-
expect.assertions(1);
|
|
66
|
-
|
|
67
|
-
const availableResourceType = resourceTypesCollectionDto();
|
|
68
|
-
jest.spyOn(ResourceTypeLocalStorage, "get").mockImplementationOnce(() => availableResourceType);
|
|
69
|
-
|
|
70
|
-
const expectedResourceType = availableResourceType.find((rt) => rt.slug === "password-description-totp");
|
|
71
|
-
|
|
72
|
-
const secretSchema = await resourceTypeModel.getSecretSchemaById(expectedResourceType.id);
|
|
73
|
-
const expectedSchema = resourceTypePasswordDescriptionTotpDto().definition.secret;
|
|
74
|
-
|
|
75
|
-
expect(secretSchema).toStrictEqual(expectedSchema);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it("Should find the data from the API before returning the right secret schema based", async () => {
|
|
79
|
-
expect.assertions(1);
|
|
80
|
-
|
|
81
|
-
const availableResourceType = resourceTypesCollectionDto();
|
|
82
|
-
jest.spyOn(ResourceTypeLocalStorage, "get").mockImplementationOnce(() => undefined);
|
|
83
|
-
jest.spyOn(resourceTypeModel.resourceTypeService, "findAll").mockImplementationOnce(() => availableResourceType);
|
|
84
|
-
|
|
85
|
-
const expectedResourceType = availableResourceType.find((rt) => rt.slug === "password-description-totp");
|
|
86
|
-
|
|
87
|
-
const secretSchema = await resourceTypeModel.getSecretSchemaById(expectedResourceType.id);
|
|
88
|
-
const expectedSchema = resourceTypePasswordDescriptionTotpDto().definition.secret;
|
|
89
|
-
|
|
90
|
-
expect(secretSchema).toStrictEqual(expectedSchema);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it("Should assert the parameter is a proper UUID", async () => {
|
|
94
|
-
expect.assertions(1);
|
|
95
|
-
|
|
96
|
-
expect(() => resourceTypeModel.getSecretSchemaById("non-uuid")).rejects.toThrow(
|
|
97
|
-
"The resource type id should be a valid UUID",
|
|
98
|
-
);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
});
|
package/src/all/background_page/service/api/organizationSettings/organizationSettingsService.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c) 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) 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.2.0
|
|
13
|
-
*/
|
|
14
|
-
import AbstractService from "../abstract/abstractService";
|
|
15
|
-
|
|
16
|
-
const ORGANIZATION_SETTINGS_SERVICE_RESOURCE_NAME = "settings";
|
|
17
|
-
|
|
18
|
-
class OrganizationSettingsService extends AbstractService {
|
|
19
|
-
/**
|
|
20
|
-
* Constructor
|
|
21
|
-
*
|
|
22
|
-
* @param {ApiClientOptions} apiClientOptions
|
|
23
|
-
* @public
|
|
24
|
-
*/
|
|
25
|
-
constructor(apiClientOptions) {
|
|
26
|
-
super(apiClientOptions, OrganizationSettingsService.RESOURCE_NAME);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* API Resource Name
|
|
31
|
-
*
|
|
32
|
-
* @returns {string}
|
|
33
|
-
* @public
|
|
34
|
-
*/
|
|
35
|
-
static get RESOURCE_NAME() {
|
|
36
|
-
return ORGANIZATION_SETTINGS_SERVICE_RESOURCE_NAME;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Find the settings
|
|
41
|
-
*
|
|
42
|
-
* @returns {Promise<*>} response body
|
|
43
|
-
* @throws {Error} if options are invalid or API error
|
|
44
|
-
* @public
|
|
45
|
-
*/
|
|
46
|
-
async find() {
|
|
47
|
-
const response = await this.apiClient.findAll();
|
|
48
|
-
const body = JSON.parse(JSON.stringify(response.body));
|
|
49
|
-
body.serverTimeDiff = null;
|
|
50
|
-
if (response.header.servertime) {
|
|
51
|
-
const currentTime = new Date();
|
|
52
|
-
body.serverTimeDiff = response.header.servertime * 1000 - currentTime.getTime();
|
|
53
|
-
}
|
|
54
|
-
return body;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export default OrganizationSettingsService;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Passbolt ~ Open source password manager for teams
|
|
3
|
-
* Copyright (c) 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) 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 5.13.0
|
|
13
|
-
*/
|
|
14
|
-
import FindAndUpdateGroupsLocalStorageService from "./findAndUpdateGroupsLocalStorageService";
|
|
15
|
-
import GroupLocalStorage from "../local_storage/groupLocalStorage";
|
|
16
|
-
import GroupsCollection from "passbolt-styleguide/src/shared/models/entity/group/groupsCollection";
|
|
17
|
-
import { assertArrayUUID } from "../../utils/assertions";
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* The service aims to get groups from the local storage if it is set, or retrieve them from the API and
|
|
21
|
-
* set the local storage.
|
|
22
|
-
*/
|
|
23
|
-
export default class GetOrFindGroupsService {
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
* @param {AccountEntity} account The user account
|
|
27
|
-
* @param {ApiClientOptions} apiClientOptions The api client options
|
|
28
|
-
*/
|
|
29
|
-
constructor(account, apiClientOptions) {
|
|
30
|
-
this.account = account;
|
|
31
|
-
this.groupLocalStorage = new GroupLocalStorage(account);
|
|
32
|
-
this.findAndUpdateGroupsLocalStorage = new FindAndUpdateGroupsLocalStorageService(account, apiClientOptions);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Get or find all groups.
|
|
37
|
-
* @returns {Promise<GroupsCollection>}
|
|
38
|
-
*/
|
|
39
|
-
async getOrFindAll() {
|
|
40
|
-
const hasRuntimeCache = GroupLocalStorage.hasCachedData(this.account.id);
|
|
41
|
-
const groupsDto = await this.groupLocalStorage.get();
|
|
42
|
-
// Return local storage data if the storage was initialized.
|
|
43
|
-
if (groupsDto) {
|
|
44
|
-
// No validation is required if the data is in the runtime cache, as validation was done by the process that set the cache.
|
|
45
|
-
return new GroupsCollection(groupsDto, { validate: !hasRuntimeCache });
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Otherwise retrieve the groups and update the local storage.
|
|
49
|
-
return this.findAndUpdateGroupsLocalStorage.findAndUpdateAll();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Get or find all the groups matching the given ids.
|
|
54
|
-
* @param {Array<string>} groupIds The groups to find.
|
|
55
|
-
* @return {Promise<GroupsCollection>}
|
|
56
|
-
*/
|
|
57
|
-
async getOrFindByIds(groupIds) {
|
|
58
|
-
assertArrayUUID(groupIds);
|
|
59
|
-
|
|
60
|
-
const groupsCollection = await this.getOrFindAll();
|
|
61
|
-
groupsCollection.filterByPropertyValueIn("id", groupIds);
|
|
62
|
-
|
|
63
|
-
return groupsCollection;
|
|
64
|
-
}
|
|
65
|
-
}
|