passbolt-browser-extension 5.13.0 → 5.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/.devcontainer/Dockerfile +33 -3
  2. package/.devcontainer/devcontainer-lock.json +9 -0
  3. package/.devcontainer/post-start.sh +1 -2
  4. package/.github/workflows/codeql-analysis.yml +2 -1
  5. package/.github/workflows/release_candidate.yaml +3 -1
  6. package/.gitlab-ci.yml +1 -0
  7. package/CHANGELOG.md +202 -70
  8. package/CODEOWNERS +2 -0
  9. package/RELEASE_NOTES.md +4 -2
  10. package/package.json +9 -7
  11. package/renovate.json +6 -0
  12. package/src/all/background_page/controller/InformMenuController/InformMenuController.js +2 -5
  13. package/src/all/background_page/controller/InformMenuController/InformMenuController.test.js +31 -1
  14. package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.js +1 -1
  15. package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.test.js +6 -14
  16. package/src/all/background_page/controller/account/updatePrivateKeyController.js +7 -5
  17. package/src/all/background_page/controller/account/updatePrivateKeyController.test.js +18 -13
  18. package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.js +4 -2
  19. package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.test.js +25 -2
  20. package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.js +1 -1
  21. package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.test.js +10 -5
  22. package/src/all/background_page/controller/accountRecovery/recoverAccountController.js +6 -2
  23. package/src/all/background_page/controller/accountRecovery/recoverAccountController.test.js +11 -4
  24. package/src/all/background_page/controller/auth/authCheckStatus.test.data.js +6 -6
  25. package/src/all/background_page/controller/auth/authCheckStatusController.js +11 -3
  26. package/src/all/background_page/controller/auth/authCheckStatusController.test.js +74 -44
  27. package/src/all/background_page/controller/auth/authIsMfaRequiredController.js +11 -3
  28. package/src/all/background_page/controller/auth/authIsMfaRequiredController.test.js +18 -9
  29. package/src/all/background_page/controller/auth/authLoginController.js +1 -1
  30. package/src/all/background_page/controller/auth/authLoginController.test.js +10 -5
  31. package/src/all/background_page/controller/autofill/AutofillController.js +3 -3
  32. package/src/all/background_page/controller/autofill/AutofillController.test.js +20 -12
  33. package/src/all/background_page/controller/export/exportResourcesFileController.js +6 -3
  34. package/src/all/background_page/controller/export/exportResourcesFileController.test.js +34 -4
  35. package/src/all/background_page/controller/extension/onExtensionInstalledController.js +8 -2
  36. package/src/all/background_page/controller/extension/onExtensionInstalledController.test.js +5 -1
  37. package/src/all/background_page/controller/group/{getOrFindGroupsController.js → findGroupsByIdsForShareController.js} +9 -10
  38. package/src/all/background_page/controller/group/{getOrFindGroupsController.test.js → findGroupsByIdsForShareController.test.js} +8 -8
  39. package/src/all/background_page/controller/group/groupUpdateController.test.js +1 -0
  40. package/src/all/background_page/controller/import/importResourcesFileController.test.js +8 -1
  41. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.js +2 -2
  42. package/src/all/background_page/controller/informCallToActionController/informCallToActionController.test.js +7 -4
  43. package/src/all/background_page/controller/locale/getLocaleController.js +3 -2
  44. package/src/all/background_page/controller/metadata/findMetadataTypesSettingsController.test.js +9 -15
  45. package/src/all/background_page/controller/metadata/getMetadataTypesSettingsController.test.js +9 -15
  46. package/src/all/background_page/controller/metadata/getOrFindMetadataKeysSettingsController.test.js +12 -22
  47. package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.test.js +14 -2
  48. package/src/all/background_page/controller/move/moveFolderController.test.js +8 -0
  49. package/src/all/background_page/controller/move/moveResourcesController.test.js +8 -0
  50. package/src/all/background_page/controller/passwordExpiry/getOrFindPasswordExpirySettingsController.test.js +13 -8
  51. package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.js +4 -4
  52. package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.test.js +8 -10
  53. package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.js +62 -0
  54. package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.test.js +71 -0
  55. package/src/all/background_page/controller/recover/generateRecoverAccountRecoveryRequestKeyController.js +1 -1
  56. package/src/all/background_page/controller/resource/resourceCreateController.js +11 -4
  57. package/src/all/background_page/controller/resource/resourceCreateController.test.js +12 -1
  58. package/src/all/background_page/controller/resource/resourceUpdateController.js +11 -4
  59. package/src/all/background_page/controller/resource/resourceUpdateController.test.js +35 -2
  60. package/src/all/background_page/controller/resourceType/getResourceTypesController.js +5 -4
  61. package/src/all/background_page/controller/resourceType/getResourceTypesController.test.js +5 -2
  62. package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.js +3 -2
  63. package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.test.js +16 -3
  64. package/src/all/background_page/controller/secret/findSecretByResourceIdController.js +3 -3
  65. package/src/all/background_page/controller/secret/findSecretByResourceIdController.test.js +24 -0
  66. package/src/all/background_page/controller/secretRevision/findResourceSecretRevisionsForDisplayController.js +2 -1
  67. package/src/all/background_page/controller/setup/generateSetupKeyPairController.js +6 -3
  68. package/src/all/background_page/controller/setup/generateSetupKeyPairController.test.js +11 -1
  69. package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.js +1 -1
  70. package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.test.js +14 -18
  71. package/src/all/background_page/controller/setup/setSetupLocaleController.js +1 -1
  72. package/src/all/background_page/controller/setup/setSetupLocaleController.test.js +6 -10
  73. package/src/all/background_page/controller/setup/signInSetupController.js +6 -2
  74. package/src/all/background_page/controller/setup/signInSetupController.test.js +10 -5
  75. package/src/all/background_page/controller/share/shareOneFolderController.test.js +8 -0
  76. package/src/all/background_page/controller/share/shareResourcesController.test.js +9 -1
  77. package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.js +59 -0
  78. package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.test.js +150 -0
  79. package/src/all/background_page/controller/{group/getOrFindGroupsUsersController.js → user/getOrFindAllUsersController.js} +12 -17
  80. package/src/all/background_page/controller/user/getOrFindAllUsersController.test.js +55 -0
  81. package/src/all/background_page/controller/user/getOrFindLoggedInUserController.js +3 -3
  82. package/src/all/background_page/controller/user/getOrFindLoggedInUserController.test.js +19 -15
  83. package/src/all/background_page/controller/user/updateUserLocalStorageController.test.js +8 -5
  84. package/src/all/background_page/event/accountRecoveryEvents.js +4 -4
  85. package/src/all/background_page/event/appEvents.js +7 -2
  86. package/src/all/background_page/event/authEvents.js +2 -2
  87. package/src/all/background_page/event/groupEvents.js +4 -17
  88. package/src/all/background_page/event/informCallToActionEvents.js +1 -1
  89. package/src/all/background_page/event/informMenuEvents.js +1 -1
  90. package/src/all/background_page/event/localeEvents.js +4 -3
  91. package/src/all/background_page/event/permissionEvents.js +13 -0
  92. package/src/all/background_page/event/recoverEvents.js +4 -4
  93. package/src/all/background_page/event/resourceEvents.js +6 -15
  94. package/src/all/background_page/event/resourceTypeEvents.js +4 -3
  95. package/src/all/background_page/event/setupEvents.js +4 -4
  96. package/src/all/background_page/event/siteSettingsEvents.js +29 -0
  97. package/src/all/background_page/event/userEvents.js +4 -8
  98. package/src/all/background_page/index.js +0 -37
  99. package/src/all/background_page/model/entity/account/abstractAccountEntity.js +2 -2
  100. package/src/all/background_page/model/entity/account/accountAccountRecoveryEntity.js +7 -17
  101. package/src/all/background_page/model/entity/account/accountEntity.js +7 -14
  102. package/src/all/background_page/model/entity/account/accountKitEntity.js +1 -2
  103. package/src/all/background_page/model/entity/account/accountRecoverEntity.js +4 -14
  104. package/src/all/background_page/model/entity/account/accountSetupEntity.js +4 -14
  105. package/src/all/background_page/model/entity/account/accountTemporaryEntity.js +2 -5
  106. package/src/all/background_page/model/entity/gpgkey/generate/generateGpgKeyPairOptionsEntity.test.js +5 -5
  107. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.js +49 -0
  108. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.data.js +23 -0
  109. package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.js +51 -0
  110. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.js → siteSettings/siteSettingsEntity.js} +17 -24
  111. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.data.js → siteSettings/siteSettingsEntity.test.data.js} +9 -9
  112. package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.js → siteSettings/siteSettingsEntity.test.js} +30 -39
  113. package/src/all/background_page/model/entity/user/userEntity.test.js +6 -6
  114. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +40 -3
  115. package/src/all/background_page/model/export/resources/resourcesKdbxExporter.test.js +122 -0
  116. package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.js +1 -1
  117. package/src/all/background_page/model/locale/localeModel.js +13 -8
  118. package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.js +6 -6
  119. package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.test.js +3 -2
  120. package/src/all/background_page/model/resource/resourceModel.js +4 -4
  121. package/src/all/background_page/model/user/userModel.js +7 -28
  122. package/src/all/background_page/model/user/userModel.test.js +51 -99
  123. package/src/all/background_page/pagemod/appBootstrapPagemod.js +4 -1
  124. package/src/all/background_page/pagemod/appBootstrapPagemod.test.js +5 -2
  125. package/src/all/background_page/pagemod/appPagemod.js +32 -6
  126. package/src/all/background_page/pagemod/appPagemod.test.js +22 -10
  127. package/src/all/background_page/pagemod/authPagemod.js +2 -10
  128. package/src/all/background_page/pagemod/authPagemod.test.js +4 -4
  129. package/src/all/background_page/pagemod/pagemodManager.test.js +5 -2
  130. package/src/all/background_page/pagemod/quickAccessPagemod.js +2 -2
  131. package/src/all/background_page/pagemod/quickAccessPagemod.test.js +4 -4
  132. package/src/all/background_page/pagemod/recoverPagemod.js +2 -2
  133. package/src/all/background_page/pagemod/recoverPagemod.test.js +6 -0
  134. package/src/all/background_page/pagemod/setupPagemod.js +2 -2
  135. package/src/all/background_page/pagemod/setupPagemod.test.js +6 -0
  136. package/src/all/background_page/pagemod/webIntegrationPagemod.js +21 -2
  137. package/src/all/background_page/pagemod/webIntegrationPagemod.test.js +16 -25
  138. package/src/all/background_page/service/account/getActiveAccountService.js +2 -3
  139. package/src/all/background_page/service/account/getLegacyAccountService.js +3 -14
  140. package/src/all/background_page/service/account/updateSsoCredentialsService.js +9 -5
  141. package/src/all/background_page/service/api/group/groupApiService.js +9 -16
  142. package/src/all/background_page/service/api/group/groupApiService.test.js +59 -26
  143. package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.js +46 -0
  144. package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.test.js +63 -0
  145. package/src/all/background_page/service/auth/checkAuthStatusService.js +27 -14
  146. package/src/all/background_page/service/auth/checkAuthStatusService.test.js +80 -62
  147. package/src/all/background_page/service/auth/postLoginService.js +3 -3
  148. package/src/all/background_page/service/auth/postLoginService.test.js +4 -4
  149. package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.js +5 -1
  150. package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.test.js +14 -8
  151. package/src/all/background_page/service/authenticationStatusService.js +13 -18
  152. package/src/all/background_page/service/authenticationStatusService.test.js +9 -6
  153. package/src/all/background_page/service/crypto/generateGpgKeyPairService.test.js +5 -5
  154. package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.js +7 -6
  155. package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.test.js +10 -7
  156. package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.js +7 -2
  157. package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.test.js +5 -5
  158. package/src/all/background_page/service/group/findGroupsService.js +42 -1
  159. package/src/all/background_page/service/group/findGroupsService.test.js +82 -0
  160. package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.js +82 -0
  161. package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.test.js +102 -0
  162. package/src/all/background_page/service/group/groupUpdateService.js +49 -78
  163. package/src/all/background_page/service/group/groupUpdateService.test.js +136 -0
  164. package/src/all/background_page/service/localStorage/localStorageService.js +8 -6
  165. package/src/all/background_page/service/localStorage/localStorageService.test.js +33 -15
  166. package/src/all/background_page/service/local_storage/abstractLocalStorage.js +193 -0
  167. package/src/all/background_page/service/local_storage/abstractLocalStorage.test.data.js +45 -0
  168. package/src/all/background_page/service/local_storage/abstractLocalStorage.test.js +271 -0
  169. package/src/all/background_page/service/local_storage/activeSessionLocalStorage.js +105 -0
  170. package/src/all/background_page/service/local_storage/activeSessionLocalStorage.test.js +153 -0
  171. package/src/all/background_page/service/local_storage/rbacLocalStorage.js +10 -82
  172. package/src/all/background_page/service/local_storage/rbacLocalStorage.test.js +8 -8
  173. package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.js +10 -43
  174. package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.test.js +68 -0
  175. package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.js +104 -0
  176. package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.test.js +114 -0
  177. package/src/all/background_page/service/local_storage/userMeLocalStorage.js +50 -0
  178. package/src/all/background_page/service/{sessionStorage/userMeSessionStorageService.test.js → local_storage/userMeLocalStorage.test.js} +55 -36
  179. package/src/all/background_page/service/metadata/encryptMetadataService.js +3 -3
  180. package/src/all/background_page/service/metadata/encryptMetadataService.test.js +11 -11
  181. package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.js +4 -4
  182. package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.test.js +18 -16
  183. package/src/all/background_page/service/metadata/getOrFindMetadataSettingsService.test.js +6 -8
  184. package/src/all/background_page/service/metadata/rotateMetadata/rotateResourcesMetadataKeyService.test.js +4 -4
  185. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.js +3 -3
  186. package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.test.js +1 -1
  187. package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.js +4 -4
  188. package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.test.js +9 -7
  189. package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.js +4 -4
  190. package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.test.js +6 -6
  191. package/src/all/background_page/service/rbac/findAndUpdateRbacsLocalStorageService.js +2 -2
  192. package/src/all/background_page/service/rbac/getOrFindRbacService.js +1 -1
  193. package/src/all/background_page/service/resource/create/resourceCreateService.js +41 -51
  194. package/src/all/background_page/service/resource/create/resourceCreateService.test.js +100 -98
  195. package/src/all/background_page/service/resource/export/exportResourcesService.js +7 -7
  196. package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.js +4 -4
  197. package/src/all/background_page/service/resource/findResourcesService.js +13 -16
  198. package/src/all/background_page/service/resource/findResourcesService.test.js +12 -11
  199. package/src/all/background_page/service/resource/getOrFindResourcesService.js +3 -3
  200. package/src/all/background_page/service/resource/import/ImportResourcesService.js +9 -9
  201. package/src/all/background_page/service/resource/import/ImportResourcesService.test.js +30 -15
  202. package/src/all/background_page/service/resource/update/resourceUpdateService.js +38 -19
  203. package/src/all/background_page/service/resource/update/resourceUpdateService.test.js +64 -31
  204. package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.js +49 -0
  205. package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.test.js +61 -0
  206. package/src/all/background_page/service/resourceType/getSecretSchemaResourceTypeService.js +44 -0
  207. package/src/all/background_page/service/resourceType/updateResourceTypesService.js +6 -4
  208. package/src/all/background_page/service/resourceType/updateResourceTypesService.test.js +19 -14
  209. package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.js +5 -4
  210. package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.test.js +16 -9
  211. package/src/all/background_page/service/share/shareResourceService.js +4 -4
  212. package/src/all/background_page/service/share/shareResourceService.test.js +6 -6
  213. package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.js +77 -0
  214. package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.test.js +130 -0
  215. package/src/all/background_page/service/siteSettings/findSiteSettingsService.js +47 -0
  216. package/src/all/background_page/service/siteSettings/findSiteSettingsService.test.js +68 -0
  217. package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.js +84 -0
  218. package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.test.js +175 -0
  219. package/src/all/background_page/service/siteSettings/siteSettingsRuntimeCache.js +70 -0
  220. package/src/all/background_page/service/sso/generateSsoKitService.test.js +2 -2
  221. package/src/all/background_page/service/toolbar/toolbarService.js +6 -4
  222. package/src/all/background_page/service/toolbar/toolbarService.test.js +14 -13
  223. package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.js +4 -4
  224. package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.test.js +3 -3
  225. package/src/all/background_page/service/user/getOrFindMeService.js +64 -0
  226. package/src/all/background_page/service/user/getOrFindMeService.test.js +65 -0
  227. package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.js +5 -4
  228. package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.test.js +12 -11
  229. package/src/all/background_page/service/validator/appEmailValidatorService.js +11 -6
  230. package/src/all/background_page/service/validator/appEmailValidatorService.test.js +11 -11
  231. package/src/all/common/polyfill/browserPolyfill.js +8 -8
  232. package/src/all/locales/cs-CZ/common.json +1 -4
  233. package/src/all/locales/de-DE/common.json +1 -4
  234. package/src/all/locales/en-UK/common.json +0 -3
  235. package/src/all/locales/es-ES/common.json +1 -4
  236. package/src/all/locales/fr-FR/common.json +1 -4
  237. package/src/all/locales/it-IT/common.json +1 -4
  238. package/src/all/locales/ja-JP/common.json +1 -4
  239. package/src/all/locales/ko-KR/common.json +0 -3
  240. package/src/all/locales/lt-LT/common.json +1 -4
  241. package/src/all/locales/nl-NL/common.json +1 -4
  242. package/src/all/locales/pl-PL/common.json +1 -4
  243. package/src/all/locales/pt-BR/common.json +1 -4
  244. package/src/all/locales/ro-RO/common.json +1 -4
  245. package/src/all/locales/ru-RU/common.json +1 -4
  246. package/src/all/locales/sl-SI/common.json +1 -4
  247. package/src/all/locales/sv-SE/common.json +1 -4
  248. package/src/all/locales/uk-UA/common.json +1 -4
  249. package/src/all/webAccessibleResources/js/app/QuickAccess.js +7 -0
  250. package/src/chrome/manifest.json +1 -1
  251. package/src/chrome-mv3/manifest.json +1 -1
  252. package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.js +132 -0
  253. package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.test.js +125 -0
  254. package/src/chrome-mv3/offscreens/service/offscreen/handleOffscreenRequestService.js +4 -0
  255. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.js +83 -0
  256. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.test.js +116 -0
  257. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.js +99 -0
  258. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.data.js +45 -0
  259. package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.js +87 -0
  260. package/src/chrome-mv3/serviceWorker/service/network/requestFetchOffscreenService.js +0 -1
  261. package/src/chrome-mv3/serviceWorker/service/offscreen/handleOffscreenResponseService.js +15 -0
  262. package/src/firefox/manifest.json +1 -1
  263. package/src/safari/background_page/index.js +0 -37
  264. package/src/safari/common/polyfill/safariBrowserPolyfill.js +10 -10
  265. package/src/safari/manifest.json +1 -1
  266. package/test/jest.setup.js +4 -2
  267. package/src/all/background_page/controller/group/getOrFindGroupsUsersController.test.js +0 -69
  268. package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.js +0 -55
  269. package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.test.js +0 -45
  270. package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.js +0 -76
  271. package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.test.js +0 -102
  272. package/src/all/background_page/event/organizationSettingsEvents.js +0 -37
  273. package/src/all/background_page/model/organizationSettings/organizationSettingsModel.js +0 -93
  274. package/src/all/background_page/model/resourceType/resourceTypeModel.js +0 -72
  275. package/src/all/background_page/model/resourceType/resourceTypeModel.test.js +0 -101
  276. package/src/all/background_page/service/api/organizationSettings/organizationSettingsService.js +0 -58
  277. package/src/all/background_page/service/group/getOrFindGroupsService.js +0 -65
  278. package/src/all/background_page/service/group/getOrFindGroupsService.test.js +0 -168
  279. package/src/all/background_page/service/group/getOrFindGroupsUsersService.js +0 -51
  280. package/src/all/background_page/service/group/getOrFindGroupsUsersService.test.js +0 -94
  281. package/src/all/background_page/service/local_storage/authStatusLocalStorage.js +0 -70
  282. package/src/all/background_page/service/sessionStorage/userMeSessionStorageService.js +0 -94
@@ -0,0 +1,64 @@
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 6.0.0
13
+ */
14
+ import UserApiService from "passbolt-styleguide/src/shared/services/api/user/userApiService";
15
+ import UserMeLocalStorage from "../local_storage/userMeLocalStorage";
16
+ import UserEntity from "../../model/entity/user/userEntity";
17
+ import GetOrFindSiteSettingsService from "../siteSettings/getOrFindSiteSettingsService";
18
+
19
+ /**
20
+ * The service aims to get user me from the local storage if it is set, or retrieve them from the API and
21
+ * set the local storage.
22
+ */
23
+ class GetOrFindMeService {
24
+ /**
25
+ * Constructor.
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.userApiService = new UserApiService(apiClientOptions);
32
+ this.getOrFindSiteSettingsService = new GetOrFindSiteSettingsService(account, apiClientOptions);
33
+ this.userMeLocalStorageService = new UserMeLocalStorage(account);
34
+ }
35
+
36
+ /**
37
+ * Get or find me as a user.
38
+ * @param {boolean} refreshCache (Optional) Should request the API and refresh the cache. Default false.
39
+ * @returns {Promise<UserEntity>}
40
+ */
41
+ async getOrFindMe(refreshCache = false) {
42
+ if (!refreshCache) {
43
+ const userDto = await this.userMeLocalStorageService.getData();
44
+ if (typeof userDto !== "undefined") {
45
+ return new UserEntity(userDto);
46
+ }
47
+ }
48
+
49
+ const contains = { profile: true, role: true, account_recovery_user_setting: true };
50
+ const siteSettings = await this.getOrFindSiteSettingsService.getOrFind(false);
51
+ if (siteSettings.isPluginEnabled("metadata")) {
52
+ contains.missing_metadata_key_ids = true;
53
+ }
54
+
55
+ const userDto = await this.userApiService.get(this.account.userId, contains);
56
+ const userEntity = new UserEntity(userDto, { ignoreInvalidEntity: true });
57
+
58
+ await this.userMeLocalStorageService.setData(userEntity);
59
+
60
+ return userEntity;
61
+ }
62
+ }
63
+
64
+ export default GetOrFindMeService;
@@ -0,0 +1,65 @@
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 6.0.0
13
+ */
14
+
15
+ import { defaultUserDto } from "passbolt-styleguide/src/shared/models/entity/user/userEntity.test.data";
16
+ import AccountEntity from "../../model/entity/account/accountEntity";
17
+ import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
18
+ import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
19
+ import UserMeLocalStorage from "../local_storage/userMeLocalStorage";
20
+ import GetOrFindMeService from "./getOrFindMeService";
21
+ import UserEntity from "../../model/entity/user/userEntity";
22
+ import GetOrFindSiteSettingsService from "../siteSettings/getOrFindSiteSettingsService";
23
+ import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
24
+ import { defaultCeSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
25
+
26
+ describe("GetOrFindMeService", () => {
27
+ let service, account, storage;
28
+
29
+ beforeEach(async () => {
30
+ jest.clearAllMocks();
31
+ account = new AccountEntity(defaultAccountDto());
32
+ service = new GetOrFindMeService(account, defaultApiClientOptions());
33
+ storage = new UserMeLocalStorage(account);
34
+ await storage.flush();
35
+ jest
36
+ .spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
37
+ .mockImplementation(() => new SiteSettingsEntity(defaultCeSiteSettings()));
38
+ });
39
+
40
+ describe("::getOrFindMe", () => {
41
+ it("returns the user me from the local storage on hot cache without get service.", async () => {
42
+ expect.assertions(2);
43
+ const usersDto = defaultUserDto();
44
+ await storage.setData(new UserEntity(usersDto));
45
+ jest.spyOn(service.userApiService, "get");
46
+
47
+ const result = await service.getOrFindMe();
48
+
49
+ expect(service.userApiService.get).not.toHaveBeenCalled();
50
+ expect(result.toDto(storage.DEFAULT_CONTAIN)).toEqual(new UserEntity(usersDto).toDto(storage.DEFAULT_CONTAIN));
51
+ });
52
+
53
+ it("delegates to the get service on cold cache and returns its result.", async () => {
54
+ expect.assertions(2);
55
+ const usersDto = defaultUserDto();
56
+ const expected = new UserEntity(usersDto);
57
+ jest.spyOn(service.userApiService, "get").mockImplementation(() => expected);
58
+
59
+ const result = await service.getOrFindMe();
60
+
61
+ expect(service.userApiService.get).toHaveBeenCalledTimes(1);
62
+ expect(result).toStrictEqual(expected);
63
+ });
64
+ });
65
+ });
@@ -11,7 +11,7 @@
11
11
  * @link https://www.passbolt.com Passbolt(tm)
12
12
  * @since 5.1.1
13
13
  */
14
- import OrganizationSettingsModel from "../../model/organizationSettings/organizationSettingsModel";
14
+ import GetOrFindSiteSettingsService from "../siteSettings/getOrFindSiteSettingsService";
15
15
  import { assertUuid } from "../../utils/assertions";
16
16
  import UserKeyPoliciesSettingsApiService from "../api/userKeyPolicies/userKeyPoliciesSettingsApiService";
17
17
  import UserKeyPoliciesSettingsEntity from "passbolt-styleguide/src/shared/models/entity/userKeyPolicies/UserKeyPoliciesSettingsEntity";
@@ -28,7 +28,7 @@ export default class FindUserKeyPoliciesSettingsService {
28
28
  */
29
29
  constructor(apiClientOptions, account = null) {
30
30
  this.account = account;
31
- this.organizationSettingsModel = new OrganizationSettingsModel(apiClientOptions);
31
+ this.apiClientOptions = apiClientOptions;
32
32
  this.userKeyPoliciesSettingsApiService = new UserKeyPoliciesSettingsApiService(apiClientOptions);
33
33
  }
34
34
 
@@ -42,8 +42,9 @@ export default class FindUserKeyPoliciesSettingsService {
42
42
  assertUuid(userId, "The userId must be a valid UUID");
43
43
  assertUuid(authenticationToken, "The authenticationToken must be a valid UUID");
44
44
 
45
- const organizationSettings = await this.organizationSettingsModel.getOrFind();
46
- const isUserKeyPoliciesPluginEnabled = organizationSettings.isPluginEnabled("userKeyPolicies");
45
+ const getOrFindSiteSettingsService = new GetOrFindSiteSettingsService(this.account, this.apiClientOptions);
46
+ const siteSettings = await getOrFindSiteSettingsService.getOrFind(false);
47
+ const isUserKeyPoliciesPluginEnabled = siteSettings.isPluginEnabled("userKeyPolicies");
47
48
 
48
49
  if (isUserKeyPoliciesPluginEnabled) {
49
50
  try {
@@ -20,10 +20,11 @@ import { v4 as uuidV4 } from "uuid";
20
20
  import UserKeyPoliciesSettingsEntity from "passbolt-styleguide/src/shared/models/entity/userKeyPolicies/UserKeyPoliciesSettingsEntity";
21
21
  import { defaultUserKeyPoliciesSettingsDto } from "passbolt-styleguide/src/shared/models/entity/userKeyPolicies/UserKeyPoliciesSettingsEntity.test.data";
22
22
  import {
23
- anonymousOrganizationSettings,
24
- defaultCeOrganizationSettings,
25
- } from "../../model/entity/organizationSettings/organizationSettingsEntity.test.data";
26
- import OrganizationSettingsEntity from "../../model/entity/organizationSettings/organizationSettingsEntity";
23
+ anonymousSiteSettings,
24
+ defaultCeSiteSettings,
25
+ } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
26
+ import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
27
+ import GetOrFindSiteSettingsService from "../siteSettings/getOrFindSiteSettingsService";
27
28
 
28
29
  beforeEach(() => {
29
30
  jest.clearAllMocks();
@@ -41,8 +42,8 @@ describe("FindUserKeyPoliciesSettingsService", () => {
41
42
  const service = new FindUserKeyPoliciesSettingsService(apiClientOptions, account);
42
43
 
43
44
  jest
44
- .spyOn(service.organizationSettingsModel, "getOrFind")
45
- .mockImplementation(() => new OrganizationSettingsEntity(defaultCeOrganizationSettings()));
45
+ .spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
46
+ .mockImplementation(() => new SiteSettingsEntity(defaultCeSiteSettings()));
46
47
  jest
47
48
  .spyOn(service.userKeyPoliciesSettingsApiService, "findSettingsAsGuest")
48
49
  .mockImplementation(() => userKeyPoliciesDto);
@@ -65,12 +66,12 @@ describe("FindUserKeyPoliciesSettingsService", () => {
65
66
  const userKeyPoliciesDto = UserKeyPoliciesSettingsEntity.createFromDefault();
66
67
  const service = new FindUserKeyPoliciesSettingsService(apiClientOptions, account);
67
68
 
68
- const orgSettings = anonymousOrganizationSettings();
69
+ const orgSettings = anonymousSiteSettings();
69
70
  delete orgSettings.passbolt.plugins?.userKeyPolicies;
70
71
 
71
72
  jest
72
- .spyOn(service.organizationSettingsModel, "getOrFind")
73
- .mockImplementation(() => new OrganizationSettingsEntity(orgSettings));
73
+ .spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
74
+ .mockImplementation(() => new SiteSettingsEntity(orgSettings));
74
75
  jest.spyOn(service.userKeyPoliciesSettingsApiService, "findSettingsAsGuest").mockImplementation(() => {
75
76
  throw new Error("Something went wrong!");
76
77
  });
@@ -94,8 +95,8 @@ describe("FindUserKeyPoliciesSettingsService", () => {
94
95
  const service = new FindUserKeyPoliciesSettingsService(apiClientOptions, account);
95
96
 
96
97
  jest
97
- .spyOn(service.organizationSettingsModel, "getOrFind")
98
- .mockImplementation(() => new OrganizationSettingsEntity(defaultCeOrganizationSettings()));
98
+ .spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
99
+ .mockImplementation(() => new SiteSettingsEntity(defaultCeSiteSettings()));
99
100
  jest.spyOn(service.userKeyPoliciesSettingsApiService, "findSettingsAsGuest").mockImplementation(() => {
100
101
  throw new Error("Something went wrong!");
101
102
  });
@@ -11,10 +11,10 @@
11
11
  * @link https://www.passbolt.com Passbolt(tm)
12
12
  * @since 3.12.0
13
13
  */
14
- import OrganizationSettingsModel from "../../model/organizationSettings/organizationSettingsModel";
15
- import OrganizationSettingsEntity from "../../model/entity/organizationSettings/organizationSettingsEntity";
14
+ import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
16
15
  import IsRegexValidator from "passbolt-styleguide/src/shared/lib/Validator/IsRegexValidator";
17
16
  import IsEmailValidator from "passbolt-styleguide/src/shared/lib/Validator/IsEmailValidator";
17
+ import SiteSettingsRuntimeCache from "../siteSettings/siteSettingsRuntimeCache";
18
18
 
19
19
  /**
20
20
  * This service provides email validation and allow API administrator to customize email validation regex as per
@@ -45,10 +45,15 @@ export default class AppEmailValidatorService {
45
45
  * @returns {IsRegexValidator|IsEmailValidator}
46
46
  */
47
47
  static getValidator() {
48
- const appSettings = OrganizationSettingsModel.get();
49
-
50
- if (appSettings && appSettings instanceof OrganizationSettingsEntity && appSettings.emailValidateRegex) {
51
- return new IsRegexValidator(appSettings.emailValidateRegex);
48
+ const appSettings = SiteSettingsRuntimeCache.get();
49
+ if (appSettings) {
50
+ // Get the site settings from a cache, so it should have been validated
51
+ const siteSettingsEntity = new SiteSettingsEntity(appSettings, {
52
+ validate: false,
53
+ });
54
+ if (siteSettingsEntity.emailValidateRegex) {
55
+ return new IsRegexValidator(siteSettingsEntity.emailValidateRegex);
56
+ }
52
57
  }
53
58
 
54
59
  return IsEmailValidator;
@@ -15,12 +15,12 @@
15
15
  import AppEmailValidatorService from "./appEmailValidatorService";
16
16
  import IsEmailValidator from "passbolt-styleguide/src/shared/lib/Validator/IsEmailValidator";
17
17
  import {
18
- customEmailValidationProOrganizationSettings,
19
- defaultProOrganizationSettings,
20
- } from "../../model/entity/organizationSettings/organizationSettingsEntity.test.data";
21
- import OrganizationSettingsModel from "../../model/organizationSettings/organizationSettingsModel";
22
- import OrganizationSettingsEntity from "../../model/entity/organizationSettings/organizationSettingsEntity";
18
+ customEmailValidationProSiteSettings,
19
+ defaultProSiteSettings,
20
+ } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
21
+ import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
23
22
  import IsRegexValidator from "passbolt-styleguide/src/shared/lib/Validator/IsRegexValidator";
23
+ import SiteSettingsRuntimeCache from "../siteSettings/siteSettingsRuntimeCache";
24
24
 
25
25
  describe("AppEmailValidatorService", () => {
26
26
  describe("AppEmailValidatorService.getValidator", () => {
@@ -31,15 +31,15 @@ describe("AppEmailValidatorService", () => {
31
31
 
32
32
  it("should return IsRegexValidator if the application settings customize the email regex validation.", async () => {
33
33
  expect.assertions(1);
34
- const organizationSettings = customEmailValidationProOrganizationSettings();
35
- OrganizationSettingsModel.set(new OrganizationSettingsEntity(organizationSettings));
34
+ const organizationSettings = customEmailValidationProSiteSettings();
35
+ SiteSettingsRuntimeCache.set(new SiteSettingsEntity(organizationSettings));
36
36
  expect(AppEmailValidatorService.getValidator()).toBeInstanceOf(IsRegexValidator);
37
37
  });
38
38
 
39
39
  it("should fallback on IsEmailValidator if application settings did not customize the email regex validation.", async () => {
40
40
  expect.assertions(1);
41
- const organizationSettings = defaultProOrganizationSettings();
42
- OrganizationSettingsModel.set(new OrganizationSettingsEntity(organizationSettings));
41
+ const organizationSettings = defaultProSiteSettings();
42
+ SiteSettingsRuntimeCache.set(new SiteSettingsEntity(organizationSettings));
43
43
  expect(AppEmailValidatorService.getValidator()).toBe(IsEmailValidator);
44
44
  });
45
45
  });
@@ -53,8 +53,8 @@ describe("AppEmailValidatorService", () => {
53
53
 
54
54
  it("should validate custom email if the application settings customize the email regex validation.", async () => {
55
55
  expect.assertions(2);
56
- const organizationSettings = customEmailValidationProOrganizationSettings();
57
- OrganizationSettingsModel.set(new OrganizationSettingsEntity(organizationSettings));
56
+ const organizationSettings = customEmailValidationProSiteSettings();
57
+ SiteSettingsRuntimeCache.set(new SiteSettingsEntity(organizationSettings));
58
58
  expect(AppEmailValidatorService.validate("ada@passbolt.c")).toBeTruthy();
59
59
  expect(AppEmailValidatorService.validate("ada@passbolt.lu")).toBeFalsy();
60
60
  });
@@ -11,21 +11,21 @@
11
11
  * @link https://www.passbolt.com Passbolt(tm)
12
12
  * @since 3.8.0
13
13
  */
14
- const browser = require("webextension-polyfill");
14
+ const browserPolyfill = require("webextension-polyfill");
15
15
  const ScriptingPolyfill = require("./scriptingPolyfill");
16
16
  const SessionStoragePolyfill = require("./sessionStoragePolyfill");
17
17
 
18
18
  // mv3 scripting API for mv2
19
- if (!browser.scripting) {
20
- browser.scripting = new ScriptingPolyfill(browser);
19
+ if (!browserPolyfill.scripting) {
20
+ browserPolyfill.scripting = new ScriptingPolyfill(browserPolyfill);
21
21
  }
22
22
  // mv3 session storage API polyfill
23
- if (!browser.storage.session) {
24
- browser.storage.session = new SessionStoragePolyfill();
23
+ if (!browserPolyfill.storage.session) {
24
+ browserPolyfill.storage.session = new SessionStoragePolyfill();
25
25
  }
26
26
  // mv3 action API polyfill for mv2
27
- if (!browser.action) {
28
- browser.action = browser.browserAction;
27
+ if (!browserPolyfill.action) {
28
+ browserPolyfill.action = browserPolyfill.browserAction;
29
29
  }
30
30
 
31
- module.exports = browser;
31
+ module.exports = browserPolyfill;
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "Došlo k interní chybě. Odpověď serveru nelze zpracovat. Prosím obraťte se na správce systému.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "RSA klíč by měl mít délku nejméně {{size}} bitů.",
6
6
  "Autofill failed. Could not find the active tab.": "Automatické vyplňování se nezdařilo. Nelze najít aktivní kartu.",
7
- "Calculate permissions": "Vypočítat oprávnění",
8
7
  "Calculating changes for {{name}}": "Vypočítávání změn pro {{name}}",
9
8
  "Calculating folders permissions changes": "Výpočet změn oprávnění složek",
10
9
  "Calculating resources permissions changes": "Výpočet změn oprávnění zdrojů",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "Nepodařilo se ověřit klíč serveru.",
15
14
  "Creating folder...": "Vytváření složky...",
16
15
  "Creating metadata key": "Vytváření klíče metadat",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "Vytváření prostředku",
18
17
  "Decrypting ...": "Dešifrování...",
19
18
  "Decrypting {{counter}}/{{total}}": "Dešifrování {{counter}}/{{total}}",
20
19
  "Decrypting secrets": "Dešifrování tajných klíčů",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Sdílení složek {{counter}}/{{total}}",
86
85
  "Sharing resources": "Sdílení zdrojů",
87
86
  "Sharing resources {{counter}}/{{total}}": "Sdílení zdrojů {{counter}}/{{total}}",
88
- "Start sharing": "Začít sdílet",
89
87
  "Synchronizing keyring": "Synchronizace klíčenky",
90
- "Synchronizing keys": "Synchronizace klíčů",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Označování hesel {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "Šifrovací klíč použitý k sdílení metadat mezi uživateli nemohl být ověřen a je považován za nespolehlivý.",
93
90
  "The external service is unavailable": "Externí služba není k dispozici",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "Ein interner Fehler ist aufgetreten. Die Antwort des Servers konnte nicht analysiert werden. Bitte kontaktieren Sie Ihren Administrator.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "Ein RSA-Schlüssel sollte eine Mindestlänge von {{size}} Bits haben.",
6
6
  "Autofill failed. Could not find the active tab.": "Automatisches Ausfüllen fehlgeschlagen. Der aktive Tab konnte nicht gefunden werden.",
7
- "Calculate permissions": "Berechtigungen berechnen",
8
7
  "Calculating changes for {{name}}": "Änderungen für {{name}} werden berechnet",
9
8
  "Calculating folders permissions changes": "Änderungen der Ordnerberechtigungen werden berechnet",
10
9
  "Calculating resources permissions changes": "Änderungen der Ressourcenberechtigungen werden berechnet",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "Der Serverschlüssel konnte nicht verifiziert werden.",
15
14
  "Creating folder...": "Ordner wird erstellt...",
16
15
  "Creating metadata key": "Erstellen des Metadatenschlüssels",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "Ressource wird erstellt",
18
17
  "Decrypting ...": "Entschlüsselung ...",
19
18
  "Decrypting {{counter}}/{{total}}": "Entschlüsselung {{counter}}/{{total}}",
20
19
  "Decrypting secrets": "Geheimnisse werden entschlüsselt",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Ordner werden geteilt {{counter}}/{{total}}",
86
85
  "Sharing resources": "Ressourcen werden geteilt",
87
86
  "Sharing resources {{counter}}/{{total}}": "Ressourcen werden geteilt {{counter}}/{{total}}",
88
- "Start sharing": "Teilen beginnen",
89
87
  "Synchronizing keyring": "Schlüsselring wird synchronisiert",
90
- "Synchronizing keys": "Schlüssel werden synchronisiert",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Passwörter {{taggedCount}}/{{total}} werden markiert",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "Der für den Austausch von Metadaten zwischen Benutzern verwendete Verschlüsselungsschlüssel konnte nicht überprüft werden und gilt als nicht vertrauenswürdig.",
93
90
  "The external service is unavailable": "Der externe Dienst ist nicht verfügbar",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "An internal error occurred. The server response could not be parsed. Please contact your administrator.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "An RSA key should have a length of {{size}} bits minimum.",
6
6
  "Autofill failed. Could not find the active tab.": "Autofill failed. Could not find the active tab.",
7
- "Calculate permissions": "Calculate permissions",
8
7
  "Calculating changes for {{name}}": "Calculating changes for {{name}}",
9
8
  "Calculating folders permissions changes": "Calculating folders permissions changes",
10
9
  "Calculating resources permissions changes": "Calculating resources permissions changes",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Sharing folders {{counter}}/{{total}}",
86
85
  "Sharing resources": "Sharing resources",
87
86
  "Sharing resources {{counter}}/{{total}}": "Sharing resources {{counter}}/{{total}}",
88
- "Start sharing": "Start sharing",
89
87
  "Synchronizing keyring": "Synchronizing keyring",
90
- "Synchronizing keys": "Synchronizing keys",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Tagging passwords {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "The encryption key used to share metadata between users could not be verified and is considered untrusted.",
93
90
  "The external service is unavailable": "The external service is unavailable",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "Se ha producido un error interno. La respuesta del servidor no se ha podido analizar. Por favor, póngase en contacto con su administrador.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "Una clave RSA debería tener una longitud mínima de {{size}} bits.",
6
6
  "Autofill failed. Could not find the active tab.": "El autocompletado ha fallado. No se pudo encontrar la pestaña activa.",
7
- "Calculate permissions": "Calcular permisos",
8
7
  "Calculating changes for {{name}}": "Calculando los cambios en {{name}}",
9
8
  "Calculating folders permissions changes": "Calculando cambios de permisos de carpetas",
10
9
  "Calculating resources permissions changes": "Calculando cambios de permisos de recursos",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "No se ha podido verificar la clave del servidor.",
15
14
  "Creating folder...": "Creando carpeta...",
16
15
  "Creating metadata key": "Creando clave de metadatos",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "Creando recurso",
18
17
  "Decrypting ...": "Desencriptando...",
19
18
  "Decrypting {{counter}}/{{total}}": "Desencriptando {{counter}}/{{total}}",
20
19
  "Decrypting secrets": "Descifrando secretos",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Compartiendo carpetas {{counter}}/{{total}}",
86
85
  "Sharing resources": "Compartiendo recursos",
87
86
  "Sharing resources {{counter}}/{{total}}": "Compartiendo recursos {{counter}}/{{total}}",
88
- "Start sharing": "Comenzar a compartir",
89
87
  "Synchronizing keyring": "Sincronizando llavero",
90
- "Synchronizing keys": "Sincronizando claves",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Etiquetando contraseñas {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "La clave de cifrado utilizada para compartir metadatos entre usuarios no pudo ser verificada y se considera no confiable.",
93
90
  "The external service is unavailable": "El servicio externo no está disponible",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "Une erreur s'est produite. La réponse du serveur n'a pas pu être analysée. Merci de contacter votre administrateur.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "Une clé RSA doit avoir une longueur minimale de {{size}} bits.",
6
6
  "Autofill failed. Could not find the active tab.": "La saisie automatique a échoué. Impossible de trouver l'onglet actif.",
7
- "Calculate permissions": "Calcul des permissions",
8
7
  "Calculating changes for {{name}}": "Calcul des changements pour {{name}}",
9
8
  "Calculating folders permissions changes": "Calcul des changements des permissions des dossiers",
10
9
  "Calculating resources permissions changes": "Calcul des changements des permissions des ressources",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "Impossible de vérifier la clé du serveur.",
15
14
  "Creating folder...": "Création du dossier...",
16
15
  "Creating metadata key": "Création de la clé de métadonnées",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "Création de la ressource",
18
17
  "Decrypting ...": "Déchiffrement ...",
19
18
  "Decrypting {{counter}}/{{total}}": "Déchiffrement {{counter}}/{{total}}",
20
19
  "Decrypting secrets": "Déchiffrement des secrets",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Partage des dossiers {{counter}}/{{total}}",
86
85
  "Sharing resources": "Partage des ressources",
87
86
  "Sharing resources {{counter}}/{{total}}": "Partage des ressources {{counter}}/{{total}}",
88
- "Start sharing": "Commencer le partage",
89
87
  "Synchronizing keyring": "Synchronisation du porte-clés",
90
- "Synchronizing keys": "Synchronisation des clés en cours",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Étiquetage des mots de passe {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "La clé de chiffrement utilisée pour partager les métadonnées entre les utilisateurs n'a pas pu être vérifiée et est considérée comme n'étant pas fiable.",
93
90
  "The external service is unavailable": "Le service externe est indisponible",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "Si è verificato un errore interno. Impossibile analizzare la risposta del server. Si prega di contattare l'amministratore.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "Una chiave RSA dovrebbe avere una lunghezza minima di {{size}} bit.",
6
6
  "Autofill failed. Could not find the active tab.": "Compilazione automatica non riuscita. Impossibile trovare la scheda attiva.",
7
- "Calculate permissions": "Calcolo dei permessi",
8
7
  "Calculating changes for {{name}}": "Calcolo delle modifiche per {{name}}",
9
8
  "Calculating folders permissions changes": "Calcolo delle modifiche dei permessi delle cartelle",
10
9
  "Calculating resources permissions changes": "Calcolo delle modifiche dei permessi delle risorse",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "Impossibile verificare la chiave del server.",
15
14
  "Creating folder...": "Creazione cartella...",
16
15
  "Creating metadata key": "Creazione della chiave dei metadati",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "Creazione della risorsa",
18
17
  "Decrypting ...": "Decriptaggio...",
19
18
  "Decrypting {{counter}}/{{total}}": "Decriptazione {{counter}}/{{total}}",
20
19
  "Decrypting secrets": "Decriptazione dei segreti",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Condivisione delle cartelle {{counter}}/{{total}}",
86
85
  "Sharing resources": "Condivisione delle risorse",
87
86
  "Sharing resources {{counter}}/{{total}}": "Condivisione delle risorse {{counter}}/{{total}}",
88
- "Start sharing": "Avvia la condivisione",
89
87
  "Synchronizing keyring": "Sincronizzazione portachiavi",
90
- "Synchronizing keys": "Sincronizzazione delle chiavi",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Passwords taggate: {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "La chiave di crittografia utilizzata per condividere i metadati tra gli utenti non è stata verificata ed è considerata non attendibile.",
93
90
  "The external service is unavailable": "Il servizio esterno non è disponibile",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "内部エラーが発生しました。サーバーの応答を解析できませんでした。管理者に問い合わせてください。",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "RSA鍵は最小で{{size}}ビットの長さが必要です。",
6
6
  "Autofill failed. Could not find the active tab.": "自動入力に失敗しました。アクティブなタブが見つかりませんでした。",
7
- "Calculate permissions": "パーミッションの算出",
8
7
  "Calculating changes for {{name}}": "{{name}} の変更を計算中",
9
8
  "Calculating folders permissions changes": "フォルダの権限変更を計算中",
10
9
  "Calculating resources permissions changes": "リソースの権限変更を計算中",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "サーバーキーを検証できませんでした。",
15
14
  "Creating folder...": "フォルダを作成中...",
16
15
  "Creating metadata key": "メタデータ鍵を作成しています",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "リソースを作成しています",
18
17
  "Decrypting ...": "復号化中...",
19
18
  "Decrypting {{counter}}/{{total}}": "{{counter}}/{{total}} を復号中",
20
19
  "Decrypting secrets": "シークレットを復号化中",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "フォルダを共有中 {{counter}}/{{total}}",
86
85
  "Sharing resources": "リソースを共有中",
87
86
  "Sharing resources {{counter}}/{{total}}": "リソースを共有中 {{counter}}/{{total}}",
88
- "Start sharing": "共有を開始",
89
87
  "Synchronizing keyring": "キーリングの同期",
90
- "Synchronizing keys": "キーの同期",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "{{taggedCount}}/{{total}} 個のパスワードをタグ付け中",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "ユーザー間でメタデータを共有するために使用される暗号鍵を検証できなかったため、信頼できないものと見なされます。",
93
90
  "The external service is unavailable": "外部サービスはご利用いただけません",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "내부 오류가 발생하였습니다. 해석되지 않아 서버가 응답할 수 없습니다. 관리자에게 문의하세요.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "RSA 키는 최소 {{size}} 비트의 길이가 되어야 합니다.",
6
6
  "Autofill failed. Could not find the active tab.": "자동 채우기가 실패했습니다. 활성화된 탭을 찾을 수 없습니다.",
7
- "Calculate permissions": "권한 계산",
8
7
  "Calculating changes for {{name}}": "{{name}} 변경 사항 계산 중",
9
8
  "Calculating folders permissions changes": "폴더 권한 변경을 계산 중",
10
9
  "Calculating resources permissions changes": "리소스 권한 변경을 계산 중",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "{{counter}}/{{total}} 폴더를 공유 중",
86
85
  "Sharing resources": "리소스를 공유 중",
87
86
  "Sharing resources {{counter}}/{{total}}": "{{counter}}/{{total}} 리소스를 공유 중",
88
- "Start sharing": "공유 시작 중",
89
87
  "Synchronizing keyring": "키링 동기화 중",
90
- "Synchronizing keys": "키 동기화 중",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "비밀번호 태깅 중 {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "사용자 간에 메타데이터를 공유하는 데 사용된 암호화 키를 검증할 수 없어 신뢰할 수 없는 것으로 간주됩니다.",
93
90
  "The external service is unavailable": "외부 서비스를 사용할 수 없습니다.",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "Įvyko vidinė klaida. Nepavyko išanalizuoti serverio atsakymo. Susisiekite su administratoriumi.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "RSA raktas turi būti ne trumpesnis nei {{size}} bitai.",
6
6
  "Autofill failed. Could not find the active tab.": "Nepavyko atlikti automatinio pildymo. Nepavyko rasti aktyvios kortelės.",
7
- "Calculate permissions": "Apskaičiuoti leidimus",
8
7
  "Calculating changes for {{name}}": "Skaičiuojami pokyčiai {{name}}",
9
8
  "Calculating folders permissions changes": "Skaičiuojami aplankų leidimų pokyčiai",
10
9
  "Calculating resources permissions changes": "Skaičiuojami išteklių leidimų pokyčiai",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "Nepavyko patvirtinti serverio rakto.",
15
14
  "Creating folder...": "Kuriamas aplankas...",
16
15
  "Creating metadata key": "Kuriamas metaduomenų raktas",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "Kuriamas išteklius",
18
17
  "Decrypting ...": "Iššifruojama ...",
19
18
  "Decrypting {{counter}}/{{total}}": "Iššifruoti {{counter}}/{{total}}",
20
19
  "Decrypting secrets": "Iššifruojamos paslaptys",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Bendrinami aplankai {{counter}}/{{total}}",
86
85
  "Sharing resources": "Bendrinami ištekliai",
87
86
  "Sharing resources {{counter}}/{{total}}": "Bendrinami ištekliai {{counter}}/{{total}}",
88
- "Start sharing": "Pradėti dalintis",
89
87
  "Synchronizing keyring": "Sinchronizuojama raktinė",
90
- "Synchronizing keys": "Sinchronizuojami raktai",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Žymėti slaptažodžius {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "Šifravimo raktas, naudojamas metaduomenims tarp naudotojų bendrinti, nebuvo patvirtintas, todėl laikomas nepatikimu.",
93
90
  "The external service is unavailable": "Išorinė paslauga yra nepasiekiama",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "Er is een interne fout opgetreden. De serverreactie kon niet worden verwerkt. Neem contact op met uw beheerder.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "Een RSA-sleutel moet een lengte van minimaal {{size}} bits hebben.",
6
6
  "Autofill failed. Could not find the active tab.": "Automatisch invullen mislukt. Kan het actieve tabblad niet vinden.",
7
- "Calculate permissions": "Machtigingen bepalen",
8
7
  "Calculating changes for {{name}}": "Wijzigingen worden uitgewerkt voor {{name}}",
9
8
  "Calculating folders permissions changes": "Wijzigingen in mapmachtigingen worden uitgewerkt",
10
9
  "Calculating resources permissions changes": "Wijzigingen in middelenmachtigingen worden uitgewerkt",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "De serversleutel kon niet worden geverifieerd.",
15
14
  "Creating folder...": "Map wordt aangemaakt...",
16
15
  "Creating metadata key": "Metadata-sleutel maken",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "Resource aanmaken",
18
17
  "Decrypting ...": "Ontsleutelen ...",
19
18
  "Decrypting {{counter}}/{{total}}": "Ontsleutelen van {{counter}}/{{total}}",
20
19
  "Decrypting secrets": "Geheimen ontsleutelen",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Mappen worden gedeeld {{counter}}/{{total}}",
86
85
  "Sharing resources": "Middelen worden gedeeld",
87
86
  "Sharing resources {{counter}}/{{total}}": "Middelen worden gedeeld {{counter}}/{{total}}",
88
- "Start sharing": "Begin met delen",
89
87
  "Synchronizing keyring": "Sleutelhanger synchroniseren",
90
- "Synchronizing keys": "Sleutels worden gesynchroniseerd",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Labelen wachtwoorden {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "De encryptiesleutel die wordt gebruikt om metadata tussen gebruikers te delen kon niet worden geverifieerd en wordt als onbetrouwbaar beschouwd.",
93
90
  "The external service is unavailable": "De externe service is niet beschikbaar",
@@ -4,7 +4,6 @@
4
4
  "An internal error occurred. The server response could not be parsed. Please contact your administrator.": "Wystąpił wewnętrzny błąd. Nie udało się sparsować odpowiedzi serwera. Skontaktuj się z administratorem.",
5
5
  "An RSA key should have a length of {{size}} bits minimum.": "Klucz RSA powinien mieć długość przynajmniej {{size}} bitów.",
6
6
  "Autofill failed. Could not find the active tab.": "Autouzupełnianie nie powiodło się. Nie znaleźliśmy aktywnej karty.",
7
- "Calculate permissions": "Oblicz uprawnienia",
8
7
  "Calculating changes for {{name}}": "Obliczanie zmian dla {{name}}",
9
8
  "Calculating folders permissions changes": "Obliczanie zmian uprawnień folderów",
10
9
  "Calculating resources permissions changes": "Obliczanie zmian uprawnień zasobów",
@@ -14,7 +13,7 @@
14
13
  "Could not verify the server key.": "Nie udało się zweryfikować klucza serwera.",
15
14
  "Creating folder...": "Tworzenie folderu...",
16
15
  "Creating metadata key": "Tworzenie klucza metadanych",
17
- "Creating resource": "Creating resource",
16
+ "Creating resource": "Tworzenie zasobu",
18
17
  "Decrypting ...": "Odszyfrowywanie...",
19
18
  "Decrypting {{counter}}/{{total}}": "Odszyfrowywanie {{counter}}/{{total}}",
20
19
  "Decrypting secrets": "Odszyfrowywanie sekretów",
@@ -85,9 +84,7 @@
85
84
  "Sharing folders {{counter}}/{{total}}": "Udostępnianie folderów {{counter}}/{{total}}",
86
85
  "Sharing resources": "Udostępnianie zasobów",
87
86
  "Sharing resources {{counter}}/{{total}}": "Udostępnianie zasobów {{counter}}/{{total}}",
88
- "Start sharing": "Zacznij udostępniać",
89
87
  "Synchronizing keyring": "Synchronizacja kluczy",
90
- "Synchronizing keys": "Synchronizowanie kluczy",
91
88
  "Tagging passwords {{taggedCount}}/{{total}}": "Tagowanie haseł {{taggedCount}}/{{total}}",
92
89
  "The encryption key used to share metadata between users could not be verified and is considered untrusted.": "Nie udało się zweryfikować klucza szyfrowania do udostępniania metadanych pomiędzy użytkownikami i jest uważany za niezaufany.",
93
90
  "The external service is unavailable": "Usługa zewnętrzna jest niedostępna",