passbolt-browser-extension 5.13.0 → 5.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/.devcontainer/Dockerfile +33 -3
  2. package/.devcontainer/devcontainer-lock.json +9 -0
  3. package/.devcontainer/post-start.sh +1 -2
  4. package/.github/workflows/codeql-analysis.yml +2 -1
  5. package/.github/workflows/release_candidate.yaml +3 -1
  6. package/.gitlab-ci.yml +1 -0
  7. package/CHANGELOG.md +202 -70
  8. package/CODEOWNERS +2 -0
  9. package/RELEASE_NOTES.md +4 -2
  10. package/package.json +9 -7
  11. package/renovate.json +6 -0
  12. package/src/all/background_page/controller/InformMenuController/InformMenuController.js +2 -5
  13. package/src/all/background_page/controller/InformMenuController/InformMenuController.test.js +31 -1
  14. package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.js +1 -1
  15. package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.test.js +6 -14
  16. package/src/all/background_page/controller/account/updatePrivateKeyController.js +7 -5
  17. package/src/all/background_page/controller/account/updatePrivateKeyController.test.js +18 -13
  18. package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.js +4 -2
  19. package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.test.js +25 -2
  20. package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.js +1 -1
  21. package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.test.js +10 -5
  22. package/src/all/background_page/controller/accountRecovery/recoverAccountController.js +6 -2
  23. package/src/all/background_page/controller/accountRecovery/recoverAccountController.test.js +11 -4
  24. package/src/all/background_page/controller/auth/authCheckStatus.test.data.js +6 -6
  25. package/src/all/background_page/controller/auth/authCheckStatusController.js +11 -3
  26. package/src/all/background_page/controller/auth/authCheckStatusController.test.js +74 -44
  27. package/src/all/background_page/controller/auth/authIsMfaRequiredController.js +11 -3
  28. package/src/all/background_page/controller/auth/authIsMfaRequiredController.test.js +18 -9
  29. package/src/all/background_page/controller/auth/authLoginController.js +1 -1
  30. package/src/all/background_page/controller/auth/authLoginController.test.js +10 -5
  31. package/src/all/background_page/controller/autofill/AutofillController.js +3 -3
  32. package/src/all/background_page/controller/autofill/AutofillController.test.js +20 -12
  33. package/src/all/background_page/controller/export/exportResourcesFileController.js +6 -3
  34. package/src/all/background_page/controller/export/exportResourcesFileController.test.js +34 -4
  35. package/src/all/background_page/controller/extension/onExtensionInstalledController.js +8 -2
  36. package/src/all/background_page/controller/extension/onExtensionInstalledController.test.js +5 -1
  37. package/src/all/background_page/controller/group/{getOrFindGroupsController.js → findGroupsByIdsForShareController.js} +9 -10
  38. package/src/all/background_page/controller/group/{getOrFindGroupsController.test.js → findGroupsByIdsForShareController.test.js} +8 -8
  39. package/src/all/background_page/controller/group/groupUpdateController.test.js +1 -0
  40. package/src/all/background_page/controller/import/importResourcesFileController.test.js +8 -1
  41. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.js +2 -2
  42. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.test.js +7 -4
  43. package/src/all/background_page/controller/locale/getLocaleController.js +3 -2
  44. package/src/all/background_page/controller/metadata/findMetadataTypesSettingsController.test.js +9 -15
  45. package/src/all/background_page/controller/metadata/getMetadataTypesSettingsController.test.js +9 -15
  46. package/src/all/background_page/controller/metadata/getOrFindMetadataKeysSettingsController.test.js +12 -22
  47. package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.test.js +14 -2
  48. package/src/all/background_page/controller/move/moveFolderController.test.js +8 -0
  49. package/src/all/background_page/controller/move/moveResourcesController.test.js +8 -0
  50. package/src/all/background_page/controller/passwordExpiry/getOrFindPasswordExpirySettingsController.test.js +13 -8
  51. package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.js +4 -4
  52. package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.test.js +8 -10
  53. package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.js +62 -0
  54. package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.test.js +71 -0
  55. package/src/all/background_page/controller/recover/generateRecoverAccountRecoveryRequestKeyController.js +1 -1
  56. package/src/all/background_page/controller/resource/resourceCreateController.js +11 -4
  57. package/src/all/background_page/controller/resource/resourceCreateController.test.js +12 -1
  58. package/src/all/background_page/controller/resource/resourceUpdateController.js +11 -4
  59. package/src/all/background_page/controller/resource/resourceUpdateController.test.js +35 -2
  60. package/src/all/background_page/controller/resourceType/getResourceTypesController.js +5 -4
  61. package/src/all/background_page/controller/resourceType/getResourceTypesController.test.js +5 -2
  62. package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.js +3 -2
  63. package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.test.js +16 -3
  64. package/src/all/background_page/controller/secret/findSecretByResourceIdController.js +3 -3
  65. package/src/all/background_page/controller/secret/findSecretByResourceIdController.test.js +24 -0
  66. package/src/all/background_page/controller/secretRevision/findResourceSecretRevisionsForDisplayController.js +2 -1
  67. package/src/all/background_page/controller/setup/generateSetupKeyPairController.js +6 -3
  68. package/src/all/background_page/controller/setup/generateSetupKeyPairController.test.js +11 -1
  69. package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.js +1 -1
  70. package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.test.js +14 -18
  71. package/src/all/background_page/controller/setup/setSetupLocaleController.js +1 -1
  72. package/src/all/background_page/controller/setup/setSetupLocaleController.test.js +6 -10
  73. package/src/all/background_page/controller/setup/signInSetupController.js +6 -2
  74. package/src/all/background_page/controller/setup/signInSetupController.test.js +10 -5
  75. package/src/all/background_page/controller/share/shareOneFolderController.test.js +8 -0
  76. package/src/all/background_page/controller/share/shareResourcesController.test.js +9 -1
  77. package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.js +59 -0
  78. package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.test.js +150 -0
  79. package/src/all/background_page/controller/{group/getOrFindGroupsUsersController.js → user/getOrFindAllUsersController.js} +12 -17
  80. package/src/all/background_page/controller/user/getOrFindAllUsersController.test.js +55 -0
  81. package/src/all/background_page/controller/user/getOrFindLoggedInUserController.js +3 -3
  82. package/src/all/background_page/controller/user/getOrFindLoggedInUserController.test.js +19 -15
  83. package/src/all/background_page/controller/user/updateUserLocalStorageController.test.js +8 -5
  84. package/src/all/background_page/event/accountRecoveryEvents.js +4 -4
  85. package/src/all/background_page/event/appEvents.js +7 -2
  86. package/src/all/background_page/event/authEvents.js +2 -2
  87. package/src/all/background_page/event/groupEvents.js +4 -17
  88. package/src/all/background_page/event/informCallToActionEvents.js +1 -1
  89. package/src/all/background_page/event/informMenuEvents.js +1 -1
  90. package/src/all/background_page/event/localeEvents.js +4 -3
  91. package/src/all/background_page/event/permissionEvents.js +13 -0
  92. package/src/all/background_page/event/recoverEvents.js +4 -4
  93. package/src/all/background_page/event/resourceEvents.js +6 -15
  94. package/src/all/background_page/event/resourceTypeEvents.js +4 -3
  95. package/src/all/background_page/event/setupEvents.js +4 -4
  96. package/src/all/background_page/event/siteSettingsEvents.js +29 -0
  97. package/src/all/background_page/event/userEvents.js +4 -8
  98. package/src/all/background_page/index.js +0 -37
  99. package/src/all/background_page/model/entity/account/abstractAccountEntity.js +2 -2
  100. package/src/all/background_page/model/entity/account/accountAccountRecoveryEntity.js +7 -17
  101. package/src/all/background_page/model/entity/account/accountEntity.js +7 -14
  102. package/src/all/background_page/model/entity/account/accountKitEntity.js +1 -2
  103. package/src/all/background_page/model/entity/account/accountRecoverEntity.js +4 -14
  104. package/src/all/background_page/model/entity/account/accountSetupEntity.js +4 -14
  105. package/src/all/background_page/model/entity/account/accountTemporaryEntity.js +2 -5
  106. package/src/all/background_page/model/entity/gpgkey/generate/generateGpgKeyPairOptionsEntity.test.js +5 -5
  107. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.js +49 -0
  108. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.data.js +23 -0
  109. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.js +51 -0
  110. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.js → siteSettings/siteSettingsEntity.js} +17 -24
  111. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.data.js → siteSettings/siteSettingsEntity.test.data.js} +9 -9
  112. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.js → siteSettings/siteSettingsEntity.test.js} +30 -39
  113. package/src/all/background_page/model/entity/user/userEntity.test.js +6 -6
  114. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +40 -3
  115. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.test.js +122 -0
  116. package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.js +1 -1
  117. package/src/all/background_page/model/locale/localeModel.js +13 -8
  118. package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.js +6 -6
  119. package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.test.js +3 -2
  120. package/src/all/background_page/model/resource/resourceModel.js +4 -4
  121. package/src/all/background_page/model/user/userModel.js +7 -28
  122. package/src/all/background_page/model/user/userModel.test.js +51 -99
  123. package/src/all/background_page/pagemod/appBootstrapPagemod.js +4 -1
  124. package/src/all/background_page/pagemod/appBootstrapPagemod.test.js +5 -2
  125. package/src/all/background_page/pagemod/appPagemod.js +32 -6
  126. package/src/all/background_page/pagemod/appPagemod.test.js +22 -10
  127. package/src/all/background_page/pagemod/authPagemod.js +2 -10
  128. package/src/all/background_page/pagemod/authPagemod.test.js +4 -4
  129. package/src/all/background_page/pagemod/pagemodManager.test.js +5 -2
  130. package/src/all/background_page/pagemod/quickAccessPagemod.js +2 -2
  131. package/src/all/background_page/pagemod/quickAccessPagemod.test.js +4 -4
  132. package/src/all/background_page/pagemod/recoverPagemod.js +2 -2
  133. package/src/all/background_page/pagemod/recoverPagemod.test.js +6 -0
  134. package/src/all/background_page/pagemod/setupPagemod.js +2 -2
  135. package/src/all/background_page/pagemod/setupPagemod.test.js +6 -0
  136. package/src/all/background_page/pagemod/webIntegrationPagemod.js +21 -2
  137. package/src/all/background_page/pagemod/webIntegrationPagemod.test.js +16 -25
  138. package/src/all/background_page/service/account/getActiveAccountService.js +2 -3
  139. package/src/all/background_page/service/account/getLegacyAccountService.js +3 -14
  140. package/src/all/background_page/service/account/updateSsoCredentialsService.js +9 -5
  141. package/src/all/background_page/service/api/group/groupApiService.js +9 -16
  142. package/src/all/background_page/service/api/group/groupApiService.test.js +59 -26
  143. package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.js +46 -0
  144. package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.test.js +63 -0
  145. package/src/all/background_page/service/auth/checkAuthStatusService.js +27 -14
  146. package/src/all/background_page/service/auth/checkAuthStatusService.test.js +80 -62
  147. package/src/all/background_page/service/auth/postLoginService.js +3 -3
  148. package/src/all/background_page/service/auth/postLoginService.test.js +4 -4
  149. package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.js +5 -1
  150. package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.test.js +14 -8
  151. package/src/all/background_page/service/authenticationStatusService.js +13 -18
  152. package/src/all/background_page/service/authenticationStatusService.test.js +9 -6
  153. package/src/all/background_page/service/crypto/generateGpgKeyPairService.test.js +5 -5
  154. package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.js +7 -6
  155. package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.test.js +10 -7
  156. package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.js +7 -2
  157. package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.test.js +5 -5
  158. package/src/all/background_page/service/group/findGroupsService.js +42 -1
  159. package/src/all/background_page/service/group/findGroupsService.test.js +82 -0
  160. package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.js +82 -0
  161. package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.test.js +102 -0
  162. package/src/all/background_page/service/group/groupUpdateService.js +49 -78
  163. package/src/all/background_page/service/group/groupUpdateService.test.js +136 -0
  164. package/src/all/background_page/service/localStorage/localStorageService.js +8 -6
  165. package/src/all/background_page/service/localStorage/localStorageService.test.js +33 -15
  166. package/src/all/background_page/service/local_storage/abstractLocalStorage.js +193 -0
  167. package/src/all/background_page/service/local_storage/abstractLocalStorage.test.data.js +45 -0
  168. package/src/all/background_page/service/local_storage/abstractLocalStorage.test.js +271 -0
  169. package/src/all/background_page/service/local_storage/activeSessionLocalStorage.js +105 -0
  170. package/src/all/background_page/service/local_storage/activeSessionLocalStorage.test.js +153 -0
  171. package/src/all/background_page/service/local_storage/rbacLocalStorage.js +10 -82
  172. package/src/all/background_page/service/local_storage/rbacLocalStorage.test.js +8 -8
  173. package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.js +10 -43
  174. package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.test.js +68 -0
  175. package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.js +104 -0
  176. package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.test.js +114 -0
  177. package/src/all/background_page/service/local_storage/userMeLocalStorage.js +50 -0
  178. package/src/all/background_page/service/{sessionStorage/userMeSessionStorageService.test.js → local_storage/userMeLocalStorage.test.js} +55 -36
  179. package/src/all/background_page/service/metadata/encryptMetadataService.js +3 -3
  180. package/src/all/background_page/service/metadata/encryptMetadataService.test.js +11 -11
  181. package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.js +4 -4
  182. package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.test.js +18 -16
  183. package/src/all/background_page/service/metadata/getOrFindMetadataSettingsService.test.js +6 -8
  184. package/src/all/background_page/service/metadata/rotateMetadata/rotateResourcesMetadataKeyService.test.js +4 -4
  185. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.js +3 -3
  186. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.test.js +1 -1
  187. package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.js +4 -4
  188. package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.test.js +9 -7
  189. package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.js +4 -4
  190. package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.test.js +6 -6
  191. package/src/all/background_page/service/rbac/findAndUpdateRbacsLocalStorageService.js +2 -2
  192. package/src/all/background_page/service/rbac/getOrFindRbacService.js +1 -1
  193. package/src/all/background_page/service/resource/create/resourceCreateService.js +41 -51
  194. package/src/all/background_page/service/resource/create/resourceCreateService.test.js +100 -98
  195. package/src/all/background_page/service/resource/export/exportResourcesService.js +7 -7
  196. package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.js +4 -4
  197. package/src/all/background_page/service/resource/findResourcesService.js +13 -16
  198. package/src/all/background_page/service/resource/findResourcesService.test.js +12 -11
  199. package/src/all/background_page/service/resource/getOrFindResourcesService.js +3 -3
  200. package/src/all/background_page/service/resource/import/ImportResourcesService.js +9 -9
  201. package/src/all/background_page/service/resource/import/ImportResourcesService.test.js +30 -15
  202. package/src/all/background_page/service/resource/update/resourceUpdateService.js +38 -19
  203. package/src/all/background_page/service/resource/update/resourceUpdateService.test.js +64 -31
  204. package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.js +49 -0
  205. package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.test.js +61 -0
  206. package/src/all/background_page/service/resourceType/getSecretSchemaResourceTypeService.js +44 -0
  207. package/src/all/background_page/service/resourceType/updateResourceTypesService.js +6 -4
  208. package/src/all/background_page/service/resourceType/updateResourceTypesService.test.js +19 -14
  209. package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.js +5 -4
  210. package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.test.js +16 -9
  211. package/src/all/background_page/service/share/shareResourceService.js +4 -4
  212. package/src/all/background_page/service/share/shareResourceService.test.js +6 -6
  213. package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.js +77 -0
  214. package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.test.js +130 -0
  215. package/src/all/background_page/service/siteSettings/findSiteSettingsService.js +47 -0
  216. package/src/all/background_page/service/siteSettings/findSiteSettingsService.test.js +68 -0
  217. package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.js +84 -0
  218. package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.test.js +175 -0
  219. package/src/all/background_page/service/siteSettings/siteSettingsRuntimeCache.js +70 -0
  220. package/src/all/background_page/service/sso/generateSsoKitService.test.js +2 -2
  221. package/src/all/background_page/service/toolbar/toolbarService.js +6 -4
  222. package/src/all/background_page/service/toolbar/toolbarService.test.js +14 -13
  223. package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.js +4 -4
  224. package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.test.js +3 -3
  225. package/src/all/background_page/service/user/getOrFindMeService.js +64 -0
  226. package/src/all/background_page/service/user/getOrFindMeService.test.js +65 -0
  227. package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.js +5 -4
  228. package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.test.js +12 -11
  229. package/src/all/background_page/service/validator/appEmailValidatorService.js +11 -6
  230. package/src/all/background_page/service/validator/appEmailValidatorService.test.js +11 -11
  231. package/src/all/common/polyfill/browserPolyfill.js +8 -8
  232. package/src/all/locales/cs-CZ/common.json +1 -4
  233. package/src/all/locales/de-DE/common.json +1 -4
  234. package/src/all/locales/en-UK/common.json +0 -3
  235. package/src/all/locales/es-ES/common.json +1 -4
  236. package/src/all/locales/fr-FR/common.json +1 -4
  237. package/src/all/locales/it-IT/common.json +1 -4
  238. package/src/all/locales/ja-JP/common.json +1 -4
  239. package/src/all/locales/ko-KR/common.json +0 -3
  240. package/src/all/locales/lt-LT/common.json +1 -4
  241. package/src/all/locales/nl-NL/common.json +1 -4
  242. package/src/all/locales/pl-PL/common.json +1 -4
  243. package/src/all/locales/pt-BR/common.json +1 -4
  244. package/src/all/locales/ro-RO/common.json +1 -4
  245. package/src/all/locales/ru-RU/common.json +1 -4
  246. package/src/all/locales/sl-SI/common.json +1 -4
  247. package/src/all/locales/sv-SE/common.json +1 -4
  248. package/src/all/locales/uk-UA/common.json +1 -4
  249. package/src/all/webAccessibleResources/js/app/QuickAccess.js +7 -0
  250. package/src/chrome/manifest.json +1 -1
  251. package/src/chrome-mv3/manifest.json +1 -1
  252. package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.js +132 -0
  253. package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.test.js +125 -0
  254. package/src/chrome-mv3/offscreens/service/offscreen/handleOffscreenRequestService.js +4 -0
  255. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.js +83 -0
  256. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.test.js +116 -0
  257. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.js +99 -0
  258. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.data.js +45 -0
  259. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.js +87 -0
  260. package/src/chrome-mv3/serviceWorker/service/network/requestFetchOffscreenService.js +0 -1
  261. package/src/chrome-mv3/serviceWorker/service/offscreen/handleOffscreenResponseService.js +15 -0
  262. package/src/firefox/manifest.json +1 -1
  263. package/src/safari/background_page/index.js +0 -37
  264. package/src/safari/common/polyfill/safariBrowserPolyfill.js +10 -10
  265. package/src/safari/manifest.json +1 -1
  266. package/test/jest.setup.js +4 -2
  267. package/src/all/background_page/controller/group/getOrFindGroupsUsersController.test.js +0 -69
  268. package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.js +0 -55
  269. package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.test.js +0 -45
  270. package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.js +0 -76
  271. package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.test.js +0 -102
  272. package/src/all/background_page/event/organizationSettingsEvents.js +0 -37
  273. package/src/all/background_page/model/organizationSettings/organizationSettingsModel.js +0 -93
  274. package/src/all/background_page/model/resourceType/resourceTypeModel.js +0 -72
  275. package/src/all/background_page/model/resourceType/resourceTypeModel.test.js +0 -101
  276. package/src/all/background_page/service/api/organizationSettings/organizationSettingsService.js +0 -58
  277. package/src/all/background_page/service/group/getOrFindGroupsService.js +0 -65
  278. package/src/all/background_page/service/group/getOrFindGroupsService.test.js +0 -168
  279. package/src/all/background_page/service/group/getOrFindGroupsUsersService.js +0 -51
  280. package/src/all/background_page/service/group/getOrFindGroupsUsersService.test.js +0 -94
  281. package/src/all/background_page/service/local_storage/authStatusLocalStorage.js +0 -70
  282. package/src/all/background_page/service/sessionStorage/userMeSessionStorageService.js +0 -94
@@ -1,45 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since 3.6.0
13
- */
14
-
15
- import { enableFetchMocks } from "jest-fetch-mock";
16
- import { mockApiResponse } from "../../../../../test/mocks/mockApiResponse";
17
- import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
18
- import { anonymousOrganizationSettings } from "../../model/entity/organizationSettings/organizationSettingsEntity.test.data";
19
- import GetOrganizationSettingsController from "./getOrganizationSettingsController";
20
-
21
- beforeEach(() => {
22
- enableFetchMocks();
23
- });
24
-
25
- describe("GetOrganizationSettingsController", () => {
26
- describe("GetOrganizationSettingsController::exec", () => {
27
- it("Should retrieve the organization settings.", async () => {
28
- jest.useFakeTimers();
29
- const timeDiff = 3600000;
30
- // Mock API fetch account recovery organization policy response.
31
- const servertime = new Date().getTime() + timeDiff;
32
- const mockApiResult = anonymousOrganizationSettings();
33
- fetch.doMock(() => mockApiResponse(mockApiResult, { servertime: servertime / 1000 }));
34
-
35
- const controller = new GetOrganizationSettingsController(null, null, defaultApiClientOptions());
36
- const organizationSettings = await controller.exec();
37
-
38
- expect.assertions(1);
39
- const settingsDto = organizationSettings.toDto();
40
-
41
- mockApiResult.serverTimeDiff = timeDiff;
42
- await expect(settingsDto).toEqual(mockApiResult);
43
- });
44
- });
45
- });
@@ -1,76 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) Passbolt SA (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since 4.10.1
13
- */
14
- import { assertArrayUUID } from "../../utils/assertions";
15
- import FindResourcesService from "../../service/resource/findResourcesService";
16
- import GetPassphraseService from "../../service/passphrase/getPassphraseService";
17
- import UserPassphraseRequiredError from "passbolt-styleguide/src/shared/error/userPassphraseRequiredError";
18
-
19
- class FindAllByIdsForDisplayPermissionsController {
20
- /**
21
- * Constructor.
22
- * @param {Worker} worker The associated worker.
23
- * @param {string} requestId The associated request id.
24
- * @param {ApiClientOptions} apiClientOptions The api client options.
25
- * @param {AccountEntity} account The user account
26
- */
27
- constructor(worker, requestId, apiClientOptions, account) {
28
- this.worker = worker;
29
- this.requestId = requestId;
30
- this.findResourcesService = new FindResourcesService(account, apiClientOptions);
31
- this.getPassphraseService = new GetPassphraseService(account);
32
- }
33
-
34
- /**
35
- * Controller executor.
36
- * @param {Array<string>} resourceIds The resources ids
37
- * @returns {Promise<void>}
38
- */
39
- async _exec(resourceIds) {
40
- try {
41
- const result = await this.exec(resourceIds);
42
- this.worker.port.emit(this.requestId, "SUCCESS", result);
43
- } catch (error) {
44
- console.error(error);
45
- this.worker.port.emit(this.requestId, "ERROR", error);
46
- }
47
- }
48
-
49
- /**
50
- * Find the resource to display the permissions for.
51
- * @param {Array<string>} resourceIds The resources ids
52
- * @returns {Promise<ResourcesCollection>}
53
- */
54
- async exec(resourceIds) {
55
- assertArrayUUID(resourceIds);
56
-
57
- try {
58
- /**
59
- * Try to fetch the resources.
60
- * If the user passphrase is required but not in sessionStorage, prompt the user. The passphrase is needed when:
61
- * 1. the metadata could be decrypted with a metadata session key, but the session keys are themselves encrypted;
62
- * 2. the metadata is encrypted with the shared‑metadata key, but this one is not yet decrypted in the session storage;
63
- * 3. the metadata is encrypted with the user’s private key.
64
- */
65
- return await this.findResourcesService.findAllByIdsForDisplayPermissions(resourceIds);
66
- } catch (error) {
67
- if (!(error instanceof UserPassphraseRequiredError)) {
68
- throw error;
69
- }
70
- const passphrase = await this.getPassphraseService.getPassphrase(this.worker, 60);
71
- return this.findResourcesService.findAllByIdsForDisplayPermissions(resourceIds, passphrase);
72
- }
73
- }
74
- }
75
-
76
- export default FindAllByIdsForDisplayPermissionsController;
@@ -1,102 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) Passbolt SA (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since 4.10.1
13
- */
14
-
15
- import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
16
- import AccountEntity from "../../model/entity/account/accountEntity";
17
- import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
18
- import { multipleResourceDtos } from "../../service/resource/findResourcesService.test.data";
19
- import FindAllByIdsForDisplayPermissionsController from "./findAllByIdsForDisplayPermissionsController";
20
- import ResourcesCollection from "../../model/entity/resource/resourcesCollection";
21
- import { pgpKeys } from "passbolt-styleguide/test/fixture/pgpKeys/keys";
22
- import { v4 as uuidv4 } from "uuid";
23
- import { TEST_RESOURCE_TYPE_V5_DEFAULT } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypeEntity.test.data";
24
- import { METADATA_KEY_TYPE_USER_KEY } from "../../model/entity/resource/resourceEntity";
25
- import { defaultResourceDto } from "passbolt-styleguide/src/shared/models/entity/resource/resourceEntity.test.data";
26
- import { metadata } from "passbolt-styleguide/test/fixture/encryptedMetadata/metadata";
27
- import { mockPassboltResponse } from "passbolt-styleguide/test/mocks/mockApiResponse";
28
-
29
- describe("FindAllByIdsForDisplayPermissionsController", () => {
30
- let controller, worker;
31
-
32
- beforeEach(() => {
33
- worker = {
34
- port: {
35
- emit: jest.fn(),
36
- },
37
- };
38
- const account = new AccountEntity(defaultAccountDto());
39
- const apiClientOptions = defaultApiClientOptions();
40
- controller = new FindAllByIdsForDisplayPermissionsController(worker, null, apiClientOptions, account);
41
- });
42
-
43
- describe("::exec", () => {
44
- it("should return the resource collection associated to the resource ids", async () => {
45
- expect.assertions(3);
46
-
47
- const resourcesDto = multipleResourceDtos();
48
- const resourceIds = resourcesDto.map((resource) => resource.id);
49
- jest
50
- .spyOn(controller.findResourcesService.resourceService, "findAll")
51
- .mockImplementation(() => mockPassboltResponse(resourcesDto));
52
- jest
53
- .spyOn(controller.findResourcesService.decryptMetadataService, "decryptAllFromForeignModels")
54
- .mockImplementation((collection) => collection);
55
- jest.spyOn(controller.getPassphraseService, "getPassphrase");
56
-
57
- const result = await controller.exec(resourceIds);
58
- expect(controller.getPassphraseService.getPassphrase).not.toHaveBeenCalled();
59
- expect(result).toEqual(new ResourcesCollection(resourcesDto));
60
- expect(controller.findResourcesService.resourceService.findAll).toHaveBeenCalledWith(
61
- { permission: true, "permissions.group": true, "permissions.user.profile": true },
62
- { "has-id": resourceIds },
63
- );
64
- });
65
-
66
- it("requests the user passphrase whenever the decryption of the metadata requires it and try to load the data again", async () => {
67
- expect.assertions(3);
68
-
69
- const resourcesDto = [
70
- defaultResourceDto({
71
- resource_type_id: TEST_RESOURCE_TYPE_V5_DEFAULT,
72
- metadata_key_type: METADATA_KEY_TYPE_USER_KEY,
73
- metadata_key_id: uuidv4(),
74
- metadata: metadata.withAdaKey.encryptedMetadata[0],
75
- }),
76
- ];
77
- const resourceIds = resourcesDto.map((resource) => resource.id);
78
- jest
79
- .spyOn(controller.findResourcesService.resourceService, "findAll")
80
- .mockImplementation(() => mockPassboltResponse(resourcesDto));
81
-
82
- jest.spyOn(controller.getPassphraseService, "getPassphrase").mockReturnValue(pgpKeys.ada.passphrase);
83
-
84
- const result = await controller.exec(resourceIds);
85
- expect(controller.getPassphraseService.getPassphrase).toHaveBeenCalledTimes(1);
86
- const expectedResourcesDto = JSON.parse(JSON.stringify(resourcesDto));
87
- expectedResourcesDto[0].metadata = metadata.withAdaKey.decryptedMetadata[0];
88
- expectedResourcesDto[0].metadata.description = ""; // Encrypted and decrypted dummy data are not equivalent.
89
- expectedResourcesDto[0].metadata.username = "shared@passbolt.com"; // Encrypted and decrypted dummy data are not equivalent.
90
- expect(result.toDto()).toEqual(expectedResourcesDto);
91
- expect(controller.findResourcesService.resourceService.findAll).toHaveBeenCalledTimes(2);
92
- });
93
-
94
- it("should throw an error if the resource id array is not an array of uuid", async () => {
95
- expect.assertions(1);
96
-
97
- const promise = controller.exec([1]);
98
-
99
- await expect(promise).rejects.toThrow("The given parameter is not a valid array of uuid");
100
- });
101
- });
102
- });
@@ -1,37 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) Passbolt SARL (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) Passbolt SARL (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since 3.2.0
13
- */
14
- import User from "../model/user";
15
- import OrganizationSettingsModel from "../model/organizationSettings/organizationSettingsModel";
16
-
17
- const listen = function (worker) {
18
- /*
19
- * Get the organization settings.
20
- *
21
- * @listens passbolt.organization-settings.get
22
- * @param requestId {uuid} The request identifier
23
- * @param refreshCache {boolean} Should refresh the cache, default true
24
- */
25
- worker.port.on("passbolt.organization-settings.get", async (requestId, refreshCache = true) => {
26
- try {
27
- const apiClientOptions = await User.getInstance().getApiClientOptions();
28
- const organizationSettingsModel = new OrganizationSettingsModel(apiClientOptions);
29
- const organizationSettings = await organizationSettingsModel.getOrFind(refreshCache);
30
- worker.port.emit(requestId, "SUCCESS", organizationSettings);
31
- } catch (error) {
32
- console.error(error);
33
- worker.port.emit(requestId, "ERROR", error);
34
- }
35
- });
36
- };
37
- export const OrganizationSettingsEvents = { listen };
@@ -1,93 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) Passbolt SA (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since 3.2.0
13
- */
14
- import OrganizationSettingsService from "../../service/api/organizationSettings/organizationSettingsService";
15
- import OrganizationSettingsEntity from "../entity/organizationSettings/organizationSettingsEntity";
16
- import PassboltApiFetchError from "passbolt-styleguide/src/shared/lib/Error/PassboltApiFetchError";
17
-
18
- // Settings local cache.
19
- let _settings;
20
-
21
- /**
22
- * Organization settings model.
23
- */
24
- class OrganizationSettingsModel {
25
- /**
26
- * Constructor
27
- *
28
- * @param {ApiClientOptions} apiClientOptions
29
- * @public
30
- */
31
- constructor(apiClientOptions) {
32
- this.organizationSettingsService = new OrganizationSettingsService(apiClientOptions);
33
- }
34
-
35
- /**
36
- * Set the settings.
37
- * @params {OrganizationSettingsEntity} settings The settings
38
- */
39
- static set(settings) {
40
- if (!(settings instanceof OrganizationSettingsEntity)) {
41
- throw new Error("The settings should be an instance of OrganizationSettingsEntity");
42
- }
43
- _settings = settings;
44
- }
45
-
46
- /**
47
- * get the cached settings if any.
48
- * @return {OrganizationSettingsEntity|null}
49
- */
50
- static get() {
51
- return _settings || null;
52
- }
53
-
54
- /**
55
- * Returns the organization settings from the local cache or requests the server.
56
- * @param {boolean} refreshCache Should request the API to retrieve the organization settings and refresh the cache.
57
- * Default false
58
- * @returns {Promise<OrganizationSettingsEntity>}
59
- */
60
- async getOrFind(refreshCache = false) {
61
- if (refreshCache || !_settings) {
62
- _settings = await this.find();
63
- }
64
- return _settings;
65
- }
66
-
67
- /**
68
- * Flush the settings cache
69
- */
70
- static flushCache() {
71
- _settings = null;
72
- }
73
-
74
- /**
75
- * Find the organization settings.
76
- * @returns {Promise<OrganizationSettingsEntity>}
77
- */
78
- async find() {
79
- let organizationSettingsDto;
80
-
81
- try {
82
- organizationSettingsDto = await this.organizationSettingsService.find();
83
- } catch (error) {
84
- // When the cloud organization is disabled or not found, the cloud API returns a 403.
85
- if (error instanceof PassboltApiFetchError && error?.data?.code === 403) {
86
- organizationSettingsDto = OrganizationSettingsEntity.disabledOrganizationSettings;
87
- }
88
- }
89
- return new OrganizationSettingsEntity(organizationSettingsDto);
90
- }
91
- }
92
-
93
- export default OrganizationSettingsModel;
@@ -1,72 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) Passbolt SA (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since v3.0.0
13
- */
14
- import ResourceTypeLocalStorage from "../../service/local_storage/resourceTypeLocalStorage";
15
- import ResourceTypeService from "../../service/api/resourceType/resourceTypeService";
16
- import ResourceTypesCollection from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypesCollection";
17
- import { assertUuid } from "../../utils/assertions";
18
-
19
- class ResourceTypeModel {
20
- /**
21
- * Constructor
22
- *
23
- * @param {ApiClientOptions} apiClientOptions
24
- * @public
25
- */
26
- constructor(apiClientOptions) {
27
- this.resourceTypeService = new ResourceTypeService(apiClientOptions);
28
- }
29
-
30
- /**
31
- * Update the resourceTypes local storage with the latest API resourceTypes the user has access.
32
- *
33
- * @returns {Promise<ResourceTypesCollection>}
34
- * @private
35
- */
36
- async updateLocalStorage() {
37
- const resourceTypeDtos = await this.resourceTypeService.findAll();
38
- const resourceTypesCollection = new ResourceTypesCollection(resourceTypeDtos);
39
- await ResourceTypeLocalStorage.set(resourceTypesCollection);
40
- return resourceTypesCollection;
41
- }
42
-
43
- /**
44
- * Get a collection of all resourceTypes from the local storage.
45
- * If the local storage is unset, initialize it.
46
- *
47
- * @return {Promise<ResourceTypesCollection>}
48
- */
49
- async getOrFindAll() {
50
- const resourceTypeDtos = await ResourceTypeLocalStorage.get();
51
- if (typeof resourceTypeDtos !== "undefined") {
52
- return new ResourceTypesCollection(resourceTypeDtos);
53
- }
54
- return this.updateLocalStorage();
55
- }
56
-
57
- /**
58
- * Return the secret section of the schema definition for a given resource type id
59
- *
60
- * @param {string} resourceTypeId uuid
61
- * @returns {Promise<Object|undefined>}
62
- */
63
- async getSecretSchemaById(resourceTypeId) {
64
- assertUuid(resourceTypeId, "The resource type id should be a valid UUID");
65
-
66
- const types = await this.getOrFindAll();
67
- const type = types.getFirst("id", resourceTypeId);
68
- return type?.definition?.secret;
69
- }
70
- }
71
-
72
- export default ResourceTypeModel;
@@ -1,101 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) Passbolt SA (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since 4.9.4
13
- */
14
-
15
- import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
16
- import { enableFetchMocks } from "jest-fetch-mock";
17
- import { resourceTypesCollectionDto } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypesCollection.test.data";
18
- import ResourceTypeModel from "./resourceTypeModel";
19
- import ResourceTypeLocalStorage from "../../service/local_storage/resourceTypeLocalStorage";
20
- import { resourceTypePasswordDescriptionTotpDto } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypeEntity.test.data";
21
-
22
- beforeEach(() => {
23
- enableFetchMocks();
24
- });
25
-
26
- describe("ResourceTypeModel", () => {
27
- let resourceTypeModel;
28
-
29
- beforeEach(() => {
30
- resourceTypeModel = new ResourceTypeModel(defaultApiClientOptions());
31
- jest.spyOn(ResourceTypeLocalStorage, "set").mockImplementation(jest.fn());
32
- });
33
-
34
- describe("::getOrFindAll", () => {
35
- it("Should get resource types from local storage", async () => {
36
- expect.assertions(3);
37
-
38
- jest.spyOn(resourceTypeModel.resourceTypeService, "findAll");
39
- jest.spyOn(ResourceTypeLocalStorage, "get").mockImplementationOnce(() => resourceTypesCollectionDto());
40
-
41
- const resourceTypeCollection = await resourceTypeModel.getOrFindAll();
42
-
43
- expect(resourceTypeModel.resourceTypeService.findAll).toHaveBeenCalledTimes(0);
44
- expect(resourceTypeCollection.toDto()).toEqual(resourceTypesCollectionDto());
45
- expect(ResourceTypeLocalStorage.set).toHaveBeenCalledTimes(0);
46
- });
47
-
48
- it("Should find resource types from api call", async () => {
49
- expect.assertions(4);
50
- jest
51
- .spyOn(resourceTypeModel.resourceTypeService, "findAll")
52
- .mockImplementationOnce(() => resourceTypesCollectionDto());
53
-
54
- const resourceTypeCollection = await resourceTypeModel.getOrFindAll();
55
-
56
- expect(resourceTypeModel.resourceTypeService.findAll).toHaveBeenCalledTimes(1);
57
- expect(resourceTypeCollection.toDto()).toEqual(resourceTypesCollectionDto());
58
- expect(ResourceTypeLocalStorage.set).toHaveBeenCalledTimes(1);
59
- expect(ResourceTypeLocalStorage.set).toHaveBeenCalledWith(resourceTypeCollection);
60
- });
61
- });
62
-
63
- describe("::getSecretSchemaById", () => {
64
- it("Should return the right secret schema based on the resource type id", async () => {
65
- expect.assertions(1);
66
-
67
- const availableResourceType = resourceTypesCollectionDto();
68
- jest.spyOn(ResourceTypeLocalStorage, "get").mockImplementationOnce(() => availableResourceType);
69
-
70
- const expectedResourceType = availableResourceType.find((rt) => rt.slug === "password-description-totp");
71
-
72
- const secretSchema = await resourceTypeModel.getSecretSchemaById(expectedResourceType.id);
73
- const expectedSchema = resourceTypePasswordDescriptionTotpDto().definition.secret;
74
-
75
- expect(secretSchema).toStrictEqual(expectedSchema);
76
- });
77
-
78
- it("Should find the data from the API before returning the right secret schema based", async () => {
79
- expect.assertions(1);
80
-
81
- const availableResourceType = resourceTypesCollectionDto();
82
- jest.spyOn(ResourceTypeLocalStorage, "get").mockImplementationOnce(() => undefined);
83
- jest.spyOn(resourceTypeModel.resourceTypeService, "findAll").mockImplementationOnce(() => availableResourceType);
84
-
85
- const expectedResourceType = availableResourceType.find((rt) => rt.slug === "password-description-totp");
86
-
87
- const secretSchema = await resourceTypeModel.getSecretSchemaById(expectedResourceType.id);
88
- const expectedSchema = resourceTypePasswordDescriptionTotpDto().definition.secret;
89
-
90
- expect(secretSchema).toStrictEqual(expectedSchema);
91
- });
92
-
93
- it("Should assert the parameter is a proper UUID", async () => {
94
- expect.assertions(1);
95
-
96
- expect(() => resourceTypeModel.getSecretSchemaById("non-uuid")).rejects.toThrow(
97
- "The resource type id should be a valid UUID",
98
- );
99
- });
100
- });
101
- });
@@ -1,58 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) Passbolt SA (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since 3.2.0
13
- */
14
- import AbstractService from "../abstract/abstractService";
15
-
16
- const ORGANIZATION_SETTINGS_SERVICE_RESOURCE_NAME = "settings";
17
-
18
- class OrganizationSettingsService extends AbstractService {
19
- /**
20
- * Constructor
21
- *
22
- * @param {ApiClientOptions} apiClientOptions
23
- * @public
24
- */
25
- constructor(apiClientOptions) {
26
- super(apiClientOptions, OrganizationSettingsService.RESOURCE_NAME);
27
- }
28
-
29
- /**
30
- * API Resource Name
31
- *
32
- * @returns {string}
33
- * @public
34
- */
35
- static get RESOURCE_NAME() {
36
- return ORGANIZATION_SETTINGS_SERVICE_RESOURCE_NAME;
37
- }
38
-
39
- /**
40
- * Find the settings
41
- *
42
- * @returns {Promise<*>} response body
43
- * @throws {Error} if options are invalid or API error
44
- * @public
45
- */
46
- async find() {
47
- const response = await this.apiClient.findAll();
48
- const body = JSON.parse(JSON.stringify(response.body));
49
- body.serverTimeDiff = null;
50
- if (response.header.servertime) {
51
- const currentTime = new Date();
52
- body.serverTimeDiff = response.header.servertime * 1000 - currentTime.getTime();
53
- }
54
- return body;
55
- }
56
- }
57
-
58
- export default OrganizationSettingsService;
@@ -1,65 +0,0 @@
1
- /**
2
- * Passbolt ~ Open source password manager for teams
3
- * Copyright (c) Passbolt SA (https://www.passbolt.com)
4
- *
5
- * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
- * For full copyright and license information, please see the LICENSE.txt
7
- * Redistributions of files must retain the above copyright notice.
8
- *
9
- * @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
10
- * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
- * @link https://www.passbolt.com Passbolt(tm)
12
- * @since 5.13.0
13
- */
14
- import FindAndUpdateGroupsLocalStorageService from "./findAndUpdateGroupsLocalStorageService";
15
- import GroupLocalStorage from "../local_storage/groupLocalStorage";
16
- import GroupsCollection from "passbolt-styleguide/src/shared/models/entity/group/groupsCollection";
17
- import { assertArrayUUID } from "../../utils/assertions";
18
-
19
- /**
20
- * The service aims to get groups from the local storage if it is set, or retrieve them from the API and
21
- * set the local storage.
22
- */
23
- export default class GetOrFindGroupsService {
24
- /**
25
- *
26
- * @param {AccountEntity} account The user account
27
- * @param {ApiClientOptions} apiClientOptions The api client options
28
- */
29
- constructor(account, apiClientOptions) {
30
- this.account = account;
31
- this.groupLocalStorage = new GroupLocalStorage(account);
32
- this.findAndUpdateGroupsLocalStorage = new FindAndUpdateGroupsLocalStorageService(account, apiClientOptions);
33
- }
34
-
35
- /**
36
- * Get or find all groups.
37
- * @returns {Promise<GroupsCollection>}
38
- */
39
- async getOrFindAll() {
40
- const hasRuntimeCache = GroupLocalStorage.hasCachedData(this.account.id);
41
- const groupsDto = await this.groupLocalStorage.get();
42
- // Return local storage data if the storage was initialized.
43
- if (groupsDto) {
44
- // No validation is required if the data is in the runtime cache, as validation was done by the process that set the cache.
45
- return new GroupsCollection(groupsDto, { validate: !hasRuntimeCache });
46
- }
47
-
48
- // Otherwise retrieve the groups and update the local storage.
49
- return this.findAndUpdateGroupsLocalStorage.findAndUpdateAll();
50
- }
51
-
52
- /**
53
- * Get or find all the groups matching the given ids.
54
- * @param {Array<string>} groupIds The groups to find.
55
- * @return {Promise<GroupsCollection>}
56
- */
57
- async getOrFindByIds(groupIds) {
58
- assertArrayUUID(groupIds);
59
-
60
- const groupsCollection = await this.getOrFindAll();
61
- groupsCollection.filterByPropertyValueIn("id", groupIds);
62
-
63
- return groupsCollection;
64
- }
65
- }