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.
Files changed (282) hide show
  1. package/.devcontainer/Dockerfile +33 -3
  2. package/.devcontainer/devcontainer-lock.json +9 -0
  3. package/.devcontainer/post-start.sh +1 -2
  4. package/.github/workflows/codeql-analysis.yml +2 -1
  5. package/.github/workflows/release_candidate.yaml +3 -1
  6. package/.gitlab-ci.yml +1 -0
  7. package/CHANGELOG.md +202 -70
  8. package/CODEOWNERS +2 -0
  9. package/RELEASE_NOTES.md +4 -2
  10. package/package.json +9 -7
  11. package/renovate.json +6 -0
  12. package/src/all/background_page/controller/InformMenuController/InformMenuController.js +2 -5
  13. package/src/all/background_page/controller/InformMenuController/InformMenuController.test.js +31 -1
  14. package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.js +1 -1
  15. package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.test.js +6 -14
  16. package/src/all/background_page/controller/account/updatePrivateKeyController.js +7 -5
  17. package/src/all/background_page/controller/account/updatePrivateKeyController.test.js +18 -13
  18. package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.js +4 -2
  19. package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.test.js +25 -2
  20. package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.js +1 -1
  21. package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.test.js +10 -5
  22. package/src/all/background_page/controller/accountRecovery/recoverAccountController.js +6 -2
  23. package/src/all/background_page/controller/accountRecovery/recoverAccountController.test.js +11 -4
  24. package/src/all/background_page/controller/auth/authCheckStatus.test.data.js +6 -6
  25. package/src/all/background_page/controller/auth/authCheckStatusController.js +11 -3
  26. package/src/all/background_page/controller/auth/authCheckStatusController.test.js +74 -44
  27. package/src/all/background_page/controller/auth/authIsMfaRequiredController.js +11 -3
  28. package/src/all/background_page/controller/auth/authIsMfaRequiredController.test.js +18 -9
  29. package/src/all/background_page/controller/auth/authLoginController.js +1 -1
  30. package/src/all/background_page/controller/auth/authLoginController.test.js +10 -5
  31. package/src/all/background_page/controller/autofill/AutofillController.js +3 -3
  32. package/src/all/background_page/controller/autofill/AutofillController.test.js +20 -12
  33. package/src/all/background_page/controller/export/exportResourcesFileController.js +6 -3
  34. package/src/all/background_page/controller/export/exportResourcesFileController.test.js +34 -4
  35. package/src/all/background_page/controller/extension/onExtensionInstalledController.js +8 -2
  36. package/src/all/background_page/controller/extension/onExtensionInstalledController.test.js +5 -1
  37. package/src/all/background_page/controller/group/{getOrFindGroupsController.js → findGroupsByIdsForShareController.js} +9 -10
  38. package/src/all/background_page/controller/group/{getOrFindGroupsController.test.js → findGroupsByIdsForShareController.test.js} +8 -8
  39. package/src/all/background_page/controller/group/groupUpdateController.test.js +1 -0
  40. package/src/all/background_page/controller/import/importResourcesFileController.test.js +8 -1
  41. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.js +2 -2
  42. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.test.js +7 -4
  43. package/src/all/background_page/controller/locale/getLocaleController.js +3 -2
  44. package/src/all/background_page/controller/metadata/findMetadataTypesSettingsController.test.js +9 -15
  45. package/src/all/background_page/controller/metadata/getMetadataTypesSettingsController.test.js +9 -15
  46. package/src/all/background_page/controller/metadata/getOrFindMetadataKeysSettingsController.test.js +12 -22
  47. package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.test.js +14 -2
  48. package/src/all/background_page/controller/move/moveFolderController.test.js +8 -0
  49. package/src/all/background_page/controller/move/moveResourcesController.test.js +8 -0
  50. package/src/all/background_page/controller/passwordExpiry/getOrFindPasswordExpirySettingsController.test.js +13 -8
  51. package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.js +4 -4
  52. package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.test.js +8 -10
  53. package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.js +62 -0
  54. package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.test.js +71 -0
  55. package/src/all/background_page/controller/recover/generateRecoverAccountRecoveryRequestKeyController.js +1 -1
  56. package/src/all/background_page/controller/resource/resourceCreateController.js +11 -4
  57. package/src/all/background_page/controller/resource/resourceCreateController.test.js +12 -1
  58. package/src/all/background_page/controller/resource/resourceUpdateController.js +11 -4
  59. package/src/all/background_page/controller/resource/resourceUpdateController.test.js +35 -2
  60. package/src/all/background_page/controller/resourceType/getResourceTypesController.js +5 -4
  61. package/src/all/background_page/controller/resourceType/getResourceTypesController.test.js +5 -2
  62. package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.js +3 -2
  63. package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.test.js +16 -3
  64. package/src/all/background_page/controller/secret/findSecretByResourceIdController.js +3 -3
  65. package/src/all/background_page/controller/secret/findSecretByResourceIdController.test.js +24 -0
  66. package/src/all/background_page/controller/secretRevision/findResourceSecretRevisionsForDisplayController.js +2 -1
  67. package/src/all/background_page/controller/setup/generateSetupKeyPairController.js +6 -3
  68. package/src/all/background_page/controller/setup/generateSetupKeyPairController.test.js +11 -1
  69. package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.js +1 -1
  70. package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.test.js +14 -18
  71. package/src/all/background_page/controller/setup/setSetupLocaleController.js +1 -1
  72. package/src/all/background_page/controller/setup/setSetupLocaleController.test.js +6 -10
  73. package/src/all/background_page/controller/setup/signInSetupController.js +6 -2
  74. package/src/all/background_page/controller/setup/signInSetupController.test.js +10 -5
  75. package/src/all/background_page/controller/share/shareOneFolderController.test.js +8 -0
  76. package/src/all/background_page/controller/share/shareResourcesController.test.js +9 -1
  77. package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.js +59 -0
  78. package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.test.js +150 -0
  79. package/src/all/background_page/controller/{group/getOrFindGroupsUsersController.js → user/getOrFindAllUsersController.js} +12 -17
  80. package/src/all/background_page/controller/user/getOrFindAllUsersController.test.js +55 -0
  81. package/src/all/background_page/controller/user/getOrFindLoggedInUserController.js +3 -3
  82. package/src/all/background_page/controller/user/getOrFindLoggedInUserController.test.js +19 -15
  83. package/src/all/background_page/controller/user/updateUserLocalStorageController.test.js +8 -5
  84. package/src/all/background_page/event/accountRecoveryEvents.js +4 -4
  85. package/src/all/background_page/event/appEvents.js +7 -2
  86. package/src/all/background_page/event/authEvents.js +2 -2
  87. package/src/all/background_page/event/groupEvents.js +4 -17
  88. package/src/all/background_page/event/informCallToActionEvents.js +1 -1
  89. package/src/all/background_page/event/informMenuEvents.js +1 -1
  90. package/src/all/background_page/event/localeEvents.js +4 -3
  91. package/src/all/background_page/event/permissionEvents.js +13 -0
  92. package/src/all/background_page/event/recoverEvents.js +4 -4
  93. package/src/all/background_page/event/resourceEvents.js +6 -15
  94. package/src/all/background_page/event/resourceTypeEvents.js +4 -3
  95. package/src/all/background_page/event/setupEvents.js +4 -4
  96. package/src/all/background_page/event/siteSettingsEvents.js +29 -0
  97. package/src/all/background_page/event/userEvents.js +4 -8
  98. package/src/all/background_page/index.js +0 -37
  99. package/src/all/background_page/model/entity/account/abstractAccountEntity.js +2 -2
  100. package/src/all/background_page/model/entity/account/accountAccountRecoveryEntity.js +7 -17
  101. package/src/all/background_page/model/entity/account/accountEntity.js +7 -14
  102. package/src/all/background_page/model/entity/account/accountKitEntity.js +1 -2
  103. package/src/all/background_page/model/entity/account/accountRecoverEntity.js +4 -14
  104. package/src/all/background_page/model/entity/account/accountSetupEntity.js +4 -14
  105. package/src/all/background_page/model/entity/account/accountTemporaryEntity.js +2 -5
  106. package/src/all/background_page/model/entity/gpgkey/generate/generateGpgKeyPairOptionsEntity.test.js +5 -5
  107. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.js +49 -0
  108. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.data.js +23 -0
  109. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.js +51 -0
  110. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.js → siteSettings/siteSettingsEntity.js} +17 -24
  111. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.data.js → siteSettings/siteSettingsEntity.test.data.js} +9 -9
  112. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.js → siteSettings/siteSettingsEntity.test.js} +30 -39
  113. package/src/all/background_page/model/entity/user/userEntity.test.js +6 -6
  114. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +40 -3
  115. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.test.js +122 -0
  116. package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.js +1 -1
  117. package/src/all/background_page/model/locale/localeModel.js +13 -8
  118. package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.js +6 -6
  119. package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.test.js +3 -2
  120. package/src/all/background_page/model/resource/resourceModel.js +4 -4
  121. package/src/all/background_page/model/user/userModel.js +7 -28
  122. package/src/all/background_page/model/user/userModel.test.js +51 -99
  123. package/src/all/background_page/pagemod/appBootstrapPagemod.js +4 -1
  124. package/src/all/background_page/pagemod/appBootstrapPagemod.test.js +5 -2
  125. package/src/all/background_page/pagemod/appPagemod.js +32 -6
  126. package/src/all/background_page/pagemod/appPagemod.test.js +22 -10
  127. package/src/all/background_page/pagemod/authPagemod.js +2 -10
  128. package/src/all/background_page/pagemod/authPagemod.test.js +4 -4
  129. package/src/all/background_page/pagemod/pagemodManager.test.js +5 -2
  130. package/src/all/background_page/pagemod/quickAccessPagemod.js +2 -2
  131. package/src/all/background_page/pagemod/quickAccessPagemod.test.js +4 -4
  132. package/src/all/background_page/pagemod/recoverPagemod.js +2 -2
  133. package/src/all/background_page/pagemod/recoverPagemod.test.js +6 -0
  134. package/src/all/background_page/pagemod/setupPagemod.js +2 -2
  135. package/src/all/background_page/pagemod/setupPagemod.test.js +6 -0
  136. package/src/all/background_page/pagemod/webIntegrationPagemod.js +21 -2
  137. package/src/all/background_page/pagemod/webIntegrationPagemod.test.js +16 -25
  138. package/src/all/background_page/service/account/getActiveAccountService.js +2 -3
  139. package/src/all/background_page/service/account/getLegacyAccountService.js +3 -14
  140. package/src/all/background_page/service/account/updateSsoCredentialsService.js +9 -5
  141. package/src/all/background_page/service/api/group/groupApiService.js +9 -16
  142. package/src/all/background_page/service/api/group/groupApiService.test.js +59 -26
  143. package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.js +46 -0
  144. package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.test.js +63 -0
  145. package/src/all/background_page/service/auth/checkAuthStatusService.js +27 -14
  146. package/src/all/background_page/service/auth/checkAuthStatusService.test.js +80 -62
  147. package/src/all/background_page/service/auth/postLoginService.js +3 -3
  148. package/src/all/background_page/service/auth/postLoginService.test.js +4 -4
  149. package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.js +5 -1
  150. package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.test.js +14 -8
  151. package/src/all/background_page/service/authenticationStatusService.js +13 -18
  152. package/src/all/background_page/service/authenticationStatusService.test.js +9 -6
  153. package/src/all/background_page/service/crypto/generateGpgKeyPairService.test.js +5 -5
  154. package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.js +7 -6
  155. package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.test.js +10 -7
  156. package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.js +7 -2
  157. package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.test.js +5 -5
  158. package/src/all/background_page/service/group/findGroupsService.js +42 -1
  159. package/src/all/background_page/service/group/findGroupsService.test.js +82 -0
  160. package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.js +82 -0
  161. package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.test.js +102 -0
  162. package/src/all/background_page/service/group/groupUpdateService.js +49 -78
  163. package/src/all/background_page/service/group/groupUpdateService.test.js +136 -0
  164. package/src/all/background_page/service/localStorage/localStorageService.js +8 -6
  165. package/src/all/background_page/service/localStorage/localStorageService.test.js +33 -15
  166. package/src/all/background_page/service/local_storage/abstractLocalStorage.js +193 -0
  167. package/src/all/background_page/service/local_storage/abstractLocalStorage.test.data.js +45 -0
  168. package/src/all/background_page/service/local_storage/abstractLocalStorage.test.js +271 -0
  169. package/src/all/background_page/service/local_storage/activeSessionLocalStorage.js +105 -0
  170. package/src/all/background_page/service/local_storage/activeSessionLocalStorage.test.js +153 -0
  171. package/src/all/background_page/service/local_storage/rbacLocalStorage.js +10 -82
  172. package/src/all/background_page/service/local_storage/rbacLocalStorage.test.js +8 -8
  173. package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.js +10 -43
  174. package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.test.js +68 -0
  175. package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.js +104 -0
  176. package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.test.js +114 -0
  177. package/src/all/background_page/service/local_storage/userMeLocalStorage.js +50 -0
  178. package/src/all/background_page/service/{sessionStorage/userMeSessionStorageService.test.js → local_storage/userMeLocalStorage.test.js} +55 -36
  179. package/src/all/background_page/service/metadata/encryptMetadataService.js +3 -3
  180. package/src/all/background_page/service/metadata/encryptMetadataService.test.js +11 -11
  181. package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.js +4 -4
  182. package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.test.js +18 -16
  183. package/src/all/background_page/service/metadata/getOrFindMetadataSettingsService.test.js +6 -8
  184. package/src/all/background_page/service/metadata/rotateMetadata/rotateResourcesMetadataKeyService.test.js +4 -4
  185. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.js +3 -3
  186. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.test.js +1 -1
  187. package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.js +4 -4
  188. package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.test.js +9 -7
  189. package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.js +4 -4
  190. package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.test.js +6 -6
  191. package/src/all/background_page/service/rbac/findAndUpdateRbacsLocalStorageService.js +2 -2
  192. package/src/all/background_page/service/rbac/getOrFindRbacService.js +1 -1
  193. package/src/all/background_page/service/resource/create/resourceCreateService.js +41 -51
  194. package/src/all/background_page/service/resource/create/resourceCreateService.test.js +100 -98
  195. package/src/all/background_page/service/resource/export/exportResourcesService.js +7 -7
  196. package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.js +4 -4
  197. package/src/all/background_page/service/resource/findResourcesService.js +13 -16
  198. package/src/all/background_page/service/resource/findResourcesService.test.js +12 -11
  199. package/src/all/background_page/service/resource/getOrFindResourcesService.js +3 -3
  200. package/src/all/background_page/service/resource/import/ImportResourcesService.js +9 -9
  201. package/src/all/background_page/service/resource/import/ImportResourcesService.test.js +30 -15
  202. package/src/all/background_page/service/resource/update/resourceUpdateService.js +38 -19
  203. package/src/all/background_page/service/resource/update/resourceUpdateService.test.js +64 -31
  204. package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.js +49 -0
  205. package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.test.js +61 -0
  206. package/src/all/background_page/service/resourceType/getSecretSchemaResourceTypeService.js +44 -0
  207. package/src/all/background_page/service/resourceType/updateResourceTypesService.js +6 -4
  208. package/src/all/background_page/service/resourceType/updateResourceTypesService.test.js +19 -14
  209. package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.js +5 -4
  210. package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.test.js +16 -9
  211. package/src/all/background_page/service/share/shareResourceService.js +4 -4
  212. package/src/all/background_page/service/share/shareResourceService.test.js +6 -6
  213. package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.js +77 -0
  214. package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.test.js +130 -0
  215. package/src/all/background_page/service/siteSettings/findSiteSettingsService.js +47 -0
  216. package/src/all/background_page/service/siteSettings/findSiteSettingsService.test.js +68 -0
  217. package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.js +84 -0
  218. package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.test.js +175 -0
  219. package/src/all/background_page/service/siteSettings/siteSettingsRuntimeCache.js +70 -0
  220. package/src/all/background_page/service/sso/generateSsoKitService.test.js +2 -2
  221. package/src/all/background_page/service/toolbar/toolbarService.js +6 -4
  222. package/src/all/background_page/service/toolbar/toolbarService.test.js +14 -13
  223. package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.js +4 -4
  224. package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.test.js +3 -3
  225. package/src/all/background_page/service/user/getOrFindMeService.js +64 -0
  226. package/src/all/background_page/service/user/getOrFindMeService.test.js +65 -0
  227. package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.js +5 -4
  228. package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.test.js +12 -11
  229. package/src/all/background_page/service/validator/appEmailValidatorService.js +11 -6
  230. package/src/all/background_page/service/validator/appEmailValidatorService.test.js +11 -11
  231. package/src/all/common/polyfill/browserPolyfill.js +8 -8
  232. package/src/all/locales/cs-CZ/common.json +1 -4
  233. package/src/all/locales/de-DE/common.json +1 -4
  234. package/src/all/locales/en-UK/common.json +0 -3
  235. package/src/all/locales/es-ES/common.json +1 -4
  236. package/src/all/locales/fr-FR/common.json +1 -4
  237. package/src/all/locales/it-IT/common.json +1 -4
  238. package/src/all/locales/ja-JP/common.json +1 -4
  239. package/src/all/locales/ko-KR/common.json +0 -3
  240. package/src/all/locales/lt-LT/common.json +1 -4
  241. package/src/all/locales/nl-NL/common.json +1 -4
  242. package/src/all/locales/pl-PL/common.json +1 -4
  243. package/src/all/locales/pt-BR/common.json +1 -4
  244. package/src/all/locales/ro-RO/common.json +1 -4
  245. package/src/all/locales/ru-RU/common.json +1 -4
  246. package/src/all/locales/sl-SI/common.json +1 -4
  247. package/src/all/locales/sv-SE/common.json +1 -4
  248. package/src/all/locales/uk-UA/common.json +1 -4
  249. package/src/all/webAccessibleResources/js/app/QuickAccess.js +7 -0
  250. package/src/chrome/manifest.json +1 -1
  251. package/src/chrome-mv3/manifest.json +1 -1
  252. package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.js +132 -0
  253. package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.test.js +125 -0
  254. package/src/chrome-mv3/offscreens/service/offscreen/handleOffscreenRequestService.js +4 -0
  255. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.js +83 -0
  256. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.test.js +116 -0
  257. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.js +99 -0
  258. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.data.js +45 -0
  259. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.js +87 -0
  260. package/src/chrome-mv3/serviceWorker/service/network/requestFetchOffscreenService.js +0 -1
  261. package/src/chrome-mv3/serviceWorker/service/offscreen/handleOffscreenResponseService.js +15 -0
  262. package/src/firefox/manifest.json +1 -1
  263. package/src/safari/background_page/index.js +0 -37
  264. package/src/safari/common/polyfill/safariBrowserPolyfill.js +10 -10
  265. package/src/safari/manifest.json +1 -1
  266. package/test/jest.setup.js +4 -2
  267. package/src/all/background_page/controller/group/getOrFindGroupsUsersController.test.js +0 -69
  268. package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.js +0 -55
  269. package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.test.js +0 -45
  270. package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.js +0 -76
  271. package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.test.js +0 -102
  272. package/src/all/background_page/event/organizationSettingsEvents.js +0 -37
  273. package/src/all/background_page/model/organizationSettings/organizationSettingsModel.js +0 -93
  274. package/src/all/background_page/model/resourceType/resourceTypeModel.js +0 -72
  275. package/src/all/background_page/model/resourceType/resourceTypeModel.test.js +0 -101
  276. package/src/all/background_page/service/api/organizationSettings/organizationSettingsService.js +0 -58
  277. package/src/all/background_page/service/group/getOrFindGroupsService.js +0 -65
  278. package/src/all/background_page/service/group/getOrFindGroupsService.test.js +0 -168
  279. package/src/all/background_page/service/group/getOrFindGroupsUsersService.js +0 -51
  280. package/src/all/background_page/service/group/getOrFindGroupsUsersService.test.js +0 -94
  281. package/src/all/background_page/service/local_storage/authStatusLocalStorage.js +0 -70
  282. package/src/all/background_page/service/sessionStorage/userMeSessionStorageService.js +0 -94
@@ -0,0 +1,116 @@
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
+
15
+ import Validator from "validator";
16
+ import { v4 as uuidv4 } from "uuid";
17
+ import HandleOffscreenResponseService from "../offscreen/handleOffscreenResponseService";
18
+ import { SEND_MESSAGE_TARGET_ADD_USERS_TO_GROUP_OFFSCREEN } from "../../../offscreens/service/group/addUsersToGroupOffscreenService";
19
+ import { RequestAddUsersToGroupOffscreenService } from "./requestAddUsersToGroupOffscreenService";
20
+ import ResponseAddUsersToGroupOffscreenService from "./responseAddUsersToGroupOffscreenService";
21
+ import AccountEntity from "../../../../all/background_page/model/entity/account/accountEntity";
22
+ import { defaultAccountDto } from "../../../../all/background_page/model/entity/account/accountEntity.test.data";
23
+ import GroupUpdateDryRunResultEntity from "../../../../all/background_page/model/entity/group/update/groupUpdateDryRunResultEntity";
24
+ import ProgressService from "../../../../all/background_page/service/progress/progressService";
25
+
26
+ beforeEach(() => {
27
+ jest.clearAllMocks();
28
+ });
29
+
30
+ describe("RequestAddUsersToGroupOffscreenService", () => {
31
+ describe("::sendOffscreenMessage", () => {
32
+ it("should send a message to the offscreen document", async () => {
33
+ expect.assertions(1);
34
+ const id = uuidv4();
35
+ const data = { addUsersToGroupContent: {} };
36
+ const target = SEND_MESSAGE_TARGET_ADD_USERS_TO_GROUP_OFFSCREEN;
37
+
38
+ await RequestAddUsersToGroupOffscreenService.sendOffscreenMessage(id, data);
39
+
40
+ expect(chrome.runtime.sendMessage).toHaveBeenCalledWith({ id, data, target });
41
+ });
42
+ });
43
+
44
+ describe("::decryptAndEncryptSecrets", () => {
45
+ it("should send a message to the offscreen document and stack the response callback handlers", async () => {
46
+ expect.assertions(7);
47
+
48
+ let sentMessage;
49
+ jest.spyOn(chrome.runtime, "sendMessage").mockImplementationOnce((message) => {
50
+ sentMessage = message;
51
+ HandleOffscreenResponseService._offscreenResponsePromisesCallbacks[message.id].resolve();
52
+ });
53
+
54
+ const account = new AccountEntity(defaultAccountDto());
55
+ const passphrase = "ada@passbolt.com";
56
+ const groupUpdateDryRunEntity = new GroupUpdateDryRunResultEntity({ secrets: [], needed_secrets: [] });
57
+ const progressService = new ProgressService(null, "RequestAddUsersToGroupOffscreenService");
58
+ const requestPromise = RequestAddUsersToGroupOffscreenService.decryptAndEncryptSecrets(
59
+ account,
60
+ passphrase,
61
+ groupUpdateDryRunEntity,
62
+ {},
63
+ progressService,
64
+ );
65
+
66
+ const addUserToGroup = {
67
+ privateKey: {
68
+ armoredKey: account.userPrivateArmoredKey,
69
+ passphrase: passphrase,
70
+ },
71
+ secrets: groupUpdateDryRunEntity.secrets.toDto(),
72
+ neededSecrets: groupUpdateDryRunEntity.neededSecrets.toDto(),
73
+ usersPublicKeys: {},
74
+ };
75
+
76
+ jest.spyOn(ResponseAddUsersToGroupOffscreenService, "setProgressService");
77
+
78
+ expect(requestPromise).toBeInstanceOf(Promise);
79
+ await expect(requestPromise).resolves.not.toThrow();
80
+
81
+ expect(Validator.isUUID(sentMessage.id)).toBe(true);
82
+ expect(chrome.runtime.sendMessage).toHaveBeenCalledTimes(1);
83
+ expect(chrome.runtime.sendMessage).toHaveBeenCalledWith({
84
+ id: sentMessage.id,
85
+ data: { requestId: sentMessage.id, addUsersToGroupContent: addUserToGroup },
86
+ target: SEND_MESSAGE_TARGET_ADD_USERS_TO_GROUP_OFFSCREEN,
87
+ });
88
+ expect(ResponseAddUsersToGroupOffscreenService.setProgressService).toHaveBeenCalledTimes(1);
89
+ expect(ResponseAddUsersToGroupOffscreenService.setProgressService).toHaveBeenCalledWith(
90
+ sentMessage.id,
91
+ progressService,
92
+ );
93
+ });
94
+
95
+ it("should throw if the message cannot be sent to the offscreen document for unexpected reason", async () => {
96
+ expect.assertions(1);
97
+ jest.spyOn(chrome.runtime, "sendMessage").mockImplementationOnce(() => {
98
+ throw new Error("Test error");
99
+ });
100
+
101
+ const account = new AccountEntity(defaultAccountDto());
102
+ const groupUpdateDryRunEntity = new GroupUpdateDryRunResultEntity([]);
103
+ const progressService = new ProgressService(null, "RequestAddUsersToGroupOffscreenService");
104
+
105
+ await expect(() =>
106
+ RequestAddUsersToGroupOffscreenService.decryptAndEncryptSecrets(
107
+ account,
108
+ "test",
109
+ groupUpdateDryRunEntity,
110
+ {},
111
+ progressService,
112
+ ),
113
+ ).rejects.toThrow();
114
+ });
115
+ });
116
+ });
@@ -0,0 +1,99 @@
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
+
15
+ import {
16
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_ERROR,
17
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_PROGRESS,
18
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_SUCCESS,
19
+ } from "../../../offscreens/service/group/addUsersToGroupOffscreenService";
20
+
21
+ const ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPES = [
22
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_SUCCESS,
23
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_PROGRESS,
24
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_ERROR,
25
+ ];
26
+
27
+ export default class ResponseAddUsersToGroupOffscreenService {
28
+ /**
29
+ * Progress services registered per offscreen request id.
30
+ * @type {Object<string, ProgressService>}
31
+ * @private
32
+ */
33
+ static _progressServices = {};
34
+
35
+ /**
36
+ * Handle add user to group decryption and encryption response
37
+ * @param {object} message.
38
+ * @param {{resolve: function, reject: function}} callbacks the offscreen response callback.
39
+ * @return {void}
40
+ */
41
+ static handleAddUsersToGroupResponse(message, callbacks) {
42
+ ResponseAddUsersToGroupOffscreenService.assertMessage(message);
43
+
44
+ const { type, data } = message;
45
+
46
+ // The request is over (success or error): the progress service is no longer needed.
47
+ delete ResponseAddUsersToGroupOffscreenService._progressServices[message.id];
48
+
49
+ if (type === ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_SUCCESS) {
50
+ callbacks.resolve(data);
51
+ } else {
52
+ callbacks.reject(new Error(data.message));
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Handle progress message offscreen response.
58
+ * @param {object} message.
59
+ * @return {void}
60
+ */
61
+ static handleAddUsersToGroupProgress(message) {
62
+ ResponseAddUsersToGroupOffscreenService.assertMessage(message);
63
+
64
+ const { type, data } = message;
65
+
66
+ if (type === ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_PROGRESS) {
67
+ ResponseAddUsersToGroupOffscreenService._progressServices[message.id]?.updateStepMessage(data.message);
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Register the progress service for a given offscreen request id.
73
+ * @param {string} requestId The offscreen request id.
74
+ * @param {ProgressService} progressService
75
+ * @returns {void}
76
+ */
77
+ static setProgressService(requestId, progressService) {
78
+ ResponseAddUsersToGroupOffscreenService._progressServices[requestId] = progressService;
79
+ }
80
+
81
+ /**
82
+ * Assert message data.
83
+ * @param {object} message The message.
84
+ * @throws {Error} If the message.data is not an object.
85
+ * @throws {Error} If the message.type is not valid.
86
+ * @private
87
+ */
88
+ static assertMessage(message) {
89
+ if (!ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPES.includes(message?.type)) {
90
+ throw new Error(
91
+ `ResponseAddUsersToGroupOffscreenService: message.type should be one of the following ${ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPES.join(", ")}.`,
92
+ );
93
+ }
94
+
95
+ if (!(message?.data instanceof Object)) {
96
+ throw new Error("ResponseAddUsersToGroupOffscreenService: message.data should be an object.");
97
+ }
98
+ }
99
+ }
@@ -0,0 +1,45 @@
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
+
15
+ import {
16
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_ERROR,
17
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_PROGRESS,
18
+ ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_SUCCESS,
19
+ SEND_MESSAGE_TARGET_ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_HANDLER,
20
+ SEND_MESSAGE_TARGET_OFFSCREEN_PROGRESS_SERVICE_HANDLER,
21
+ } from "../../../offscreens/service/group/addUsersToGroupOffscreenService";
22
+
23
+ export const successAddUsersToGroupResponseMessage = (message = {}) => ({
24
+ id: crypto.randomUUID(),
25
+ type: ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_SUCCESS,
26
+ target: SEND_MESSAGE_TARGET_ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_HANDLER,
27
+ data: {},
28
+ ...message,
29
+ });
30
+
31
+ export const errorAddUsersToGroupResponseMessage = (message = {}) => ({
32
+ id: crypto.randomUUID(),
33
+ type: ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_ERROR,
34
+ target: SEND_MESSAGE_TARGET_ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_HANDLER,
35
+ data: {},
36
+ ...message,
37
+ });
38
+
39
+ export const progressAddUsersToGroupResponseMessage = (message = {}) => ({
40
+ id: crypto.randomUUID(),
41
+ type: ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_TYPE_PROGRESS,
42
+ target: SEND_MESSAGE_TARGET_OFFSCREEN_PROGRESS_SERVICE_HANDLER,
43
+ data: {},
44
+ ...message,
45
+ });
@@ -0,0 +1,87 @@
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
+
15
+ import { defaultCallbacks } from "../network/responseFetchOffscreenService.test.data";
16
+ import {
17
+ errorAddUsersToGroupResponseMessage,
18
+ progressAddUsersToGroupResponseMessage,
19
+ successAddUsersToGroupResponseMessage,
20
+ } from "./responseAddUsersToGroupOffscreenService.test.data";
21
+ import ResponseAddUsersToGroupOffscreenService from "./responseAddUsersToGroupOffscreenService";
22
+ import { defaultProgressService } from "../../../../all/background_page/service/progress/progressService.test.data";
23
+
24
+ describe("ResponseAddUsersToGroupOffscreenService", () => {
25
+ describe("::handleAddUsersToGroupResponse", () => {
26
+ it("should resolve the promise from the response callback", () => {
27
+ expect.assertions(1);
28
+
29
+ const id = crypto.randomUUID();
30
+ const callbacks = defaultCallbacks();
31
+
32
+ const message = successAddUsersToGroupResponseMessage({ id });
33
+ ResponseAddUsersToGroupOffscreenService.handleAddUsersToGroupResponse(message, callbacks);
34
+
35
+ expect(callbacks.resolve).toHaveBeenCalledTimes(1);
36
+ });
37
+
38
+ it("should reject the promise from the response callback", () => {
39
+ expect.assertions(1);
40
+
41
+ const id = crypto.randomUUID();
42
+ const callbacks = defaultCallbacks();
43
+
44
+ const message = errorAddUsersToGroupResponseMessage({ id });
45
+ ResponseAddUsersToGroupOffscreenService.handleAddUsersToGroupResponse(message, callbacks);
46
+
47
+ expect(callbacks.reject).toHaveBeenCalledTimes(1);
48
+ });
49
+
50
+ it("should clear the request progress service once the response is handled", () => {
51
+ expect.assertions(1);
52
+
53
+ const id = crypto.randomUUID();
54
+ const callbacks = defaultCallbacks();
55
+ const progressService = defaultProgressService({ goals: 10 });
56
+ ResponseAddUsersToGroupOffscreenService.setProgressService(id, progressService);
57
+
58
+ const message = successAddUsersToGroupResponseMessage({ id });
59
+ ResponseAddUsersToGroupOffscreenService.handleAddUsersToGroupResponse(message, callbacks);
60
+
61
+ expect(ResponseAddUsersToGroupOffscreenService._progressServices[id]).toBeUndefined();
62
+ });
63
+ });
64
+
65
+ describe("::handleAddUsersToGroupProgress", () => {
66
+ it("should update progress message of the progress service registered for the request id", () => {
67
+ expect.assertions(2);
68
+
69
+ const id = crypto.randomUUID();
70
+ const progressService = defaultProgressService({ goals: 10 });
71
+ const message = progressAddUsersToGroupResponseMessage({ id, data: { message: "update message" } });
72
+ ResponseAddUsersToGroupOffscreenService.setProgressService(id, progressService);
73
+ ResponseAddUsersToGroupOffscreenService.handleAddUsersToGroupProgress(message);
74
+
75
+ expect(progressService.updateStepMessage).toHaveBeenCalledTimes(1);
76
+ expect(progressService.updateStepMessage).toHaveBeenCalledWith(message.data.message);
77
+ });
78
+
79
+ it("should not throw when no progress service is registered for the request id", () => {
80
+ expect.assertions(1);
81
+
82
+ const message = progressAddUsersToGroupResponseMessage({ data: { message: "update message" } });
83
+
84
+ expect(() => ResponseAddUsersToGroupOffscreenService.handleAddUsersToGroupProgress(message)).not.toThrow();
85
+ });
86
+ });
87
+ });
@@ -41,7 +41,6 @@ export class RequestFetchOffscreenService {
41
41
  const fetchStrategy = (await RequestFetchOffscreenService.isFetchOffscreenPreferred())
42
42
  ? RequestFetchOffscreenService.fetchOffscreen
43
43
  : RequestFetchOffscreenService.fetchNative;
44
-
45
44
  return fetchStrategy(resource, options);
46
45
  }
47
46
 
@@ -20,6 +20,11 @@ import {
20
20
  import { SEND_MESSAGE_TARGET_OFFSCREEN_ERROR_RESPONSE_HANDLER } from "../../../offscreens/service/offscreen/handleOffscreenRequestService";
21
21
  import ResponseClipboardOffscreenService from "../clipboard/responseClipboardOffscreenService";
22
22
  import ResponseFetchOffscreenService from "../network/responseFetchOffscreenService";
23
+ import {
24
+ SEND_MESSAGE_TARGET_ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_HANDLER,
25
+ SEND_MESSAGE_TARGET_OFFSCREEN_PROGRESS_SERVICE_HANDLER,
26
+ } from "../../../offscreens/service/group/addUsersToGroupOffscreenService";
27
+ import ResponseAddUsersToGroupOffscreenService from "../addUsersToGroup/responseAddUsersToGroupOffscreenService";
23
28
 
24
29
  export default class HandleOffscreenResponseService {
25
30
  /**
@@ -36,6 +41,10 @@ export default class HandleOffscreenResponseService {
36
41
  [SEND_MESSAGE_TARGET_FETCH_OFFSCREEN_RESPONSE_HANDLER]: ResponseFetchOffscreenService.handleFetchResponse,
37
42
  [SEND_MESSAGE_TARGET_CLIPBOARD_WRITE_OFFSCREEN_RESPONSE_HANDLER]:
38
43
  ResponseClipboardOffscreenService.handleClipboardResponse,
44
+ [SEND_MESSAGE_TARGET_ADD_USERS_TO_GROUP_OFFSCREEN_RESPONSE_HANDLER]:
45
+ ResponseAddUsersToGroupOffscreenService.handleAddUsersToGroupResponse,
46
+ [SEND_MESSAGE_TARGET_OFFSCREEN_PROGRESS_SERVICE_HANDLER]:
47
+ ResponseAddUsersToGroupOffscreenService.handleAddUsersToGroupProgress,
39
48
  [SEND_MESSAGE_TARGET_OFFSCREEN_ERROR_RESPONSE_HANDLER]: HandleOffscreenResponseService.handleOffscreenError,
40
49
  };
41
50
 
@@ -50,6 +59,12 @@ export default class HandleOffscreenResponseService {
50
59
  }
51
60
 
52
61
  const responseHandler = HandleOffscreenResponseService.REPONSE_HANDLE_MAP[message.target];
62
+
63
+ if (message.target === SEND_MESSAGE_TARGET_OFFSCREEN_PROGRESS_SERVICE_HANDLER) {
64
+ responseHandler(message);
65
+ return;
66
+ }
67
+
53
68
  if (!responseHandler) {
54
69
  console.debug("HandleOffscreenResponseService received response not specific to offscreen.");
55
70
  return;
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 2,
3
3
  "name": "__MSG_appName__",
4
4
  "short_name": "passbolt",
5
- "version": "5.13.0",
5
+ "version": "5.14.2",
6
6
  "description": "__MSG_appDescription__",
7
7
  "default_locale": "en",
8
8
  "browser_specific_settings": {
@@ -14,12 +14,7 @@
14
14
  import PortManager from "../../all/background_page/sdk/port/portManager";
15
15
  import SystemRequirementService from "../../all/background_page/service/systemRequirementService/systemRequirementService";
16
16
  import OnExtensionInstalledController from "../../all/background_page/controller/extension/onExtensionInstalledController";
17
- import User from "../../all/background_page/model/user";
18
- import Log from "../../all/background_page/model/log";
19
- import CheckAuthStatusService from "../../all/background_page/service/auth/checkAuthStatusService";
20
17
  import GlobalAlarmService from "../../all/background_page/service/alarm/globalAlarmService";
21
- import PostLoginService from "../../all/background_page/service/auth/postLoginService";
22
- import PostLogoutService from "../../all/background_page/service/auth/postLogoutService";
23
18
  import OnStartUpService from "../../all/background_page/service/extension/onStartUpService";
24
19
  import ToolbarService from "../../all/background_page/service/toolbar/toolbarService";
25
20
  import WebNavigationService from "../../all/background_page/service/webNavigation/webNavigationService";
@@ -29,38 +24,6 @@ const main = async () => {
29
24
  * Load all system requirement
30
25
  */
31
26
  await SystemRequirementService.get();
32
-
33
- // When the extension is updated and the user is still connected, an event needs to be sent
34
- checkAndProcessIfUserAuthenticated();
35
- };
36
-
37
- /**
38
- * Check and process event if the user is authenticated
39
- * @return {Promise<void>}
40
- */
41
- const checkAndProcessIfUserAuthenticated = async () => {
42
- const user = User.getInstance();
43
- // Check if user is valid
44
- if (!user.isValid()) {
45
- return;
46
- }
47
-
48
- let authStatus;
49
- try {
50
- const checkAuthStatusService = new CheckAuthStatusService();
51
- authStatus = await checkAuthStatusService.checkAuthStatus(true);
52
- } catch (error) {
53
- console.error(error);
54
- // Service is unavailable, do nothing...
55
- Log.write({ level: "debug", message: "The Service is unavailable to check if the user is authenticated" });
56
- return;
57
- }
58
-
59
- if (authStatus.isAuthenticated) {
60
- PostLoginService.exec();
61
- } else {
62
- PostLogoutService.exec();
63
- }
64
27
  };
65
28
 
66
29
  main();
@@ -11,27 +11,27 @@
11
11
  * @link https://www.passbolt.com Passbolt(tm)
12
12
  * @since 5.5.0
13
13
  */
14
- const browser = require("webextension-polyfill");
14
+ const browserPolyfill = require("webextension-polyfill");
15
15
  const ScriptingPolyfill = require("./../../../all/common/polyfill/scriptingPolyfill");
16
16
  const SessionStoragePolyfill = require("./../../../all/common/polyfill/sessionStoragePolyfill");
17
17
  const OnInstalledReasonPolyfill = require("./onInstalledReasonPolyfill");
18
18
 
19
19
  // mv3 scripting API for mv2
20
- if (!browser.scripting) {
21
- browser.scripting = new ScriptingPolyfill(browser);
20
+ if (!browserPolyfill.scripting) {
21
+ browserPolyfill.scripting = new ScriptingPolyfill(browserPolyfill);
22
22
  }
23
23
  // mv3 session storage API polyfill
24
- if (!browser.storage.session) {
25
- browser.storage.session = new SessionStoragePolyfill();
24
+ if (!browserPolyfill.storage.session) {
25
+ browserPolyfill.storage.session = new SessionStoragePolyfill();
26
26
  }
27
27
  // mv3 action API polyfill for mv2
28
- if (!browser.action) {
29
- browser.action = browser.browserAction;
28
+ if (!browserPolyfill.action) {
29
+ browserPolyfill.action = browserPolyfill.browserAction;
30
30
  }
31
31
 
32
32
  // OnInstaledReason polyfill for Safari
33
- if (!browser.runtime.OnInstalledReason) {
34
- OnInstalledReasonPolyfill(browser.runtime);
33
+ if (!browserPolyfill.runtime.OnInstalledReason) {
34
+ OnInstalledReasonPolyfill(browserPolyfill.runtime);
35
35
  }
36
36
 
37
- module.exports = browser;
37
+ module.exports = browserPolyfill;
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 2,
3
3
  "name": "Passbolt - password manager",
4
4
  "short_name": "passbolt",
5
- "version": "5.13.0",
5
+ "version": "5.14.2",
6
6
  "description": "Passbolt extension for the open source password manager.",
7
7
  "default_locale": "en",
8
8
  "icons": {
@@ -20,7 +20,8 @@ import "./mocks/mockCryptoKey";
20
20
  import "./matchers/extendExpect";
21
21
  import MockNavigatorLocks from "./mocks/mockNavigatorLocks";
22
22
  import MockNavigatorClipboard from "./mocks/mockNavigatorClipboard";
23
- import OrganizationSettingsModel from "../src/all/background_page/model/organizationSettings/organizationSettingsModel";
23
+ import SiteSettingsRuntimeCache from "../src/all/background_page/service/siteSettings/siteSettingsRuntimeCache";
24
+ import SiteSettingsLocalStorage from "../src/all/background_page/service/local_storage/siteSettingsLocalStorage";
24
25
  import { Config } from "../src/all/background_page/model/config";
25
26
  import Keyring from "../src/all/background_page/model/keyring";
26
27
  import ResourceLocalStorage from "../src/all/background_page/service/local_storage/resourceLocalStorage";
@@ -71,7 +72,8 @@ beforeEach(async () => {
71
72
  // Flush the session storage
72
73
  await browser.storage.session.clear();
73
74
  // Flush caches
74
- OrganizationSettingsModel.flushCache();
75
+ SiteSettingsRuntimeCache.flushAll();
76
+ SiteSettingsLocalStorage._runtimeCachedData = {};
75
77
  ResourceLocalStorage.flush();
76
78
  FolderLocalStorage.flush();
77
79
  GroupLocalStorage._runtimeCachedData = {};
@@ -1,69 +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
-
15
- import AccountEntity from "../../model/entity/account/accountEntity";
16
- import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
17
- import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
18
- import GetOrFindGroupsUsersController from "./getOrFindGroupsUsersController";
19
- import GroupsUsersCollection from "passbolt-styleguide/src/shared/models/entity/groupUser/groupsUsersCollection";
20
- import { defaultGroupsDtos } from "passbolt-styleguide/src/shared/models/entity/group/groupsCollection.test.data";
21
-
22
- beforeEach(() => {
23
- jest.clearAllMocks();
24
- });
25
-
26
- describe("GetOrFindGroupsUsersController", () => {
27
- describe("::exec", () => {
28
- it("Should retrieve the members of the requested group.", async () => {
29
- expect.assertions(3);
30
-
31
- const account = new AccountEntity(defaultAccountDto());
32
- const groupsDto = defaultGroupsDtos(1, { withGroupsUsers: 3 });
33
- const targetGroup = groupsDto[0];
34
- const groupsUsersCollection = new GroupsUsersCollection(targetGroup.groups_users);
35
- const controller = new GetOrFindGroupsUsersController(null, null, defaultApiClientOptions(), account);
36
- jest
37
- .spyOn(controller.getOrFindGroupsUsersService, "getOrFindByGroupId")
38
- .mockImplementation(() => groupsUsersCollection);
39
-
40
- const result = await controller.exec(targetGroup.id);
41
-
42
- expect(result).toBeInstanceOf(GroupsUsersCollection);
43
- expect(result).toStrictEqual(groupsUsersCollection);
44
- expect(controller.getOrFindGroupsUsersService.getOrFindByGroupId).toHaveBeenCalledWith(targetGroup.id);
45
- });
46
-
47
- it("Should let error been thrown from the service if any.", async () => {
48
- expect.assertions(1);
49
-
50
- const account = new AccountEntity(defaultAccountDto());
51
- const controller = new GetOrFindGroupsUsersController(null, null, defaultApiClientOptions(), account);
52
- const groupId = defaultGroupsDtos()[0].id;
53
- jest.spyOn(controller.getOrFindGroupsUsersService, "getOrFindByGroupId").mockImplementation(() => {
54
- throw new Error("Something went wrong!");
55
- });
56
-
57
- await expect(() => controller.exec(groupId)).rejects.toThrow();
58
- });
59
-
60
- it("Should assert its parameter.", async () => {
61
- expect.assertions(1);
62
-
63
- const account = new AccountEntity(defaultAccountDto());
64
- const controller = new GetOrFindGroupsUsersController(null, null, defaultApiClientOptions(), account);
65
-
66
- await expect(() => controller.exec("not-a-uuid")).rejects.toThrow("The given parameter is not a valid UUID");
67
- });
68
- });
69
- });
@@ -1,55 +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 OrganizationSettingsModel from "../../model/organizationSettings/organizationSettingsModel";
16
-
17
- class GetOrganizationSettingsController {
18
- /**
19
- * GetOrganizationSettingsController constructor
20
- * @param {Worker} worker
21
- * @param {string} requestId uuid
22
- * @param {ApiClientOptions} apiClientOptions
23
- */
24
- constructor(worker, requestId, apiClientOptions) {
25
- this.worker = worker;
26
- this.requestId = requestId;
27
- this.organizationSettingsModel = new OrganizationSettingsModel(apiClientOptions);
28
- }
29
-
30
- /**
31
- * Wrapper of exec function to run it with worker.
32
- *
33
- * @return {Promise<void>}
34
- */
35
- async _exec() {
36
- try {
37
- const result = await this.exec();
38
- this.worker.port.emit(this.requestId, "SUCCESS", result);
39
- } catch (error) {
40
- console.error(error);
41
- this.worker.port.emit(this.requestId, "ERROR", error);
42
- }
43
- }
44
-
45
- /**
46
- * Get the organization settings.
47
- *
48
- * @return {Promise<OrganizationSettingsEntity>}
49
- */
50
- async exec() {
51
- return this.organizationSettingsModel.getOrFind(true);
52
- }
53
- }
54
-
55
- export default GetOrganizationSettingsController;