passbolt-browser-extension 4.8.2 → 4.9.0

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 (229) hide show
  1. package/CHANGELOG.md +86 -1
  2. package/RELEASE_NOTES.md +89 -7
  3. package/package.json +5 -4
  4. package/src/all/background_page/controller/account/updatePrivateKeyController.test.js +1 -1
  5. package/src/all/background_page/controller/account/verifyAccountPassphraseController.test.js +1 -1
  6. package/src/all/background_page/controller/accountRecovery/accountRecoveryGetRequestController.test.js +1 -1
  7. package/src/all/background_page/controller/accountRecovery/accountRecoveryGetUserRequestsController.test.js +1 -1
  8. package/src/all/background_page/controller/accountRecovery/accountRecoverySaveOrganizationPolicyController.test.js +2 -2
  9. package/src/all/background_page/controller/accountRecovery/accountRecoverySaveUserSettingController.test.js +2 -2
  10. package/src/all/background_page/controller/accountRecovery/accountRecoveryValidateOrganizationPrivateKeyController.test.js +1 -1
  11. package/src/all/background_page/controller/accountRecovery/accountRecoveryValidatePublicKeyController.test.js +1 -1
  12. package/src/all/background_page/controller/accountRecovery/recoverAccountController.test.js +2 -2
  13. package/src/all/background_page/controller/accountRecovery/reviewRequestController.test.js +2 -2
  14. package/src/all/background_page/controller/auth/authVerifyServerKeyController.js +12 -0
  15. package/src/all/background_page/controller/auth/authVerifyServerKeyController.test.js +1 -1
  16. package/src/all/background_page/controller/auth/generateSsoKitController.test.js +1 -1
  17. package/src/all/background_page/controller/autofill/AutofillController.test.js +1 -1
  18. package/src/all/background_page/controller/crypto/checkPassphraseController.test.js +1 -1
  19. package/src/all/background_page/controller/crypto/downloadUserPrivateKeyController.test.js +1 -1
  20. package/src/all/background_page/controller/crypto/downloadUserPublicKeyController.test.js +1 -1
  21. package/src/all/background_page/controller/crypto/getKeyInfoController.test.js +1 -1
  22. package/src/all/background_page/controller/crypto/getUserKeyInfoController.test.js +1 -1
  23. package/src/all/background_page/controller/crypto/getUserPrivateKeyController.test.js +1 -1
  24. package/src/all/background_page/controller/crypto/validatePrivateGpgKeyRecoverController.test.js +1 -1
  25. package/src/all/background_page/controller/crypto/validatePrivateGpgKeySetupController.test.js +1 -1
  26. package/src/all/background_page/controller/exportAccount/exportDesktopAccountController.test.js +1 -1
  27. package/src/all/background_page/controller/group/findGroupsCurrentUserIsMemberOfController.js +57 -0
  28. package/src/all/background_page/controller/group/findGroupsCurrentUserIsMemberOfController.test.js +54 -0
  29. package/src/all/background_page/controller/group/groupUpdateController.test.data.js +5 -5
  30. package/src/all/background_page/controller/group/groupUpdateController.test.js +4 -4
  31. package/src/all/background_page/controller/move/moveResourcesController.test.js +1 -1
  32. package/src/all/background_page/controller/recover/importRecoverPrivateKeyController.test.js +1 -1
  33. package/src/all/background_page/controller/recover/requestAccountRecoveryController.test.js +1 -1
  34. package/src/all/background_page/controller/resource/findResourceController.test.js +77 -0
  35. package/src/all/background_page/controller/resource/findResourceDetailsController.js +62 -0
  36. package/src/all/background_page/controller/secret/secretDecryptController.test.js +1 -1
  37. package/src/all/background_page/controller/setup/importSetupPrivateKeyController.test.js +1 -1
  38. package/src/all/background_page/controller/setup/setSetupAccountRecoveryUserSettingController.test.js +4 -2
  39. package/src/all/background_page/controller/setup/signInSetupController.test.js +1 -1
  40. package/src/all/background_page/controller/setup/verifyImportedKeyPassphraseController.test.js +1 -1
  41. package/src/all/background_page/controller/share/searchUsersAndGroupsController.js +58 -0
  42. package/src/all/background_page/controller/share/searchUsersAndGroupsController.test.js +73 -0
  43. package/src/all/background_page/controller/share/shareFoldersController.test.js +1 -1
  44. package/src/all/background_page/controller/share/shareResourcesController.test.data.js +1 -1
  45. package/src/all/background_page/controller/share/shareResourcesController.test.js +1 -1
  46. package/src/all/background_page/controller/sso/ssoAuthenticationController.js +14 -1
  47. package/src/all/background_page/controller/sso/ssoAuthenticationController.test.js +6 -2
  48. package/src/all/background_page/event/authEvents.js +6 -0
  49. package/src/all/background_page/event/groupEvents.js +13 -0
  50. package/src/all/background_page/event/resourceEvents.js +13 -0
  51. package/src/all/background_page/event/shareEvents.js +13 -0
  52. package/src/all/background_page/index.js +18 -2
  53. package/src/all/background_page/model/entity/account/abstractAccountEntity.js +3 -6
  54. package/src/all/background_page/model/entity/account/abstractAccountEntity.test.data.js +47 -0
  55. package/src/all/background_page/model/entity/account/abstractAccountEntity.test.js +147 -0
  56. package/src/all/background_page/model/entity/account/accountAccountRecoveryEntity.test.data.js +2 -2
  57. package/src/all/background_page/model/entity/account/accountEntity.js +3 -6
  58. package/src/all/background_page/model/entity/account/accountEntity.test.data.js +1 -1
  59. package/src/all/background_page/model/entity/account/accountEntity.test.js +125 -1
  60. package/src/all/background_page/model/entity/account/accountRecoverEntity.test.data.js +1 -1
  61. package/src/all/background_page/model/entity/account/accountSetupEntity.test.data.js +1 -1
  62. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryOrganizationPolicyEntity.js +3 -6
  63. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryOrganizationPolicyEntity.test.data.js +2 -2
  64. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryOrganizationPolicyEntity.test.js +52 -65
  65. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryOrganizationPublicKeyEntity.js +3 -6
  66. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryOrganizationPublicKeyEntity.test.data.js +1 -1
  67. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryOrganizationPublicKeyEntity.test.js +55 -73
  68. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryPrivateKeyEntity.js +1 -1
  69. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryPrivateKeyEntity.test.js +1 -1
  70. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryPrivateKeyPasswordDecryptedDataEntity.test.data.js +1 -1
  71. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryPrivateKeyPasswordsCollection.js +1 -1
  72. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryRequestEntity.js +3 -6
  73. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryRequestEntity.test.js +76 -44
  74. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryResponseEntity.test.js +2 -2
  75. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryUserSettingEntity.js +1 -1
  76. package/src/all/background_page/model/entity/accountRecovery/pendingAccountRecoveryRequestEntity.js +4 -4
  77. package/src/all/background_page/model/entity/accountRecovery/pendingAccountRecoveryRequestEntity.test.js +5 -5
  78. package/src/all/background_page/model/entity/auth/auth.test.data.js +1 -1
  79. package/src/all/background_page/model/entity/avatar/avatarEntity.js +27 -30
  80. package/src/all/background_page/model/entity/avatar/avatarEntity.test.js +40 -96
  81. package/src/all/background_page/model/entity/avatar/avatarUrlEntity.js +95 -0
  82. package/{test/mocks/mockCrypto.js → src/all/background_page/model/entity/avatar/avatarUrlEntity.test.data.js} +11 -9
  83. package/src/all/background_page/model/entity/avatar/avatarUrlEntity.test.js +58 -0
  84. package/src/all/background_page/model/entity/comment/commentEntity.js +3 -6
  85. package/src/all/background_page/model/entity/comment/commentEntity.test.js +64 -43
  86. package/src/all/background_page/model/entity/export/exportResourcesFileEntity.js +9 -21
  87. package/src/all/background_page/model/entity/export/exportResourcesFileEntity.test.data.js +65 -0
  88. package/src/all/background_page/model/entity/export/exportResourcesFileEntity.test.js +133 -0
  89. package/src/all/background_page/model/entity/favorite/favoriteEntity.js +2 -14
  90. package/src/all/background_page/model/entity/favorite/favoriteEntity.test.js +28 -84
  91. package/src/all/background_page/model/entity/folder/folderEntity.js +18 -19
  92. package/src/all/background_page/model/entity/folder/folderEntity.test.js +86 -211
  93. package/src/all/background_page/model/entity/folder/foldersCollection.js +35 -45
  94. package/src/all/background_page/model/entity/folder/foldersCollection.test.js +43 -0
  95. package/src/all/background_page/model/entity/gpgkey/external/externalGpgKeyEntity.js +4 -7
  96. package/src/all/background_page/model/entity/gpgkey/external/externalGpgKeyEntity.test.data.js +1 -1
  97. package/src/all/background_page/model/entity/gpgkey/external/externalGpgKeyEntity.test.fixtures.js +1 -1
  98. package/src/all/background_page/model/entity/gpgkey/external/externalGpgKeyEntity.test.js +109 -32
  99. package/src/all/background_page/model/entity/gpgkey/gpgkeyEntity.js +10 -30
  100. package/src/all/background_page/model/entity/gpgkey/gpgkeyEntity.test.fixtures.js +1 -1
  101. package/src/all/background_page/model/entity/gpgkey/gpgkeyEntity.test.js +102 -18
  102. package/src/all/background_page/model/entity/gpgkey/privateGpgkeyEntity.test.js +1 -1
  103. package/src/all/background_page/model/entity/group/groupEntity.js +9 -50
  104. package/src/all/background_page/model/entity/group/groupEntity.test.js +117 -41
  105. package/src/all/background_page/model/entity/group/groupsCollection.js +55 -134
  106. package/src/all/background_page/model/entity/group/groupsCollection.test.data.js +35 -0
  107. package/src/all/background_page/model/entity/group/groupsCollection.test.js +196 -115
  108. package/src/all/background_page/model/entity/groupUser/groupUserEntity.js +5 -17
  109. package/src/all/background_page/model/entity/groupUser/groupUserEntity.test.js +48 -8
  110. package/src/all/background_page/model/entity/groupUser/groupsUsersCollection.js +4 -41
  111. package/src/all/background_page/model/entity/groupUser/groupsUsersCollection.test.js +73 -5
  112. package/src/all/background_page/model/entity/import/importResourcesFileEntity.js +6 -11
  113. package/src/all/background_page/model/entity/import/importResourcesFileEntity.test.js +79 -45
  114. package/src/all/background_page/model/entity/organizationSettings/organizationSettingsEntity.js +2 -5
  115. package/src/all/background_page/model/entity/organizationSettings/organizationSettingsEntity.test.js +64 -2
  116. package/src/all/background_page/model/entity/passwordExpiry/passwordExpiryResourceEntity.js +3 -6
  117. package/src/all/background_page/model/entity/passwordExpiry/passwordExpiryResourceEntity.test.js +43 -58
  118. package/src/all/background_page/model/entity/permission/permissionEntity.js +6 -11
  119. package/src/all/background_page/model/entity/permission/permissionEntity.test.js +216 -170
  120. package/src/all/background_page/model/entity/permission/permissionsCollection.js +137 -169
  121. package/src/all/background_page/model/entity/permission/permissionsCollection.test.js +474 -524
  122. package/src/all/background_page/model/entity/profile/profileEntity.js +6 -11
  123. package/src/all/background_page/model/entity/profile/profileEntity.test.js +48 -130
  124. package/src/all/background_page/model/entity/resource/resourceEntity.js +58 -64
  125. package/src/all/background_page/model/entity/resource/resourceEntity.test.js +101 -6
  126. package/src/all/background_page/model/entity/resource/resourcesCollection.js +45 -109
  127. package/src/all/background_page/model/entity/resource/resourcesCollection.test.data.js +16 -0
  128. package/src/all/background_page/model/entity/resource/resourcesCollection.test.js +226 -237
  129. package/src/all/background_page/model/entity/resourceType/resourceTypeEntity.js +3 -6
  130. package/src/all/background_page/model/entity/resourceType/resourceTypeEntity.test.js +48 -21
  131. package/src/all/background_page/model/entity/secret/resource/resourceSecretsCollection.js +68 -111
  132. package/src/all/background_page/model/entity/secret/resource/resourceSecretsCollection.test.data.js +31 -0
  133. package/src/all/background_page/model/entity/secret/resource/resourceSecretsCollection.test.js +162 -0
  134. package/src/all/background_page/model/entity/secret/secretEntity.js +19 -15
  135. package/src/all/background_page/model/entity/secret/secretEntity.test.data.js +13 -11
  136. package/src/all/background_page/model/entity/secret/secretEntity.test.js +68 -73
  137. package/src/all/background_page/model/entity/tag/tagCollection.test.data.js +30 -0
  138. package/src/all/background_page/model/entity/tag/tagEntity.js +27 -18
  139. package/src/all/background_page/model/entity/tag/tagEntity.test.data.js +11 -11
  140. package/src/all/background_page/model/entity/tag/tagEntity.test.js +63 -78
  141. package/src/all/background_page/model/entity/tag/tagsCollection.js +30 -98
  142. package/src/all/background_page/model/entity/tag/tagsCollection.test.js +91 -128
  143. package/src/all/background_page/model/entity/user/userEntity.js +42 -79
  144. package/src/all/background_page/model/entity/user/userEntity.test.js +240 -150
  145. package/src/all/background_page/model/entity/user/usersCollection.js +49 -140
  146. package/src/all/background_page/model/entity/user/usersCollection.test.js +199 -105
  147. package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultCollection.js +104 -0
  148. package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultCollestion.test.js +94 -0
  149. package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultEntity.js +82 -0
  150. package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultEntity.test.data.js +40 -0
  151. package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultEntity.test.js +86 -0
  152. package/src/all/background_page/model/entity/worker/workerEntity.js +2 -5
  153. package/src/all/background_page/model/entity/worker/workerEntity.test.js +34 -38
  154. package/src/all/background_page/model/group/groupModel.js +8 -14
  155. package/src/all/background_page/model/group/groupModel.test.js +175 -0
  156. package/src/all/background_page/model/resource/resourceModel.js +12 -0
  157. package/src/all/background_page/model/resourceType/resourceTypeModel.js +2 -2
  158. package/src/all/background_page/model/share/shareModel.js +18 -0
  159. package/src/all/background_page/model/share/shareModel.test.js +61 -0
  160. package/src/all/background_page/model/user/userModel.js +16 -28
  161. package/src/all/background_page/model/user/userModel.test.js +261 -0
  162. package/src/all/background_page/service/account/getDecryptedUserPrivateKeyService.test.js +1 -1
  163. package/src/all/background_page/service/accountRecovery/buildApprovedAccountRecoveryUserSettingEntityService.service.test.js +1 -1
  164. package/src/all/background_page/service/accountRecovery/decryptPrivateKeyPasswordDataService.js +1 -0
  165. package/src/all/background_page/service/accountRecovery/decryptPrivateKeyPasswordDataService.test.js +2 -2
  166. package/src/all/background_page/service/accountRecovery/decryptResponseDataService.test.js +2 -2
  167. package/src/all/background_page/service/accountRecovery/validateOrganizationPublicKeyService.test.data.js +1 -1
  168. package/src/all/background_page/service/accountRecovery/validateOrganizationPublicKeyService.test.js +1 -1
  169. package/src/all/background_page/service/api/accountRecovery/validateAccountRecoveryOrganizationPrivateKeyService.test.data.js +1 -1
  170. package/src/all/background_page/service/api/resource/resourceLocalStorageUpdateService.js +10 -2
  171. package/src/all/background_page/service/api/resource/resourceLocalStorageUpdateService.test.js +15 -0
  172. package/src/all/background_page/service/api/share/shareService.js +40 -0
  173. package/src/all/background_page/service/api/share/shareService.test.js +84 -0
  174. package/src/all/background_page/service/auth/authVerifyServerChallengeService.test.js +1 -1
  175. package/src/all/background_page/service/crypto/compareGpgKeyService.test.js +1 -1
  176. package/src/all/background_page/service/crypto/decryptMessageService.test.js +1 -1
  177. package/src/all/background_page/service/crypto/decryptPrivateKeyService.test.js +1 -1
  178. package/src/all/background_page/service/crypto/encryptMessageService.test.js +1 -1
  179. package/src/all/background_page/service/crypto/encryptPrivateKeyService.test.js +1 -1
  180. package/src/all/background_page/service/crypto/getGpgKeyInfoService.test.data.js +1 -1
  181. package/src/all/background_page/service/crypto/getGpgKeyInfoService.test.js +1 -1
  182. package/src/all/background_page/service/crypto/revokeGpgKeyService.test.js +1 -1
  183. package/src/all/background_page/service/crypto/signGpgKeyService.test.js +1 -1
  184. package/src/all/background_page/service/crypto/signMessageService.test.js +1 -1
  185. package/src/all/background_page/service/crypto/verifyGpgKeyService.test.js +1 -1
  186. package/src/all/background_page/service/crypto/verifyMessageSign.test.data.js +1 -1
  187. package/src/all/background_page/service/crypto/verifyMessageSign.test.js +1 -1
  188. package/src/all/background_page/service/extension/onStartUpService.js +47 -0
  189. package/src/all/background_page/service/extension/onStartUpService.test.js +59 -0
  190. package/src/all/background_page/service/local_storage/AccountLocalStorage.test.js +2 -2
  191. package/src/all/background_page/service/local_storage/resourceLocalStorage.js +63 -67
  192. package/src/all/background_page/service/local_storage/resourceLocalStorage.test.js +473 -0
  193. package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.js +1 -1
  194. package/src/all/background_page/service/passphrase/getPassphraseService.test.js +1 -1
  195. package/src/all/background_page/service/secret/decryptAndParseResourceSecretService.test.js +1 -1
  196. package/src/all/background_page/service/systemRequirementService/systemRequirementService.js +0 -4
  197. package/src/all/background_page/service/toolbar/toolbarService.js +64 -34
  198. package/src/all/background_page/service/toolbar/toolbarService.test.js +29 -7
  199. package/src/all/background_page/utils/assertions.js +13 -1
  200. package/src/all/background_page/utils/assertions.test.js +1 -1
  201. package/src/all/background_page/utils/openpgp/openpgpAssertions.test.js +1 -1
  202. package/src/all/locales/ko-KR/common.json +4 -4
  203. package/src/all/locales/pl-PL/common.json +3 -3
  204. package/src/all/webAccessibleResources/js/app/QuickAccess.js +4 -0
  205. package/src/all/webAccessibleResources/js/lib/port.js +12 -7
  206. package/src/all/webAccessibleResources/js/lib/port.test.js +5 -5
  207. package/src/chrome/manifest.json +1 -1
  208. package/src/chrome-mv3/index.js +18 -2
  209. package/src/chrome-mv3/manifest.json +2 -1
  210. package/src/firefox/manifest.json +1 -1
  211. package/src/safari/manifest.json +1 -1
  212. package/test/jest.setup.js +3 -1
  213. package/test/matchers/extendExpect.js +5 -1
  214. package/test/matchers/toThrowCollectionValidationError.js +49 -0
  215. package/test/matchers/toThrowEntityValidationError.js +58 -0
  216. package/test/matchers/toThrowEntityValidationErrorOnProperties.js +3 -0
  217. package/test/mocks/mockExtension.js +1 -1
  218. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryPrivateKeyEntity.test.data.js +0 -76
  219. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryPrivateKeyPasswordEntity.test.data.js +0 -75
  220. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryRequestEntity.test.data.js +0 -102
  221. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryResponseEntity.test.data.js +0 -92
  222. package/src/all/background_page/model/entity/accountRecovery/accountRecoveryUserSettingEntity.test.data.js +0 -45
  223. package/src/all/background_page/model/entity/group/groupEntity.test.data.js +0 -42
  224. package/src/all/background_page/model/entity/group/groupEntity.test.fixtures.js +0 -88
  225. package/src/all/background_page/model/entity/groupUser/groupUserEntity.test.fixtures.js +0 -34
  226. package/src/all/background_page/model/entity/groupUser/groupUsersEntity.test.data.js +0 -38
  227. package/src/all/background_page/model/entity/user/userEntity.test.fixtures.js +0 -100
  228. package/src/all/background_page/model/entity/user/usersCollection.test.fixtures.js +0 -80
  229. package/test/fixtures/pgpKeys/keys.js +0 -424
package/CHANGELOG.md CHANGED
@@ -3,6 +3,90 @@ All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
5
  ## [Unreleased]
6
+ ## [4.9.0] - 2024-07-22
7
+ ### Added
8
+ - PB-33439 As a user I want to hide entropy on passphrases passwords
9
+ - PB-33441 As a signed-in user I can search on folder metadata
10
+ - PB-33687 As a user navigating to a website with shadow-dom I can still autofill my credentials
11
+ - PB-33730 Link admin page with troubleshooting documentation
12
+ - PB-33847 As an administrator I can configure the LDAP integration to suspend deleted users
13
+ - PB-33853 As a signed-in user I should see location in grid
14
+ - PB-33857 Get folder hierarchy from resourceWorkspaceContext
15
+
16
+ ### Improved
17
+ - PB-14173 As Logged out user, I shouldn't be able to view a previously viewed password
18
+ - PB-33608 As a signed in user browsing the web I should see the suggested resources count displayed updated almost instantly
19
+ - PB-33824 As a user I should not see other dialog open except the session expired
20
+ - PB-33880 As a user I should see tooltip always visible in any position
21
+ - PB-33919 As a user searching for users to share a resource/folder with I can see the user full name and username of proposed users
22
+ - PB-33920 As a user searching for users to share a resource/folder with I can see information icon next to a very long user full name
23
+
24
+ ### Security
25
+ - PB-33691 Upgrade web-ext library to v8.0.0
26
+ - PB-33746 Update NPM dependency Braces
27
+ - PB-33825 Upgrade vulnerable library ws
28
+
29
+ ### Fixed
30
+ - PB-23294 As LU I should not see a comment overlapping
31
+ - PB-25246 As signed-in user I should not see a blank page when I delete the parent folder of the folder I view the details
32
+ - PB-33426 As a user I should see the passbolt icon turns gray on a fresh start from chrome MV3
33
+ - PB-33436 As a user when an error happen during authentication the button try again should reload the tab
34
+ - PB-33438 Fix double tab opening after successful SSO sign-in with detached quickaccess
35
+ - PB-33614 As a user I want to have the url from the active tab when using SSO from quickaccess
36
+ - PB-33638 Fix hiding entropy behind tooltip in the quickaccess
37
+ - PB-33742 As a signed-in user I should see the toolbar icon updated when a tab is selected
38
+ - PB-33743 Fix padding icon on account recovery sidebar in the user workspace
39
+ - PB-33750 Fix passphrase entropy computation
40
+ - PB-33751 Fix avatar in activity section
41
+ - PB-33802 Fix icon attention required in the resource grid
42
+ - PB-33803 Fix button size and alignment for small screen on the resource workspace
43
+ - PB-33829 As a user I should not update the toolbar icon if the user is not authenticated
44
+ - PB-33833 As a user I should not see a grid size issue after a browser update
45
+ - PB-33922 Fix broken documentation links and unnecessary redirections
46
+
47
+ ### Maintenance
48
+ - PB-32891 Entities validating null in anyOf should use nullable schema property
49
+ - PB-32981 Use a callback to destroy content script from a port with invalid context
50
+ - PB-33173 Add minimum version in the manifest v3 of chrome
51
+ - PB-33179 - Reuse testing pgpkeys assets served by styleguide and remove browser extension duplicate
52
+ - PB-33188 Reuse testing account recovery assets served by styleguide and remove browser extension duplicate
53
+ - PB-33191 Cover GroupUser entity with test and ensure non regression on validation changes
54
+ - PB-33192 - When facing a domain issues due to ORK rotation, I should see the domain using console.debug
55
+ - PB-33215 Add optional ignoreInvalid parameter to group entity in order to ignore associated groups users which could be invalid
56
+ - PB-33216 Add optional ignoreInvalid parameter to user entity in order to ignore associated groups users which could be invalid
57
+ - PB-33221 Migrate GroupsCollections to v2 and cover group model sanitization with tests
58
+ - PB-33222 Ensure groups users are sanitized from groups users collection associated to a group using ignore strategy from collection v2
59
+ - PB-33226 Ensure groups users are sanitized from groups users collection associated to a users using ignore strategy from collection v2
60
+ - PB-33227 - Migrate UsersCollection to v2 and cover user model sanitization with tests
61
+ - PB-33230 - Ensure performance creating groups collection with large dataset remains effective
62
+ - PB-33236 - Ensure performance creating users collection with large dataset remains effective
63
+ - PB-33264 Validate entities schemas with anyOf null option
64
+ - PB-33267 - Validate PermissionEntity schema
65
+ - PB-33300 - Validate SecretEntity schema
66
+ - PB-33302 - Cover FavoriteEntity schema
67
+ - PB-33303 - Cover TagEntity schema
68
+ - PB-33306 - Switch ResourcesSecretsCollection to EntityV2Collection
69
+ - PB-33319 Switch TagsCollection to EntityV2Collection
70
+ - PB-33320 Switch PermissionsCollection to EntityV2Collection
71
+ - PB-33327 Switch ResourcesCollection to EntityV2Collection
72
+ - PB-33447 Ensure EntityV2Collection is treating items at the abstract constructor level
73
+ - PB-33454 - Ensure collection v2 schema is validated at the abstract class level
74
+ - PB-33459 Ensure resource entity and associated entities schemas are validated at an abstract class level - EntityV2 migration
75
+ - PB-33533 Collections and entities schemas of folders and associated should be cached, migrate to v2
76
+ - PB-33606 As an administrator, when the error is not related, I should not see "Could not verify the server key"
77
+ - PB-33615 As a user browsing the application, I should not refresh users and groups local storages when I do not need these information
78
+ - PB-33640 Performance: filter users.json by is-my-buddy to get only users I know
79
+ - PB-33648 Performance: filter group.json by is-my-buddy to get only groups I know
80
+ - PB-33796 As a signed in user when I navigate to the resource workspace, my browser extension does not load the users and the groups data
81
+ - PB-33797 As a signed in user when I navigate to the resource workspace, my browser extension only loads the groups data I am member of
82
+ - PB-33798 As a signed in user when I open the information section of the sidebar, I can see all the information
83
+ - PB-33799 As a signed in user when I display the share dialog, the autocomplete research is performed on the API instead of the local storage
84
+ - PB-33815 Selecting a group should not trigger a refresh of the local storage of the folders and resources
85
+ - PB-33816 - fix lint
86
+ - PB-33816 As a signed-in user I should see in the information section the location icon folder shared if relevant
87
+ - PB-33843 As a user I should retrieve the GPG keys of other users only when required and necessary
88
+ - PB-33921 Avoid gpgkeys sync when loading the autocomplete component
89
+
6
90
  ## [4.8.2] - 2024-06-13
7
91
  ### Improved
8
92
  - PB-33686 As a user I should be signed out after browser update
@@ -1631,7 +1715,8 @@ self registration settings option in the left-side bar
1631
1715
  - AP: User with plugin installed
1632
1716
  - LU: Logged in user
1633
1717
 
1634
- [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.8.2...HEAD
1718
+ [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.0...HEAD
1719
+ [4.9.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.8.2...4.9.0
1635
1720
  [4.8.2]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.8.1...4.8.2
1636
1721
  [4.8.1]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.8.0...4.8.1
1637
1722
  [4.8.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.7.8...4.8.0
package/RELEASE_NOTES.md CHANGED
@@ -1,13 +1,95 @@
1
- Song: https://www.youtube.com/watch?v=OypXGyN6OZw
1
+ Song: https://www.youtube.com/watch?v=zUzd9KyIDrM
2
2
 
3
- Passbolt v4.8.2 is a maintenance update that addresses issues related to MV3.
3
+ Passbolt v4.9.0 is a significant update that addresses long-standing user requests, enhances performance, and adds a new administrative tool to manage your LDAP/AD integration with confidence.
4
4
 
5
- We hope these updates enhance your experience with Passbolt. Your feedback is always valuable to us.
5
+ In this release, a highly requested feature was introduced where the passwords workspace now displays the location of resources. This addition provides extra meta information to help users efficiently identify passwords and where they are located. Additionally, the search functionality has been improved to use resource locations as meta information. Users can now retrieve a resource by using the names of its parent folders, which can greatly simplify the process of finding passwords depending on your organisation's classification system.
6
+
7
+ The team has also focused on various performance improvements to meet the growing needs of organisations managing an increasing number of passwords. These enhancements also prepare the way for the upcoming v5.0.0, which will support more content types and include an additional encryption layer. Both the API and the browser extension have been optimised, resulting in a 50% improvement in retrieving and treating collections of resources, according to our benchmarks.
8
+
9
+ Moreover, administrators managing their users with LDAP will benefit from a new feature designed to protect against unforeseen deletion of users. This new option allows administrators to choose a suspend strategy, which locks a user's access to Passbolt without deleting any material, providing an extra layer of security.
10
+
11
+ We extend our gratitude to the community for their feedback and assistance in testing this release. We hope these updates enhance your experience with Passbolt and we look forward to hearing from you.
12
+
13
+ ## [4.9.0] - 2024-07-22
14
+ ### Added
15
+ - PB-33439 As a user I want to hide entropy on passphrases passwords
16
+ - PB-33441 As a signed-in user I can search on folder metadata
17
+ - PB-33687 As a user navigating to a website with shadow-dom I can still autofill my credentials
18
+ - PB-33730 Link admin page with troubleshooting documentation
19
+ - PB-33847 As an administrator I can configure the LDAP integration to suspend deleted users
20
+ - PB-33853 As a signed-in user I should see location in grid
21
+ - PB-33857 Get folder hierarchy from resourceWorkspaceContext
6
22
 
7
- ## [4.8.2] - 2024-06-13
8
23
  ### Improved
9
- - PB-33686 As a user I should be signed out after browser update
24
+ - PB-14173 As Logged out user, I shouldn't be able to view a previously viewed password
25
+ - PB-33608 As a signed in user browsing the web I should see the suggested resources count displayed updated almost instantly
26
+ - PB-33824 As a user I should not see other dialog open except the session expired
27
+ - PB-33880 As a user I should see tooltip always visible in any position
28
+ - PB-33919 As a user searching for users to share a resource/folder with I can see the user full name and username of proposed users
29
+ - PB-33920 As a user searching for users to share a resource/folder with I can see information icon next to a very long user full name
30
+
31
+ ### Security
32
+ - PB-33691 Upgrade web-ext library to v8.0.0
33
+ - PB-33746 Update NPM dependency Braces
34
+ - PB-33825 Upgrade vulnerable library ws
10
35
 
11
36
  ### Fixed
12
- - PB-33727 Fix session extension, service worker awaken and user instance storage not set
13
- - PB-33801 Remove active account cache in memory
37
+ - PB-23294 As LU I should not see a comment overlapping
38
+ - PB-25246 As signed-in user I should not see a blank page when I delete the parent folder of the folder I view the details
39
+ - PB-33426 As a user I should see the passbolt icon turns gray on a fresh start from chrome MV3
40
+ - PB-33436 As a user when an error happen during authentication the button try again should reload the tab
41
+ - PB-33438 Fix double tab opening after successful SSO sign-in with detached quickaccess
42
+ - PB-33614 As a user I want to have the url from the active tab when using SSO from quickaccess
43
+ - PB-33638 Fix hiding entropy behind tooltip in the quickaccess
44
+ - PB-33742 As a signed-in user I should see the toolbar icon updated when a tab is selected
45
+ - PB-33743 Fix padding icon on account recovery sidebar in the user workspace
46
+ - PB-33750 Fix passphrase entropy computation
47
+ - PB-33751 Fix avatar in activity section
48
+ - PB-33802 Fix icon attention required in the resource grid
49
+ - PB-33803 Fix button size and alignment for small screen on the resource workspace
50
+ - PB-33829 As a user I should not update the toolbar icon if the user is not authenticated
51
+ - PB-33833 As a user I should not see a grid size issue after a browser update
52
+ - PB-33922 Fix broken documentation links and unnecessary redirections
53
+
54
+ ### Maintenance
55
+ - PB-32891 Entities validating null in anyOf should use nullable schema property
56
+ - PB-32981 Use a callback to destroy content script from a port with invalid context
57
+ - PB-33173 Add minimum version in the manifest v3 of chrome
58
+ - PB-33179 - Reuse testing pgpkeys assets served by styleguide and remove browser extension duplicate
59
+ - PB-33188 Reuse testing account recovery assets served by styleguide and remove browser extension duplicate
60
+ - PB-33191 Cover GroupUser entity with test and ensure non regression on validation changes
61
+ - PB-33192 - When facing a domain issues due to ORK rotation, I should see the domain using console.debug
62
+ - PB-33215 Add optional ignoreInvalid parameter to group entity in order to ignore associated groups users which could be invalid
63
+ - PB-33216 Add optional ignoreInvalid parameter to user entity in order to ignore associated groups users which could be invalid
64
+ - PB-33221 Migrate GroupsCollections to v2 and cover group model sanitization with tests
65
+ - PB-33222 Ensure groups users are sanitized from groups users collection associated to a group using ignore strategy from collection v2
66
+ - PB-33226 Ensure groups users are sanitized from groups users collection associated to a users using ignore strategy from collection v2
67
+ - PB-33227 - Migrate UsersCollection to v2 and cover user model sanitization with tests
68
+ - PB-33230 - Ensure performance creating groups collection with large dataset remains effective
69
+ - PB-33236 - Ensure performance creating users collection with large dataset remains effective
70
+ - PB-33264 Validate entities schemas with anyOf null option
71
+ - PB-33267 - Validate PermissionEntity schema
72
+ - PB-33300 - Validate SecretEntity schema
73
+ - PB-33302 - Cover FavoriteEntity schema
74
+ - PB-33303 - Cover TagEntity schema
75
+ - PB-33306 - Switch ResourcesSecretsCollection to EntityV2Collection
76
+ - PB-33319 Switch TagsCollection to EntityV2Collection
77
+ - PB-33320 Switch PermissionsCollection to EntityV2Collection
78
+ - PB-33327 Switch ResourcesCollection to EntityV2Collection
79
+ - PB-33447 Ensure EntityV2Collection is treating items at the abstract constructor level
80
+ - PB-33454 - Ensure collection v2 schema is validated at the abstract class level
81
+ - PB-33459 Ensure resource entity and associated entities schemas are validated at an abstract class level - EntityV2 migration
82
+ - PB-33533 Collections and entities schemas of folders and associated should be cached, migrate to v2
83
+ - PB-33606 As an administrator, when the error is not related, I should not see "Could not verify the server key"
84
+ - PB-33615 As a user browsing the application, I should not refresh users and groups local storages when I do not need these information
85
+ - PB-33640 Performance: filter users.json by is-my-buddy to get only users I know
86
+ - PB-33648 Performance: filter group.json by is-my-buddy to get only groups I know
87
+ - PB-33796 As a signed in user when I navigate to the resource workspace, my browser extension does not load the users and the groups data
88
+ - PB-33797 As a signed in user when I navigate to the resource workspace, my browser extension only loads the groups data I am member of
89
+ - PB-33798 As a signed in user when I open the information section of the sidebar, I can see all the information
90
+ - PB-33799 As a signed in user when I display the share dialog, the autocomplete research is performed on the API instead of the local storage
91
+ - PB-33815 Selecting a group should not trigger a refresh of the local storage of the folders and resources
92
+ - PB-33816 - fix lint
93
+ - PB-33816 As a signed-in user I should see in the information section the location icon folder shared if relevant
94
+ - PB-33843 As a user I should retrieve the GPG keys of other users only when required and necessary
95
+ - PB-33921 Avoid gpgkeys sync when loading the autocomplete component
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "passbolt-browser-extension",
3
- "version": "4.8.2",
3
+ "version": "4.9.0",
4
4
  "license": "AGPL-3.0",
5
5
  "copyright": "Copyright 2022 Passbolt SA",
6
6
  "description": "Passbolt web extension for the open source password manager for teams",
@@ -21,7 +21,7 @@
21
21
  "locutus": "~2.0.9",
22
22
  "openpgp": "^5.11.1",
23
23
  "papaparse": "^5.2.0",
24
- "passbolt-styleguide": "^4.8.0",
24
+ "passbolt-styleguide": "^4.9.2",
25
25
  "react": "17.0.2",
26
26
  "react-dom": "17.0.2",
27
27
  "secrets-passbolt": "github:passbolt/secrets.js#v2.0.1",
@@ -59,7 +59,7 @@
59
59
  "lockfile-lint": "^4.12.1",
60
60
  "text-encoding-utf-8": "^1.0.2",
61
61
  "uuid": "^8.3.2",
62
- "web-ext": "^7.9.0",
62
+ "web-ext": "^8.0.0",
63
63
  "webpack": "^5.89.0",
64
64
  "webpack-cli": "^5.1.4"
65
65
  },
@@ -72,7 +72,8 @@
72
72
  "firefox-profile": "4.3.2",
73
73
  "crypto-browserify": {
74
74
  "browserify-sign": "4.2.2"
75
- }
75
+ },
76
+ "ws": "8.17.1"
76
77
  },
77
78
  "scripts": {
78
79
  "build": "npx grunt build",
@@ -14,7 +14,7 @@
14
14
  import "../../../../../test/mocks/mockSsoDataStorage";
15
15
  import "../../../../../test/mocks/mockCryptoKey";
16
16
  import {v4 as uuidv4} from "uuid";
17
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
17
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
18
18
  import MockExtension from "../../../../../test/mocks/mockExtension";
19
19
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
20
20
  import DecryptPrivateKeyService from "../../service/crypto/decryptPrivateKeyService";
@@ -15,7 +15,7 @@ import VerifyAccountPassphraseController from "./verifyAccountPassphraseControll
15
15
  import InvalidMasterPasswordError from "../../error/invalidMasterPasswordError";
16
16
  import AccountEntity from "../../model/entity/account/accountEntity";
17
17
  import {defaultAccountDto} from "../../model/entity/account/accountEntity.test.data";
18
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
18
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
19
19
 
20
20
  describe("VerifyAccountPassphraseController", () => {
21
21
  describe("VerifyAccountPassphraseController::exec", () => {
@@ -15,7 +15,7 @@
15
15
  import {enableFetchMocks} from "jest-fetch-mock";
16
16
  import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
17
17
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
18
- import {pendingAccountRecoveryRequestDto} from "../../model/entity/accountRecovery/accountRecoveryRequestEntity.test.data";
18
+ import {pendingAccountRecoveryRequestDto} from "passbolt-styleguide/src/shared/models/entity/accountRecovery/accountRecoveryRequestEntity.test.data";
19
19
  import AccountRecoveryGetRequestController from "./accountRecoveryGetRequestController";
20
20
  import AccountRecoveryRequestEntity from "../../model/entity/accountRecovery/accountRecoveryRequestEntity";
21
21
 
@@ -17,7 +17,7 @@ import {v4 as uuidv4} from "uuid";
17
17
  import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
18
18
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
19
19
  import AccountRecoveryGetUserRequestsController from "./accountRecoveryGetUserRequestsController";
20
- import {pendingAccountRecoveryRequestDto} from "../../model/entity/accountRecovery/accountRecoveryRequestEntity.test.data";
20
+ import {pendingAccountRecoveryRequestDto} from "passbolt-styleguide/src/shared/models/entity/accountRecovery/accountRecoveryRequestEntity.test.data";
21
21
  import AccountRecoveryRequestEntity from "../../model/entity/accountRecovery/accountRecoveryRequestEntity";
22
22
 
23
23
  beforeEach(() => {
@@ -15,7 +15,7 @@
15
15
  import {v4 as uuidv4} from "uuid";
16
16
  import {enableFetchMocks} from "jest-fetch-mock";
17
17
  import AccountRecoverySaveOrganizationPolicyController from "./accountRecoverySaveOrganizationPolicyController";
18
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
18
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
19
19
  import EntityValidationError from "passbolt-styleguide/src/shared/models/entity/abstract/entityValidationError";
20
20
  import AccountRecoveryOrganizationPolicyEntity from "../../model/entity/accountRecovery/accountRecoveryOrganizationPolicyEntity";
21
21
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
@@ -34,7 +34,7 @@ import {
34
34
  bettyAccountRecoveryPrivateKeyPasswordDto,
35
35
  defaultAccountRecoveryPrivateKeyPasswordDto,
36
36
  secretSubstitutionAttackAccountRecoveryPrivateKeyPasswordDto
37
- } from "../../model/entity/accountRecovery/accountRecoveryPrivateKeyPasswordEntity.test.data";
37
+ } from "passbolt-styleguide/src/shared/models/entity/accountRecovery/accountRecoveryPrivateKeyPasswordEntity.test.data";
38
38
  import AccountRecoveryPrivateKeyPasswordDecryptedDataEntity from "../../model/entity/accountRecovery/accountRecoveryPrivateKeyPasswordDecryptedDataEntity";
39
39
  import AccountEntity from "../../model/entity/account/accountEntity";
40
40
  import {adminAccountDto} from "../../model/entity/account/accountEntity.test.data";
@@ -19,14 +19,14 @@ import AccountRecoveryUserSettingEntity from "../../model/entity/accountRecovery
19
19
  import {
20
20
  createAcceptedAccountRecoveryUserSettingDto,
21
21
  createRejectedAccountRecoveryUserSettingDto
22
- } from "../../model/entity/accountRecovery/accountRecoveryUserSettingEntity.test.data";
22
+ } from "passbolt-styleguide/src/shared/models/entity/accountRecovery/accountRecoveryUserSettingEntity.test.data";
23
23
  import {enabledAccountRecoveryOrganizationPolicyDto, disabledAccountRecoveryOrganizationPolicyDto} from "../../model/entity/accountRecovery/accountRecoveryOrganizationPolicyEntity.test.data";
24
24
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
25
25
  import {defaultAccountDto} from "../../model/entity/account/accountEntity.test.data";
26
26
  import AccountEntity from "../../model/entity/account/accountEntity";
27
27
  import MockExtension from "../../../../../test/mocks/mockExtension";
28
28
  import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
29
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
29
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
30
30
 
31
31
  jest.mock("../../service/passphrase/getPassphraseService");
32
32
 
@@ -15,7 +15,7 @@
15
15
  import {enableFetchMocks} from "jest-fetch-mock";
16
16
  import AccountRecoveryValidateOrganizationPrivateKeyController from "./accountRecoveryValidateOrganizationPrivateKeyController";
17
17
  import EntityValidationError from "passbolt-styleguide/src/shared/models/entity/abstract/entityValidationError";
18
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
18
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
19
19
  import {enabledAccountRecoveryOrganizationPolicyDto} from "../../model/entity/accountRecovery/accountRecoveryOrganizationPolicyEntity.test.data";
20
20
  import WrongOrganizationRecoveryKeyError from "../../error/wrongOrganizationRecoveryKeyError";
21
21
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
@@ -16,7 +16,7 @@ import each from "jest-each";
16
16
  import {enableFetchMocks} from "jest-fetch-mock";
17
17
  import AccountRecoveryValidatePublicKeyController from "./accountRecoveryValidatePublicKeyController";
18
18
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
19
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
19
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
20
20
  import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
21
21
  import {v4 as uuidv4} from "uuid";
22
22
  import MockExtension from "../../../../../test/mocks/mockExtension";
@@ -21,13 +21,13 @@ import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiCli
21
21
  import RecoverAccountController from "./recoverAccountController";
22
22
  import AccountAccountRecoveryEntity from "../../model/entity/account/accountAccountRecoveryEntity";
23
23
  import {defaultAccountAccountRecoveryDto} from "../../model/entity/account/accountAccountRecoveryEntity.test.data";
24
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
24
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
25
25
  import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
26
26
  import {
27
27
  approvedAccountRecoveryRequestDto,
28
28
  approvedAccountRecoveryRequestWithoutPrivateKeyDto,
29
29
  approvedAccountRecoveryRequestWithoutResponsesDto
30
- } from "../../model/entity/accountRecovery/accountRecoveryRequestEntity.test.data";
30
+ } from "passbolt-styleguide/src/shared/models/entity/accountRecovery/accountRecoveryRequestEntity.test.data";
31
31
  import InvalidMasterPasswordError from "../../error/invalidMasterPasswordError";
32
32
  import {OpenpgpAssertion} from "../../utils/openpgp/openpgpAssertions";
33
33
  import SsoDataStorage from "../../service/indexedDB_storage/ssoDataStorage";
@@ -23,7 +23,7 @@ import DecryptMessageService from "../../service/crypto/decryptMessageService";
23
23
  import InvalidMasterPasswordError from "../../error/invalidMasterPasswordError";
24
24
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
25
25
  import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
26
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
26
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
27
27
  import {
28
28
  pendingAccountRecoveryRequestDto,
29
29
  pendingAccountRecoveryRequestWithInvalidAccountRecoveryPrivateKeyPasswordDto,
@@ -31,7 +31,7 @@ import {
31
31
  pendingAccountRecoveryRequestWithoutPrivateKeyPasswordDto,
32
32
  pendingAccountRecoveryRequestWithWrongPrivateKeyIdDto,
33
33
  pendingAccountRecoveryRequestWithWrongPrivateKeyUserIdDto,
34
- } from "../../model/entity/accountRecovery/accountRecoveryRequestEntity.test.data";
34
+ } from "passbolt-styleguide/src/shared/models/entity/accountRecovery/accountRecoveryRequestEntity.test.data";
35
35
  import {adminAccountDto} from "../../model/entity/account/accountEntity.test.data";
36
36
  import AccountEntity from "../../model/entity/account/accountEntity";
37
37
  import Keyring from "../../model/keyring";
@@ -69,8 +69,20 @@ class AuthVerifyServerKeyController {
69
69
  * Whenever the verify fail
70
70
  * @param {Error} error The error
71
71
  * @returns {Promise<void>}
72
+ * @throws {ServerKeyChangedError} If the key cannot be parsed
73
+ * @throws {ServerKeyChangedError} If the server key has changed
74
+ * @throws {serverKeyIsExpired} If the server key has expired
75
+ * @throws {Error} If an unexpected error occurred
72
76
  */
73
77
  async onVerifyError(error) {
78
+ if (error.data?.code === 500) {
79
+ /*
80
+ * If something wrong happens on the server, we do an early exit.
81
+ * The other errors (no user associated, server key changed etc ) don't produce an error 500.
82
+ */
83
+ throw error;
84
+ }
85
+
74
86
  if (error.message && error.message.indexOf('no user associated') !== -1) {
75
87
  /*
76
88
  * If the user has been deleted from the API, remove the authentication iframe served by the
@@ -18,7 +18,7 @@ import {Uuid} from "../../utils/uuid";
18
18
  import ServerKeyChangedError from "../../error/serverKeyChangedError";
19
19
  import AccountEntity from "../../model/entity/account/accountEntity";
20
20
  import {defaultAccountDto} from "../../model/entity/account/accountEntity.test.data";
21
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
21
+ import {pgpKeys} from 'passbolt-styleguide/test/fixture/pgpKeys/keys';
22
22
 
23
23
  jest.mock('../../model/gpgAuthToken', () => function() {
24
24
  return {token: "gpgauthv1.3.0|36|A89F6AB1-5BEE-32D8-a18B-461B810902E2|gpgauthv1.3.0", validate: () => true};
@@ -16,7 +16,7 @@ import {v4 as uuid} from "uuid";
16
16
  import "../../../../../test/mocks/mockSsoDataStorage";
17
17
  import "../../../../../test/mocks/mockCryptoKey";
18
18
  import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
19
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
19
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
20
20
  import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
21
21
  import GenerateSsoKitService from "../../service/sso/generateSsoKitService";
22
22
  import SsoDataStorage from "../../service/indexedDB_storage/ssoDataStorage";
@@ -19,7 +19,7 @@ import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiCli
19
19
  import {readWorker} from "../../model/entity/worker/workerEntity.test.data";
20
20
  import InformMenuPagemod from "../../pagemod/informMenuPagemod";
21
21
  import {v4 as uuidv4} from "uuid";
22
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
22
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
23
23
  import {defaultResourceDto} from "passbolt-styleguide/src/shared/models/entity/resource/resourceEntity.test.data";
24
24
  import GetDecryptedUserPrivateKeyService from "../../service/account/getDecryptedUserPrivateKeyService";
25
25
  import DecryptAndParseResourceSecretService from "../../service/secret/decryptAndParseResourceSecretService";
@@ -15,7 +15,7 @@
15
15
  import InvalidMasterPasswordError from "../../error/invalidMasterPasswordError";
16
16
  import ExternalGpgKeyEntity from "../../model/entity/gpgkey/external/externalGpgKeyEntity";
17
17
  import CheckPassphraseController from "./checkPassphraseController";
18
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
18
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
19
19
  import Keyring from "../../model/keyring";
20
20
 
21
21
  const mockFindPrivate = jest.spyOn(Keyring.prototype, "findPrivate");
@@ -16,7 +16,7 @@ import DownloadUserPrivateKeyController from "./downloadUserPrivateKeyController
16
16
  import GetGpgKeyInfoService from "../../service/crypto/getGpgKeyInfoService";
17
17
  import GpgKeyError from "../../error/GpgKeyError";
18
18
  import MockExtension from "../../../../../test/mocks/mockExtension";
19
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
19
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
20
20
  import {OpenpgpAssertion} from "../../utils/openpgp/openpgpAssertions";
21
21
  import FileService from "../../service/file/fileService";
22
22
 
@@ -16,7 +16,7 @@ import DownloadUserPublicKeyController from "./downloadUserPublicKeyController";
16
16
  import GetGpgKeyInfoService from "../../service/crypto/getGpgKeyInfoService";
17
17
  import GpgKeyError from "../../error/GpgKeyError";
18
18
  import MockExtension from "../../../../../test/mocks/mockExtension";
19
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
19
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
20
20
  import {OpenpgpAssertion} from "../../utils/openpgp/openpgpAssertions";
21
21
  import FileService from "../../service/file/fileService";
22
22
 
@@ -13,7 +13,7 @@
13
13
  */
14
14
 
15
15
  import GetKeyInfoController from "./getKeyInfoController";
16
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
16
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
17
17
  import {adaExternalPrivateGpgKeyEntityDto} from "../../model/entity/gpgkey/external/externalGpgKeyEntity.test.data";
18
18
 
19
19
  describe("GetKeyInfoController", () => {
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import {enableFetchMocks} from "jest-fetch-mock";
15
15
  import GetUserKeyInfoController from "./getUserKeyInfoController";
16
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
16
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
17
17
  import MockExtension from "../../../../../test/mocks/mockExtension";
18
18
  import {mockApiResponse} from "../../../../../test/mocks/mockApiResponse";
19
19
  import Keyring from '../../model/keyring';
@@ -12,7 +12,7 @@
12
12
  * @since 4.3.0
13
13
  */
14
14
  import {enableFetchMocks} from "jest-fetch-mock";
15
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
15
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
16
16
  import MockExtension from "../../../../../test/mocks/mockExtension";
17
17
  import Keyring from '../../model/keyring';
18
18
  import GetGpgKeyInfoService from "../../service/crypto/getGpgKeyInfoService";
@@ -11,7 +11,7 @@
11
11
  * @link https://www.passbolt.com Passbolt(tm)
12
12
  * @since 3.6.0
13
13
  */
14
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
14
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
15
15
  import ValidatePrivateGpgKeyRecoverController from "./validatePrivateGpgKeyRecoverController";
16
16
 
17
17
  describe("ValidatePrivateGpgKeyRecoverController", () => {
@@ -12,7 +12,7 @@
12
12
  * @since 3.6.0
13
13
  */
14
14
  import each from "jest-each";
15
- import {pgpKeys} from '../../../../../test/fixtures/pgpKeys/keys';
15
+ import {pgpKeys} from 'passbolt-styleguide/test/fixture/pgpKeys/keys';
16
16
  import ValidatePrivateGpgKeySetupController from './validatePrivateGpgKeySetupController';
17
17
  import GetGpgKeyInfoService from "../../service/crypto/getGpgKeyInfoService";
18
18
 
@@ -18,7 +18,7 @@ import {requestId, worker} from "./exportDesktopAccountController.test.data";
18
18
  import FileService from "../../service/file/fileService";
19
19
  import GetLegacyAccountService from "../../service/account/getLegacyAccountService";
20
20
  import {Buffer} from 'buffer';
21
- import {pgpKeys} from "../../../../../test/fixtures/pgpKeys/keys";
21
+ import {pgpKeys} from "passbolt-styleguide/test/fixture/pgpKeys/keys";
22
22
  import DecryptPrivateKeyService from "../../service/crypto/decryptPrivateKeyService";
23
23
  import SignMessageService from "../../service/crypto/signMessageService";
24
24
  import {OpenpgpAssertion} from "../../utils/openpgp/openpgpAssertions";
@@ -0,0 +1,57 @@
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.0
13
+ */
14
+ import GroupModel from "../../model/group/groupModel";
15
+ import User from "../../model/user";
16
+
17
+ class FindGroupsCurrentUserIsMemberOfController {
18
+ /**
19
+ * Constructor
20
+ * @param {Worker} worker
21
+ * @param {string} requestId uuid
22
+ * @param {AccountEntity} account The account associated to the worker.
23
+ */
24
+ constructor(worker, requestId, apiClientOptions) {
25
+ this.worker = worker;
26
+ this.requestId = requestId;
27
+ this.groupModel = new GroupModel(apiClientOptions);
28
+ }
29
+
30
+ /**
31
+ * Controller executor.
32
+ * @returns {Promise<void>}
33
+ */
34
+ async _exec() {
35
+ try {
36
+ const result = await this.exec.apply(this, arguments);
37
+ this.worker.port.emit(this.requestId, 'SUCCESS', result);
38
+ } catch (error) {
39
+ console.error(error);
40
+ this.worker.port.emit(this.requestId, 'ERROR', error);
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Find all the groups the current user is member of
46
+ * @return {Promise<GroupsCollection>}
47
+ */
48
+ async exec() {
49
+ const userId = User.getInstance().get().id;
50
+ const filters = {
51
+ "has-users": userId,
52
+ };
53
+ return await this.groupModel.findAll(null, filters);
54
+ }
55
+ }
56
+
57
+ export default FindGroupsCurrentUserIsMemberOfController;