passbolt-browser-extension 4.9.3 → 4.9.4

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 (210) hide show
  1. package/.github/workflows/release.yaml +4 -2
  2. package/.github/workflows/release_candidate.yaml +4 -2
  3. package/CHANGELOG.md +78 -1
  4. package/RELEASE_NOTES.md +71 -4
  5. package/doc/error-management-verify-key-server.md +47 -0
  6. package/doc/folders-find-class.md +77 -0
  7. package/doc/permissions-find-all-by-aco-foreign-key-class.md +34 -0
  8. package/doc/resource-find-all-decrypt-metadata-sequence.md +51 -0
  9. package/doc/resources-find-and-decrypt-metadata-flow.md +49 -0
  10. package/doc/resources-find-class.md +349 -0
  11. package/doc/secret-find-by-resource-id-class.md +33 -0
  12. package/package.json +4 -13
  13. package/src/all/background_page/controller/InformMenuController/InformMenuController.js +3 -1
  14. package/src/all/background_page/controller/auth/authVerifyServerKeyController.js +1 -1
  15. package/src/all/background_page/controller/auth/authVerifyServerKeyController.test.js +45 -13
  16. package/src/all/background_page/controller/autofill/AutofillController.js +5 -2
  17. package/src/all/background_page/controller/autofill/AutofillController.test.js +36 -19
  18. package/src/all/background_page/controller/comment/createCommentController.test.js +5 -6
  19. package/src/all/background_page/controller/comment/getCommentsByRessourceidController.test.js +9 -6
  20. package/src/all/background_page/controller/export/exportResourcesFileController.js +10 -7
  21. package/src/all/background_page/controller/folder/findFolderDetailsController.js +56 -0
  22. package/src/all/background_page/controller/folder/findFolderDetailsController.test.js +50 -0
  23. package/src/all/background_page/controller/folder/folderCreateController.js +3 -4
  24. package/src/all/background_page/controller/folderLocalStorage/updateAllFoldersLocalStorageController.js +55 -0
  25. package/src/all/background_page/controller/folderLocalStorage/updateAllFoldersLocalStorageController.test.js +47 -0
  26. package/src/all/background_page/controller/group/groupUpdateController.js +15 -17
  27. package/src/all/background_page/controller/import/importResourcesFileController.js +2 -2
  28. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.js +7 -5
  29. package/src/all/background_page/controller/move/moveFolderController.js +7 -3
  30. package/src/all/background_page/controller/move/moveResourcesController.js +7 -3
  31. package/src/all/background_page/controller/move/moveResourcesController.test.js +1 -1
  32. package/src/all/background_page/controller/passwordPolicies/getOrFindPasswordPoliciesController.test.js +1 -1
  33. package/src/all/background_page/controller/permission/FindAcoPermissionsForDisplayController.js +76 -0
  34. package/src/all/background_page/controller/permission/FindAcoPermissionsForDisplayController.test.js +104 -0
  35. package/src/all/background_page/controller/resource/findAllIdsByIsSharedWithGroupController.js +59 -0
  36. package/src/all/background_page/controller/resource/findAllIdsByIsSharedWithGroupController.test.js +99 -0
  37. package/src/all/background_page/controller/resource/findResourceDetailsController.js +3 -7
  38. package/src/all/background_page/controller/resource/resourceUpdateController.js +22 -99
  39. package/src/all/background_page/controller/resource/resourceUpdateController.test.js +123 -0
  40. package/src/all/background_page/controller/resourceLocalStorage/resourceUpdateLocalStorageController.js +58 -0
  41. package/src/all/background_page/controller/resourceLocalStorage/resourceUpdateLocalStorageController.test.js +56 -0
  42. package/src/all/background_page/controller/resourceType/getResourceTypesController.js +54 -0
  43. package/src/all/background_page/controller/resourceType/getResourceTypesController.test.js +43 -0
  44. package/src/all/background_page/controller/secret/{secretDecryptController.js → findSecretByResourceIdController.js} +11 -8
  45. package/src/all/background_page/controller/secret/{secretDecryptController.test.js → findSecretByResourceIdController.test.js} +20 -15
  46. package/src/all/background_page/controller/share/findResourcesForShareController.js +57 -0
  47. package/src/all/background_page/controller/share/findResourcesForShareController.test.js +57 -0
  48. package/src/all/background_page/controller/share/shareFoldersController.js +11 -4
  49. package/src/all/background_page/controller/share/shareResourcesController.js +3 -3
  50. package/src/all/background_page/controller/share/shareResourcesController.test.data.js +1 -1
  51. package/src/all/background_page/event/folderEvents.js +25 -33
  52. package/src/all/background_page/event/groupEvents.js +1 -1
  53. package/src/all/background_page/event/permissionEvents.js +37 -0
  54. package/src/all/background_page/event/resourceEvents.js +13 -46
  55. package/src/all/background_page/event/resourceTypeEvents.js +4 -9
  56. package/src/all/background_page/event/secretEvents.js +4 -4
  57. package/src/all/background_page/event/shareEvents.js +6 -12
  58. package/src/all/background_page/event/userEvents.js +1 -1
  59. package/src/all/background_page/model/entity/comment/commentEntity.js +5 -44
  60. package/src/all/background_page/model/entity/comment/commentEntity.test.js +67 -140
  61. package/src/all/background_page/model/entity/comment/commentsCollection.js +20 -98
  62. package/src/all/background_page/model/entity/comment/commentsCollection.test.js +70 -61
  63. package/src/all/background_page/model/entity/export/exportResourcesFileEntity.js +28 -148
  64. package/src/all/background_page/model/entity/export/exportResourcesFileEntity.test.data.js +8 -8
  65. package/src/all/background_page/model/entity/export/exportResourcesFileEntity.test.js +124 -3
  66. package/src/all/background_page/model/entity/folder/external/externalFolderEntity.js +21 -61
  67. package/src/all/background_page/model/entity/folder/external/externalFolderEntity.test.data.js +27 -0
  68. package/src/all/background_page/model/entity/folder/external/externalFolderEntity.test.js +367 -129
  69. package/src/all/background_page/model/entity/folder/external/externalFoldersCollection.js +40 -101
  70. package/src/all/background_page/model/entity/folder/external/externalFoldersCollection.test.data.js +23 -0
  71. package/src/all/background_page/model/entity/folder/external/externalFoldersCollection.test.js +494 -65
  72. package/src/all/background_page/model/entity/folder/folderEntity.js +20 -2
  73. package/src/all/background_page/model/entity/folder/folderEntity.test.js +17 -28
  74. package/src/all/background_page/model/entity/folder/foldersCollection.test.js +17 -0
  75. package/src/all/background_page/model/entity/gpgkey/external/externalGpgKeyEntity.test.data.js +54 -0
  76. package/src/all/background_page/model/entity/gpgkey/external/externalGpgKeyEntity.test.js +1 -4
  77. package/src/all/background_page/model/entity/group/transfer/{groupDeleteTransfer.js → groupDeleteTransferEntity.js} +13 -54
  78. package/src/all/background_page/model/entity/group/transfer/groupDeleteTransferEntity.test.js +42 -0
  79. package/src/all/background_page/model/entity/group/update/groupUpdateDryRunResultEntity.js +9 -30
  80. package/src/all/background_page/model/entity/group/update/groupUpdateDryRunResultEntity.test.js +39 -4
  81. package/src/all/background_page/model/entity/group/update/groupUpdateEntity.js +5 -5
  82. package/src/all/background_page/model/entity/groupUser/groupsUsersCollection.js +0 -28
  83. package/src/all/background_page/model/entity/groupUser/groupsUsersCollection.test.js +0 -32
  84. package/src/all/background_page/model/entity/groupUser/transfer/groupUserTransferEntity.js +2 -57
  85. package/src/all/background_page/model/entity/groupUser/transfer/groupUserTransferEntity.test.js +46 -0
  86. package/src/all/background_page/model/entity/groupUser/transfer/groupUserTransfersCollection.js +5 -58
  87. package/src/all/background_page/model/entity/groupUser/transfer/groupUserTransfersCollection.test.js +32 -32
  88. package/src/all/background_page/model/entity/import/importResourcesFileEntity.js +31 -101
  89. package/src/all/background_page/model/entity/import/importResourcesFileEntity.test.data.js +46 -0
  90. package/src/all/background_page/model/entity/import/importResourcesFileEntity.test.js +293 -24
  91. package/src/all/background_page/model/entity/permission/transfer/permissionTransferEntity.js +3 -31
  92. package/src/all/background_page/model/entity/permission/transfer/permissionTransferEntity.test.js +51 -0
  93. package/src/all/background_page/model/entity/permission/transfer/permissionTransfersCollection.js +5 -57
  94. package/src/all/background_page/model/entity/permission/transfer/permissionTransfersCollection.test.js +35 -32
  95. package/src/all/background_page/model/entity/plaintext/plaintextEntity.js +22 -68
  96. package/src/all/background_page/model/entity/plaintext/plaintextEntity.test.js +141 -0
  97. package/src/all/background_page/model/entity/resource/external/externalResourceEntity.js +114 -101
  98. package/src/all/background_page/model/entity/resource/external/externalResourceEntity.test.data.js +7 -0
  99. package/src/all/background_page/model/entity/resource/external/externalResourceEntity.test.js +300 -99
  100. package/src/all/background_page/model/entity/resource/external/externalResourcesCollection.js +40 -72
  101. package/src/all/background_page/model/entity/resource/external/externalResourcesCollection.test.data.js +31 -1
  102. package/src/all/background_page/model/entity/resource/external/externalResourcesCollection.test.js +243 -74
  103. package/src/all/background_page/model/entity/resource/metadata/resourceMetadataEntity.test.js +1 -1
  104. package/src/all/background_page/model/entity/resource/resourcesCollection.js +0 -42
  105. package/src/all/background_page/model/entity/resource/resourcesCollection.test.js +15 -61
  106. package/src/all/background_page/model/entity/resourceType/resourceTypeEntity.js +182 -57
  107. package/src/all/background_page/model/entity/resourceType/resourceTypeEntity.test.js +117 -32
  108. package/src/all/background_page/model/entity/resourceType/resourceTypesCollection.js +42 -106
  109. package/src/all/background_page/model/entity/resourceType/resourceTypesCollection.test.js +92 -116
  110. package/src/all/background_page/model/entity/secret/groupUpdate/groupUpdateSecretsCollection.js +140 -0
  111. package/src/all/background_page/model/entity/secret/groupUpdate/groupUpdateSecretsCollection.test.data.js +31 -0
  112. package/src/all/background_page/model/entity/secret/groupUpdate/groupUpdateSecretsCollection.test.js +136 -0
  113. package/src/all/background_page/model/entity/secret/needed/neededSecretEntity.js +2 -30
  114. package/src/all/background_page/model/entity/secret/needed/neededSecretEntity.test.js +49 -0
  115. package/src/all/background_page/model/entity/secret/needed/neededSecretsCollection.js +5 -68
  116. package/src/all/background_page/model/entity/secret/needed/neededSecretsCollection.test.js +55 -0
  117. package/src/all/background_page/model/entity/secret/resource/resourceSecretsCollection.test.data.js +1 -1
  118. package/src/all/background_page/model/entity/secret/resource/resourceSecretsCollection.test.js +1 -1
  119. package/src/all/background_page/model/entity/secret/secretEntity.js +5 -37
  120. package/src/all/background_page/model/entity/secret/secretEntity.test.js +71 -16
  121. package/src/all/background_page/model/entity/totp/totpEntity.js +49 -67
  122. package/src/all/background_page/model/entity/totp/totpEntity.test.js +130 -72
  123. package/src/all/background_page/model/entity/user/transfer/{userDeleteTransfer.js → userDeleteTransferEntity.js} +13 -58
  124. package/src/all/background_page/model/entity/user/transfer/userDeleteTransferEntity.test.js +76 -0
  125. package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultCollection.test.data.js +35 -0
  126. package/src/all/background_page/model/entity/userAndGroupSearchResultEntity/userAndGroupSearchResultCollestion.test.js +15 -0
  127. package/src/all/background_page/model/export/resources/csvRowComposer/csvKdbxRowComposer.js +3 -4
  128. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +3 -4
  129. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.test.js +1 -1
  130. package/src/all/background_page/model/folder/folderModel.js +8 -39
  131. package/src/all/background_page/model/folder/folderModel.test.js +4 -1
  132. package/src/all/background_page/model/group/groupModel.js +1 -1
  133. package/src/all/background_page/model/import/resources/csvRowParser/csv1PasswordRowParser.test.js +3 -3
  134. package/src/all/background_page/model/import/resources/csvRowParser/csvBitWardenRowParser.test.js +3 -3
  135. package/src/all/background_page/model/import/resources/csvRowParser/csvChromiumRowParser.test.js +2 -2
  136. package/src/all/background_page/model/import/resources/csvRowParser/csvDashlaneRowParser.test.js +3 -3
  137. package/src/all/background_page/model/import/resources/csvRowParser/csvKdbxRowParser.test.js +5 -5
  138. package/src/all/background_page/model/import/resources/csvRowParser/csvLastPassRowParser.test.js +3 -3
  139. package/src/all/background_page/model/import/resources/csvRowParser/csvLogMeOnceRowParser.test.js +3 -3
  140. package/src/all/background_page/model/import/resources/csvRowParser/csvMozillaPlatformRowParser.test.js +1 -1
  141. package/src/all/background_page/model/import/resources/csvRowParser/csvNordpassRowParser.test.js +3 -3
  142. package/src/all/background_page/model/import/resources/csvRowParser/csvSafariRowParser.test.js +3 -3
  143. package/src/all/background_page/model/resource/resourceModel.js +6 -166
  144. package/src/all/background_page/model/resourceType/resourceTypeModel.js +8 -22
  145. package/src/all/background_page/model/resourceType/resourceTypeModel.test.js +99 -0
  146. package/src/all/background_page/model/user/userModel.js +1 -1
  147. package/src/all/background_page/pagemod/appPagemod.js +3 -1
  148. package/src/all/background_page/pagemod/appPagemod.test.js +6 -2
  149. package/src/all/background_page/service/api/permission/permissionService.js +70 -0
  150. package/src/all/background_page/service/api/permission/permissionService.test.js +95 -0
  151. package/src/all/background_page/service/api/resource/resourceService.js +0 -35
  152. package/src/all/background_page/service/api/secret/secretService.js +54 -0
  153. package/src/all/background_page/service/api/secret/secretService.test.js +91 -0
  154. package/src/all/background_page/service/execute/executeConcurrentlyService.js +106 -0
  155. package/src/all/background_page/service/execute/executeConcurrentlyService.test.data.js +32 -0
  156. package/src/all/background_page/service/execute/executeConcurrentlyService.test.js +95 -0
  157. package/src/all/background_page/service/folder/find/findFoldersService.js +110 -0
  158. package/src/all/background_page/service/folder/find/findFoldersService.test.js +179 -0
  159. package/src/all/background_page/service/folder/update/findAndUpdateFoldersLocalStorageService.js +78 -0
  160. package/src/all/background_page/service/folder/update/findAndUpdateFoldersLocalStorageService.test.js +174 -0
  161. package/src/all/background_page/service/local_storage/folderLocalStorage.js +57 -44
  162. package/src/all/background_page/service/local_storage/folderLocalStorage.test.js +418 -0
  163. package/src/all/background_page/service/local_storage/resourceLocalStorage.js +27 -1
  164. package/src/all/background_page/service/local_storage/resourceLocalStorage.test.js +95 -8
  165. package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.js +17 -72
  166. package/src/all/background_page/service/local_storage/rolesLocalStorage.js +0 -18
  167. package/src/all/background_page/service/permission/findPermissionsService.js +54 -0
  168. package/src/all/background_page/service/permission/findPermissionsService.test.js +56 -0
  169. package/src/all/background_page/service/resource/create/resourceCreateService.js +6 -2
  170. package/src/all/background_page/service/resource/create/resourceCreateService.test.js +179 -41
  171. package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.js +94 -0
  172. package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.test.data.js +37 -0
  173. package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.test.js +271 -0
  174. package/src/all/background_page/service/resource/findResourcesService.js +187 -0
  175. package/src/all/background_page/service/resource/findResourcesService.test.data.js +43 -0
  176. package/src/all/background_page/service/resource/findResourcesService.test.js +493 -0
  177. package/src/all/background_page/service/resource/getOrFindResourcesService.js +77 -0
  178. package/src/all/background_page/service/resource/getOrFindResourcesService.test.data.js +43 -0
  179. package/src/all/background_page/service/resource/getOrFindResourcesService.test.js +182 -0
  180. package/src/all/background_page/service/resource/update/resourceUpdateService.js +131 -0
  181. package/src/all/background_page/service/resource/update/resourceUpdateService.test.js +345 -0
  182. package/src/all/background_page/service/secret/decryptAndParseResourceSecretService.js +3 -2
  183. package/src/all/background_page/service/secret/findSecretService.js +45 -0
  184. package/src/all/background_page/service/secret/findSecretService.test.js +56 -0
  185. package/src/all/background_page/service/toolbar/toolbarService.js +4 -3
  186. package/src/all/background_page/service/toolbar/toolbarService.test.js +1 -1
  187. package/src/all/background_page/utils/array/splitBySize.test.js +71 -0
  188. package/src/all/background_page/utils/assertions.js +23 -0
  189. package/src/all/background_page/utils/assertions.test.js +55 -1
  190. package/src/all/locales/it-IT/common.json +7 -7
  191. package/src/chrome/manifest.json +1 -1
  192. package/src/chrome-mv3/manifest.json +1 -1
  193. package/src/firefox/manifest.json +1 -1
  194. package/src/safari/manifest.json +1 -1
  195. package/test/jest.setup.js +5 -0
  196. package/test/mocks/mockNavigatorLocks.js +46 -6
  197. package/doc/resource-types-retrieval-requirements.md +0 -17
  198. package/src/all/background_page/model/entity/comment/comments.test.data.js +0 -45
  199. package/src/all/background_page/model/entity/group/transfer/groupDeleteTransfer.test.js +0 -46
  200. package/src/all/background_page/model/entity/groupUser/transfer/groupUserTransfer.test.js +0 -86
  201. package/src/all/background_page/model/entity/permission/transfer/permissionTransfer.test.js +0 -86
  202. package/src/all/background_page/model/entity/resource/metadata/resourceMetadataEntity.test.data.js +0 -47
  203. package/src/all/background_page/model/entity/resource/resourcesCollection.test.data.js +0 -81
  204. package/src/all/background_page/model/entity/secret/secretEntity.test.data.js +0 -29
  205. package/src/all/background_page/model/entity/secret/secretsCollection.js +0 -162
  206. package/src/all/background_page/model/entity/user/transfer/userDeleteTransfer.test.js +0 -79
  207. package/src/all/background_page/service/api/resource/resourceLocalStorageUpdateService.js +0 -120
  208. package/src/all/background_page/service/api/resource/resourceLocalStorageUpdateService.test.js +0 -124
  209. /package/doc/{worker-port-lfecycle.md → worker-port-lfecycle-flow.md} +0 -0
  210. /package/src/all/background_page/controller/resource/{findResourceController.test.js → findResourceDetailsController.test.js} +0 -0
@@ -9,9 +9,11 @@ jobs:
9
9
  build:
10
10
  name: Create release
11
11
  runs-on: ubuntu-latest
12
+ permissions:
13
+ contents: write
12
14
  steps:
13
- - uses: actions/checkout@v3
15
+ - uses: actions/checkout@v4
14
16
  - env:
15
- GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
17
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16
18
  name: Create Release
17
19
  run: gh release create "${GITHUB_REF#refs/*/}" -t "${GITHUB_REF#refs/*/}" --notes-file RELEASE_NOTES.md
@@ -9,9 +9,11 @@ jobs:
9
9
  build:
10
10
  name: Create release candidate
11
11
  runs-on: ubuntu-latest
12
+ permissions:
13
+ contents: write
12
14
  steps:
13
- - uses: actions/checkout@v3
15
+ - uses: actions/checkout@v4
14
16
  - env:
15
- GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
17
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16
18
  name: Create Release candidate
17
19
  run: gh release create "${GITHUB_REF#refs/*/}" -t "${GITHUB_REF#refs/*/}" -p --notes-file RELEASE_NOTES.md
package/CHANGELOG.md CHANGED
@@ -3,6 +3,81 @@ 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.4] - 2024-09-30
7
+ ### Fixed
8
+ - PB-33927: Update the label for password expiry email notification
9
+ - PB-34743: Fix: folder's sidebar information misses the creator and modifier information
10
+ - PB-35351: Fix: Grid columns resizing unexpectedly
11
+
12
+ ### Maintenance
13
+ - PB-34313: E2EE WP2 documentation permissions finder class
14
+ - PB-34612: As a desktop app I should see the dotnet error message in of http error
15
+ - PB-34632: WP2-1.1 Migrate ResourceTypeEntity to EntityV2
16
+ - PB-34633: WP2-1.2 Migrate ResourceTypesCollection to EntityV2Collection
17
+ - PB-34634: WP2-1.3 Migrate CommentEntity to EntityV2
18
+ - PB-34635: WP2-1.4 Migrate CommentsCollection to EntityV2Collection
19
+ - PB-34636: WP2-1.5 migrate external resource entity to entity v2
20
+ - PB-34637: WP2-1.6 migrate external resources collection to entity v2 collection
21
+ - PB-34638: WP2-1.7 migrate external folder entity to entity v2
22
+ - PB-34639: WP2-1.8 migrate external folders collection to entity v2 collection
23
+ - PB-34640: WP2-1.9 Migrate ExportResourcesFileEntity to EntityV2
24
+ - PB-34641: WP2-1.10 Migrate PermissionTransferEntity to EntityV2
25
+ - PB-34642: WP2-1.11 Migrate PermissionTransfersCollection to EntityV2Collection
26
+ - PB-34643: WP2-1.12 Migrate GroupDeleteTransferEntity to EntityV2
27
+ - PB-34644: WP2-1.14 Migrate GroupUserTransfersCollection to EntityV2Collection
28
+ - PB-34645: WP2-1.15 Migrate UserDeleteTransferEntity to EntityV2
29
+ - PB-34646: WP2-1.13 Migrate GroupUserTransferEntity to EntityV2
30
+ - PB-34647: WP2-1.16 Migrate NeededSecretEntity to EntityV2
31
+ - PB-34648: WP2-1.17 Migrate NeededSecretsCollection to EntityV2Collection
32
+ - PB-34649: WP2-1.18 Migrate SecretEntity to EntityV2
33
+ - PB-34650: WP2-1.19 Migrate SecretsCollection to EntityV2Collection
34
+ - PB-34651: WP2-1.20 Migrate GroupUpdateDryRunResultEntity to EntityV2
35
+ - PB-34656: WP2-1.25 Migrate ImportResourcesFileEntity to EntityV2
36
+ - PB-34657: WP2-1.26 Migrate PlaintextEntity to EntityV2
37
+ - PB-34658: WP2-1.27 Migrate TotpEntity to EntityV2
38
+ - PB-34747: WP2-1.28 Remove not used sanitizeDto from GroupsUsersCollection
39
+ - PB-35124: Migrate 'gte' and 'lte' props of schemas to 'minimum' and 'maximum'
40
+ - PB-35125: WP2-2.6 Find resource permissions by requesting dedicated API permissions entry point
41
+ - PB-35128: WP2-2.1 unnecessary quick a api call when displaying home page
42
+ - PB-35161: WP2-2.2 unnecessary quick a api call for filtering resources: filter by favourite
43
+ - PB-35170: WP2-2.5 unnecessary quick a api call for filtering resources: filter by tags
44
+ - PB-35172: WP2-2.7 Find folder permissions by requesting dedicated API permissions entry point
45
+ - PB-35174: WP2-4.1 Migrate Webapp resource create form in view model
46
+ - PB-35175: WP2-4.2 Migrate Webapp resource edit form in view model
47
+ - PB-35177: WP2-4.3 Migrate Quickaccess resource create form in view model
48
+ - PB-35178: WP2-4.4 Migrate Quickaccess resource auto-save form in view model
49
+ - PB-35179: WP2-4.5 Migrate Webapp edit description from sidebar form in view model ?
50
+ - PB-35180: WP2-2.8 Copy/preview password/totp should find single secret by requesting dedicated API secrets entry point
51
+ - PB-35182: WP2-3.1 Migrate the resource types event 'passbolt.resource-type.get-all' into a controller
52
+ - PB-35233: WP2-5.1 PlainText entity schema should be provided by the browser extension
53
+ - PB-35253: WP2-3.2 Migrate resource update controller logic into service
54
+ - PB-35255: WP2-3.3 Migrate resource “update-local-storage” event logic to a dedicated controller
55
+ - PB-35256: WP2-5.2 Unit test performance of new collection v2 and ensure no regression is introduced
56
+ - PB-35261: WP2-2.10 Shift resources & folders and update local storage debounce...
57
+ - PB-35261: WP2-2.10 Decouple logic of update local storage, find all and get or find all in order to prepare for resource with encrypted metadata
58
+ - PB-35323: Ensure resource test factory does not contain any metadata at the root of the resource
59
+ - PB-35338: WP2-2.11 Folders update local storage should handle threshold period to limit the number of API request
60
+ - PB-35339: Review resource update service test
61
+ - PB-35340: WP2-2.12 drop resources collection sanitise dto
62
+ - PB-35341: WP2-2.13 Migrate findAll from ResourceModel into FindResourceService
63
+ - PB-35342: WP2-2.14 Leverage local storage when filtering resources by group
64
+ - PB-35344: WP2-2.15 Migrate findSuggestedResources from resource model to...
65
+ - PB-35345: WP2-2.16 Migrate findAllForShare from resource api service to FindResources service
66
+ - PB-35346: WP2-2.17 migrate find all for decrypt from resource api service to find resources service
67
+ - PB-35348: WP2-2.18 Migrate findById to the FindResourcesService
68
+ - PB-35359: WP3 Class diagram of resources types local storage HOC
69
+ - PB-35359: WP3 Update resource class diagram to support resource edit with v5
70
+ - PB-35359: Technical specifications: WP3 support v5 resource types with v4 UI
71
+ - PB-35414: WP2-2.16 Create ExecuteConcurrentlyService to perform query in parallel
72
+
73
+ ### Security
74
+ - PB-35129: Upgrade vulnerable library webpack
75
+ - PB-35354: Upgrade vulnerable library path-to-regexp
76
+
77
+ ## [4.9.3] - 2024-09-03
78
+ ### Fixed
79
+ - PB-35185 Administrator should be able to delete users who are sole owners of resources or sole group manager
80
+
6
81
  ## [4.9.2] - 2024-08-26
7
82
  ### Fixed
8
83
  - PB-33861: Resources with personal field set to null should be considered as personal resources
@@ -1764,7 +1839,9 @@ self registration settings option in the left-side bar
1764
1839
  - AP: User with plugin installed
1765
1840
  - LU: Logged in user
1766
1841
 
1767
- [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.2...HEAD
1842
+ [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.4...HEAD
1843
+ [4.9.4]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.3...v4.9.4
1844
+ [4.9.3]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.2...v4.9.3
1768
1845
  [4.9.2]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.1...4.9.2
1769
1846
  [4.9.1]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.0...4.9.1
1770
1847
  [4.9.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.8.2...4.9.0
package/RELEASE_NOTES.md CHANGED
@@ -1,9 +1,76 @@
1
- Song: https://youtu.be/BGHlZwMYO9g?si=LhUEanqg7q9j-nxv
1
+ Song: https://www.youtube.com/watch?v=tmZ-loZlsyI
2
2
 
3
- Passbolt v4.9.3 is a maintenance update that addresses issues related to the deletion of users. Specifically, it fixes problems that occurred when trying to delete a user who is either the sole owner of resources or the sole group manager. Under these conditions, the deletion process did not work as expected, and this update resolves those issues.
3
+ Passbolt v4.9.4 is a maintenance update of preparatory work for the incoming v5 and addresses reported issues. Specifically, it cleans the codebase to ease the later encryption of the resource metadata. Plus, it fixes the unexpected resource workspace column resizing and some displayed information.
4
4
 
5
5
  Thank you to the community for reporting this issue.
6
6
 
7
- ## [4.9.6] - 2024-09-03
7
+ ## [4.9.4] - 2024-09-30
8
8
  ### Fixed
9
- - PB-35185 Administrator should be able to delete users who are sole owners of resources or sole group manager
9
+ - PB-33927: Update the label for password expiry email notification
10
+ - PB-34743: Fix: folder's sidebar information misses the creator and modifier information
11
+ - PB-35351: Fix: Grid columns resizing unexpectedly
12
+
13
+ ### Maintenance
14
+ - PB-34313: E2EE WP2 documentation permissions finder class
15
+ - PB-34612: As a desktop app I should see the dotnet error message in of http error
16
+ - PB-34632: WP2-1.1 Migrate ResourceTypeEntity to EntityV2
17
+ - PB-34633: WP2-1.2 Migrate ResourceTypesCollection to EntityV2Collection
18
+ - PB-34634: WP2-1.3 Migrate CommentEntity to EntityV2
19
+ - PB-34635: WP2-1.4 Migrate CommentsCollection to EntityV2Collection
20
+ - PB-34636: WP2-1.5 migrate external resource entity to entity v2
21
+ - PB-34637: WP2-1.6 migrate external resources collection to entity v2 collection
22
+ - PB-34638: WP2-1.7 migrate external folder entity to entity v2
23
+ - PB-34639: WP2-1.8 migrate external folders collection to entity v2 collection
24
+ - PB-34640: WP2-1.9 Migrate ExportResourcesFileEntity to EntityV2
25
+ - PB-34641: WP2-1.10 Migrate PermissionTransferEntity to EntityV2
26
+ - PB-34642: WP2-1.11 Migrate PermissionTransfersCollection to EntityV2Collection
27
+ - PB-34643: WP2-1.12 Migrate GroupDeleteTransferEntity to EntityV2
28
+ - PB-34644: WP2-1.14 Migrate GroupUserTransfersCollection to EntityV2Collection
29
+ - PB-34645: WP2-1.15 Migrate UserDeleteTransferEntity to EntityV2
30
+ - PB-34646: WP2-1.13 Migrate GroupUserTransferEntity to EntityV2
31
+ - PB-34647: WP2-1.16 Migrate NeededSecretEntity to EntityV2
32
+ - PB-34648: WP2-1.17 Migrate NeededSecretsCollection to EntityV2Collection
33
+ - PB-34649: WP2-1.18 Migrate SecretEntity to EntityV2
34
+ - PB-34650: WP2-1.19 Migrate SecretsCollection to EntityV2Collection
35
+ - PB-34651: WP2-1.20 Migrate GroupUpdateDryRunResultEntity to EntityV2
36
+ - PB-34656: WP2-1.25 Migrate ImportResourcesFileEntity to EntityV2
37
+ - PB-34657: WP2-1.26 Migrate PlaintextEntity to EntityV2
38
+ - PB-34658: WP2-1.27 Migrate TotpEntity to EntityV2
39
+ - PB-34747: WP2-1.28 Remove not used sanitizeDto from GroupsUsersCollection
40
+ - PB-35124: Migrate 'gte' and 'lte' props of schemas to 'minimum' and 'maximum'
41
+ - PB-35125: WP2-2.6 Find resource permissions by requesting dedicated API permissions entry point
42
+ - PB-35128: WP2-2.1 unnecessary quick a api call when displaying home page
43
+ - PB-35161: WP2-2.2 unnecessary quick a api call for filtering resources: filter by favourite
44
+ - PB-35170: WP2-2.5 unnecessary quick a api call for filtering resources: filter by tags
45
+ - PB-35172: WP2-2.7 Find folder permissions by requesting dedicated API permissions entry point
46
+ - PB-35174: WP2-4.1 Migrate Webapp resource create form in view model
47
+ - PB-35175: WP2-4.2 Migrate Webapp resource edit form in view model
48
+ - PB-35177: WP2-4.3 Migrate Quickaccess resource create form in view model
49
+ - PB-35178: WP2-4.4 Migrate Quickaccess resource auto-save form in view model
50
+ - PB-35179: WP2-4.5 Migrate Webapp edit description from sidebar form in view model ?
51
+ - PB-35180: WP2-2.8 Copy/preview password/totp should find single secret by requesting dedicated API secrets entry point
52
+ - PB-35182: WP2-3.1 Migrate the resource types event 'passbolt.resource-type.get-all' into a controller
53
+ - PB-35233: WP2-5.1 PlainText entity schema should be provided by the browser extension
54
+ - PB-35253: WP2-3.2 Migrate resource update controller logic into service
55
+ - PB-35255: WP2-3.3 Migrate resource “update-local-storage” event logic to a dedicated controller
56
+ - PB-35256: WP2-5.2 Unit test performance of new collection v2 and ensure no regression is introduced
57
+ - PB-35261: WP2-2.10 Shift resources & folders and update local storage debounce...
58
+ - PB-35261: WP2-2.10 Decouple logic of update local storage, find all and get or find all in order to prepare for resource with encrypted metadata
59
+ - PB-35323: Ensure resource test factory does not contain any metadata at the root of the resource
60
+ - PB-35338: WP2-2.11 Folders update local storage should handle threshold period to limit the number of API request
61
+ - PB-35339: Review resource update service test
62
+ - PB-35340: WP2-2.12 drop resources collection sanitise dto
63
+ - PB-35341: WP2-2.13 Migrate findAll from ResourceModel into FindResourceService
64
+ - PB-35342: WP2-2.14 Leverage local storage when filtering resources by group
65
+ - PB-35344: WP2-2.15 Migrate findSuggestedResources from resource model to...
66
+ - PB-35345: WP2-2.16 Migrate findAllForShare from resource api service to FindResources service
67
+ - PB-35346: WP2-2.17 migrate find all for decrypt from resource api service to find resources service
68
+ - PB-35348: WP2-2.18 Migrate findById to the FindResourcesService
69
+ - PB-35359: WP3 Class diagram of resources types local storage HOC
70
+ - PB-35359: WP3 Update resource class diagram to support resource edit with v5
71
+ - PB-35359: Technical specifications: WP3 support v5 resource types with v4 UI
72
+ - PB-35414: WP2-2.16 Create ExecuteConcurrentlyService to perform query in parallel
73
+
74
+ ### Security
75
+ - PB-35129: Upgrade vulnerable library webpack
76
+ - PB-35354: Upgrade vulnerable library path-to-regexp
@@ -0,0 +1,47 @@
1
+ ```mermaid
2
+ %%{init: {'theme':'neutral'}}%%
3
+ graph TB
4
+ classDef condition stroke:#f96
5
+ classDef requirement stroke:#b30900
6
+ START(( ))
7
+
8
+ API_VSK[Verify server key<br>from API]
9
+ THROW_ERROR[Raise the original error]
10
+ IS_SK_VALID{{Is the server key valid?}}:::condition
11
+ CHECK_ERROR[Verify the error]
12
+ IS_HTTP_ERROR_500{{Is http error 500 or empty?}}:::condition
13
+ IS_HTTP_ERROR_NO_CONTENT{{Is an http error without content?}}:::condition
14
+ IS_NO_ASSOCIATED_USER{{Is an not associated user error?}}:::condition
15
+ REMOVE_BEXT_IFRAME[Call BEXT to remove the iframe]
16
+ CAN_PARSE_KEY{{Can parse the key?}}:::condition
17
+ IS_KEY_CHANGED{{Is server key changed?}}:::condition
18
+ IS_KEY_EXPIRED{{Is server key expired?}}:::condition
19
+ SET_CANNOT_PARSE_KEY_MESSAGE[Set error message: </br> The server key cannot be parsed.]
20
+ SET_KEY_HAS_CHANGED_MESSAGE[Set error message: </br> The server key has changed.]
21
+ SET_KEY_IS_EXPIRED_MESSAGE[Set error message: </br> The server key is expired.]
22
+ SET_GENERIC_ERROR_MESSAGE[Set error message: </br> Server internal error. Check with your administrator.]
23
+
24
+ START --> API_VSK
25
+ API_VSK -..-> IS_SK_VALID
26
+ IS_SK_VALID --> |yes|END((( )))
27
+ IS_SK_VALID --> |NO|CHECK_ERROR
28
+ CHECK_ERROR --> IS_HTTP_ERROR_500
29
+ IS_HTTP_ERROR_500 --> |yes|THROW_ERROR
30
+ IS_HTTP_ERROR_500 --> |No|IS_HTTP_ERROR_NO_CONTENT
31
+ IS_HTTP_ERROR_NO_CONTENT --> |yes|THROW_ERROR
32
+ THROW_ERROR --> ENDWITHERROR((( )))
33
+ IS_HTTP_ERROR_NO_CONTENT --> |no|IS_NO_ASSOCIATED_USER
34
+ IS_NO_ASSOCIATED_USER--> |yes|REMOVE_BEXT_IFRAME
35
+ REMOVE_BEXT_IFRAME --> ENDBYCALLINGBEXT((( )))
36
+ IS_NO_ASSOCIATED_USER--> |no|CAN_PARSE_KEY
37
+ CAN_PARSE_KEY--> |no|SET_CANNOT_PARSE_KEY_MESSAGE
38
+ SET_CANNOT_PARSE_KEY_MESSAGE --> ENDCUSTOMMESSAGEERROR((( )))
39
+ CAN_PARSE_KEY--> |yes|IS_KEY_CHANGED
40
+ IS_KEY_CHANGED--> |yes|SET_KEY_HAS_CHANGED_MESSAGE
41
+ SET_KEY_HAS_CHANGED_MESSAGE--> ENDCUSTOMMESSAGEERROR((( )))
42
+ IS_KEY_CHANGED--> |no|IS_KEY_EXPIRED
43
+ IS_KEY_EXPIRED--> |yes|SET_KEY_IS_EXPIRED_MESSAGE
44
+ SET_KEY_IS_EXPIRED_MESSAGE --> ENDCUSTOMMESSAGEERROR((( )))
45
+ IS_KEY_EXPIRED--> |no|SET_GENERIC_ERROR_MESSAGE
46
+ SET_GENERIC_ERROR_MESSAGE--> ENDCUSTOMMESSAGEERROR((( )))
47
+ ```
@@ -0,0 +1,77 @@
1
+ ```mermaid
2
+ %%{init: {'theme':'neutral'}}%%
3
+ classDiagram
4
+ namespace Event {
5
+ class UpdateFoldersLocalStoragePortMessage{
6
+ +name: "passbolt.folders.update-local-storage"
7
+ }
8
+ }
9
+
10
+ namespace FoldersController {
11
+ class UpdateAllFoldersLocalStorageController{
12
+ +exec() Promise
13
+ }
14
+ }
15
+
16
+ namespace FoldersService{
17
+ class GetOrFindFoldersService{
18
+ <<Service>>
19
+ +getOrFindAll() Promise~FolderssCollection~
20
+ }
21
+
22
+ class FindAndUpdateFoldersLocalStorageService{
23
+ <<Service>>
24
+ +findAndUpdateAll(FindAndUpdateLocalStorageOptions options) Promise~FoldersCollection~
25
+ }
26
+
27
+ class FindAndUpdateLocalStorageOptions {
28
+ updatePeriodThreshold: number
29
+ }
30
+
31
+ class FindFoldersService{
32
+ <<Service>>
33
+ +findAll(object contains, object filters) Promise~FoldersCollection~
34
+ +findAllForLocalStorage() Promise~FoldersCollection~
35
+ }
36
+ }
37
+
38
+ namespace ApiService{
39
+ class AbstractService {
40
+ <<Abstract>>
41
+ }
42
+
43
+ class FolderService {
44
+ <<Service>>
45
+ +get FOLDER_NAME() string
46
+ +getSupportedContainOptions() array$
47
+ +getSupportedFilterOptions() array$
48
+ +findAll(object contains, object filters, object orders) Promise~array~
49
+ }
50
+ }
51
+
52
+ namespace LocalStorageService{
53
+ class FoldersLocalStorageService {
54
+ <<Service>>
55
+ $hasCachedData() boolean
56
+ $flush() Promise
57
+ $get() Promise~array~
58
+ $set(FoldersCollection collection) Promise
59
+ $getFolderById(uuid id) Promise~object~
60
+ $addFolder(FolderEntity entity) Promise
61
+ $addFolders(FoldersCollection collection) Promise
62
+ $updateFolder(FolderEntity entity) Promise
63
+ $delete(uuid id) Promise
64
+ get $DEFAULT_CONTAIN() object
65
+ $assertEntityBeforeSave(FolderEntity entity)
66
+ }
67
+ }
68
+
69
+ UpdateFoldersLocalStoragePortMessage*--UpdateAllFoldersLocalStorageController
70
+ UpdateAllFoldersLocalStorageController*--FindAndUpdateFoldersLocalStorageService
71
+ FindAndUpdateFoldersLocalStorageService*--FoldersLocalStorageService
72
+ GetOrFindFoldersService*--FoldersLocalStorageService
73
+ GetOrFindFoldersService*--FindAndUpdateFoldersLocalStorageService
74
+ FindAndUpdateFoldersLocalStorageService*--FindFoldersService
75
+ FindFoldersService*--FolderService
76
+ AbstractService<|--FolderService
77
+ ```
@@ -0,0 +1,34 @@
1
+ ```mermaid
2
+ %%{init: {'theme':'neutral'}}%%
3
+ classDiagram
4
+ note for PortMessage "Permissions message listeners."
5
+ class PortMessage{
6
+ +name: "passbolt.permissions.find-aco-permissions-for-display"
7
+ }
8
+
9
+ class FindAcoPermissionsForDisplayController{
10
+ +exec(uuid acoForeignKey) PermissionsCollection
11
+ }
12
+
13
+ class FindPermissionsService{
14
+ +findAllByAcoForeignKeyForDisplay(uuid acoForeignKey) PermissionsCollection
15
+ }
16
+
17
+ note for PermissionService "/service/api/permission"
18
+ class PermissionService {
19
+ <<Service>>
20
+ +get RESOURCE_NAME() string
21
+ +getSupportedContainOptions() array$
22
+ +findAllByAcoForeignKey(uuid acoForeignKey, object contains) object
23
+ }
24
+
25
+ note for AbstractService "Abstract API service."
26
+ class AbstractService {
27
+ <<Abstract>>
28
+ }
29
+
30
+ AbstractService<|--PermissionService
31
+ FindPermissionsService*--PermissionService
32
+ FindAcoPermissionsForDisplayController*--FindPermissionsService
33
+ PortMessage*--FindAcoPermissionsForDisplayController
34
+ ```
@@ -0,0 +1,51 @@
1
+ ```mermaid
2
+ %%{init: {'theme':'neutra'}}%%
3
+ sequenceDiagram
4
+
5
+ %% Retrieve resources from LS
6
+ DecryptMetadataSvc-->>+ResourceLocalStorage: get()
7
+ ResourceLocalStorage-->>-DecryptMetadataSvc: resourcesFromLS
8
+
9
+ %% Reuse metadata from LS whenever possible
10
+ loop Foreach found resource
11
+ DecryptMetadataSvc-->>+resourcesFromLS~ResourcesCollection~: getFirst("id", resource.id)
12
+ resourcesFromLS~ResourcesCollection~-->>-DecryptMetadataSvc: resourceFromLS
13
+ DecryptMetadataSvc-->>+resource~ResourceEntity~: isModifiedAfter(resourceFromLS.modified)
14
+ resource~ResourceEntity~-->>-DecryptMetadataSvc: isMetaFromLSExpired
15
+ alt !isMetaFromLSExpired
16
+ DecryptMetadataSvc-->>resource~ResourceEntity~: set metadata(resourceFromLS.metadataClear)
17
+ end
18
+ end
19
+
20
+ %% Decrypt metadata with session key whenever possible
21
+ DecryptMetadataSvc-->>+GetOrFindSessionKeysService: getOrFindAllByForeignIds(resources.ids)
22
+ GetOrFindSessionKeysService-->>-DecryptMetadataSvc: sessionsKeys
23
+ loop Foreach found resource not yet decrypted
24
+ DecryptMetadataSvc-->>+sessionKeys~SessionKeysCollection~: getFirst("foreign_id", resource.id)
25
+ sessionKeys~SessionKeysCollection~-->>-DecryptMetadataSvc: sessionKey
26
+ alt !sessionKey
27
+ DecryptMetadataSvc-->>+DecryptMessageService: decryptWithSessionKey(resource.metadata, sessionKey)
28
+ DecryptMessageService-->>-DecryptMetadataSvc: metadataClear
29
+ DecryptMetadataSvc-->>resource~ResourceEntity~: set metadata(metadataClear)
30
+ end
31
+ end
32
+
33
+ %% Decrypt with meta key whenever possible
34
+ DecryptMetadataSvc-->>+GetOrFindMetadataKeysService: getOrFindAllByIds(resources.metadataKeysIds)
35
+ GetOrFindMetadataKeysService-->>-DecryptMetadataSvc: metadataKeys
36
+ loop Foreach found resource not yet decrypted
37
+ DecryptMetadataSvc-->>+metadataKeys~MetadataKeysCollection~: getFirst("id", resource.metadata_key_id)
38
+ metadataKeys~MetadataKeysCollection~-->>-DecryptMetadataSvc: metadataKey
39
+ alt !metadataKey
40
+ DecryptMetadataSvc-->>+DecryptMessageService: decrypt(resource.metadata, metadataKey)
41
+ DecryptMessageService-->>-DecryptMetadataSvc: metadataClear
42
+ DecryptMetadataSvc-->>resource~ResourceEntity~: set metadata(metadataClear)
43
+ end
44
+ end
45
+
46
+ loop Foreach found resource not yet decrypted
47
+ DecryptMetadataSvc-->>+DecryptMessageService: decrypt(resource.metadata, account.privateKey)
48
+ DecryptMessageService-->>-DecryptMetadataSvc: metadataClear
49
+ DecryptMetadataSvc-->>resource~ResourceEntity~: set metadata(metadataClear)
50
+ end
51
+ ```
@@ -0,0 +1,49 @@
1
+ ```mermaid
2
+ %%{init: {'theme':'neutral'}}%%
3
+ graph TB
4
+ classDef condition stroke:#f96
5
+ classDef requirement stroke:#b30900
6
+ START(( ))
7
+ API_RS[Find Resources<br>from API]
8
+ LS_API_RST[Get Resources Types<br>from LS or API]:::requirement
9
+ IS_RST_SUP{{is type supported?}}:::condition
10
+ LS_RS[Get Resources<br>from LS]:::requirement
11
+ V4_MARSH[Marshall Meta]
12
+ SS_LS_SESS_KEYS[Get Session Keys<br>from SS or LS]:::requirement
13
+ V4_MARSH[Marshall Meta]
14
+ DEC_META_SESS_KEY[Decrypt Meta <br>with Session Key]
15
+ DEC_META_USER_KEY[Decrypt Meta <br>with User Key]
16
+ SS_API_META_KEY[Get Meta Keys<br>from SS or API]:::requirement
17
+ DEC_META_META_KEY[Decrypt Meta <br>with Meta Key]
18
+ GET_PASSPHRASE[Get user passphrase]:::requirement
19
+ UPDATE_SESS_KEY[Update Session Key]
20
+ EHD_META_DECRYPTED((( )))
21
+ IS_META_UPDATED{{is Meta modified?}}:::condition
22
+ IS_META_ENCRYPTED{{is Meta encrypted?}}:::condition
23
+ IS_SESS_KEY_FOUND{{is Session Key<br>found & valid?}}:::condition
24
+ IS_RS_PERSO{{Is Rs personal}}:::condition
25
+ START --> API_RS
26
+ LS_API_RST -..-> IS_RST_SUP
27
+ API_RS --> IS_RST_SUP
28
+ IS_RST_SUP --> |no, filter out<br>resource|END_FILTER_OUT((( )))
29
+ LS_RS -..-> IS_META_UPDATED
30
+ IS_RST_SUP --> |yes|IS_META_UPDATED
31
+ IS_META_UPDATED --> |no, keep LS<br>Meta|END_META_NOT_UPDATED((( )))
32
+ IS_META_UPDATED --> |yes|IS_META_ENCRYPTED
33
+ IS_META_ENCRYPTED --> |no|V4_MARSH
34
+ V4_MARSH --> END_V4_MARSH((( )))
35
+ IS_META_ENCRYPTED --> |yes|IS_SESS_KEY_FOUND
36
+ GET_PASSPHRASE -..-> SS_LS_SESS_KEYS
37
+ SS_LS_SESS_KEYS -..-> IS_SESS_KEY_FOUND
38
+ IS_SESS_KEY_FOUND --> |yes|DEC_META_SESS_KEY
39
+ DEC_META_SESS_KEY --> EHD_META_DECRYPTED
40
+ IS_SESS_KEY_FOUND --> |no|IS_RS_PERSO
41
+ IS_RS_PERSO --> |yes|DEC_META_USER_KEY
42
+ IS_RS_PERSO --> |no|DEC_META_META_KEY
43
+ GET_PASSPHRASE -..-> DEC_META_USER_KEY
44
+ DEC_META_USER_KEY --> UPDATE_SESS_KEY
45
+ GET_PASSPHRASE -..-> SS_API_META_KEY
46
+ SS_API_META_KEY -..-> DEC_META_META_KEY
47
+ DEC_META_META_KEY --> UPDATE_SESS_KEY
48
+ UPDATE_SESS_KEY --> EHD_META_DECRYPTED
49
+ ```