passbolt-browser-extension 4.9.2-alpha.0 → 4.9.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,51 @@ All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
5
  ## [Unreleased]
6
+ ## [4.9.2] - 2024-08-26
7
+ ### Fixed
8
+ - PB-33861: Resources with personal field set to null should be considered as personal resources
9
+ - PB-34314: Fix shadow-dom autofill fields
10
+ - PB-34236: Fix Retrieving folder activities displaying no data
11
+
12
+ ### Maintenance
13
+ - PB-34313: Add resources type retrieval requirements documentation
14
+ - PB-34259: E2EE WP1 - Transform dtos from v4 to v5
15
+ - PB-34260: E2EE WP1 - Display resource sidebar information section in v5
16
+ - PB-34261: E2EE WP1 - Display resource sidebar activity section in v5
17
+ - PB-34262: E2EE WP1 - Display resource sidebar description section in v5
18
+ - PB-34263: E2EE WP1 - Display copy username to clipboard from more menu using v5
19
+ - PB-34264: E2EE WP1 - Display resource grid using v5
20
+ - PB-34265: E2EE WP1 - Display resource grid contextual menu using v5
21
+ - PB-34266: E2EE WP1 - Display quickaccess resource view page in v5
22
+ - PB-34267: E2EE WP1 - Display quickaccess home page in v5
23
+ - PB-34268: E2EE WP1 - Display inform menu in v5
24
+ - PB-34269: E2EE WP1 - Autofill resources from Quickaccess in v5 format
25
+ - PB-34270: E2EE WP1 - Make resource entity compatible with v4 and v5
26
+ - PB-34271: E2EE WP1 - Display inform and toolbar suggested resources badge CTA in v5
27
+ - PB-34272: E2EE WP1 - Search resource in webapp using v5
28
+ - PB-34287: E2EE WP1 - Create password resource from webapp in v5 format
29
+ - PB-34288: E2EE WP1 - Create standalone TOTP resource in v5 format
30
+ - PB-34289: E2EE WP1 - Edit password resource in v5 format
31
+ - PB-34290: E2EE WP1 - Edit standalone TOTP resource in v5 format
32
+ - PB-34291: E2EE WP1 - Edit resource description from sidebar in v5 format
33
+ - PB-34292: E2EE WP1 - Delete resource(s) in v5 format
34
+ - PB-34293: E2EE WP1 - Share resource(s) in v5 format
35
+ - PB-34294: E2EE WP1 - Import resource(s) in v5 format
36
+ - PB-34295: E2EE WP1 - Export resource(s) in v5 format
37
+ - PB-34296: E2EE WP1 - Move resource(s) in v5 format
38
+ - PB-34297: E2EE WP1 - Create password resource from quickaccess in v5 format
39
+ - PB-34298: E2EE WP1 - Auto-save password resource from quickaccess in v5 format
40
+ - PB-34299: E2EE WP1 - Make resource entity compatible only with v5
41
+ - PB-34311: E2EE WP1 - Make resource V4 and V5 compatible in both ways
42
+ - PB-34315: E2EE WP1 - Transform DTO to V4 for API and adapt resource validation to v5
43
+ - PB-34391: E2EE WP1 - Enforce resource type id should be required and not null
44
+ - PB-34392: E2EE WP1 - Validate Metadata.uris as array of string, and maxLength
45
+
46
+ ### Security
47
+ - PB-34237: Upgrade vulnerable library i18next-parser
48
+ - PB-34305: Upgrade lockfile-lint library on passbolt_api package-lock.json
49
+ - PB-34422: Remove grunt-browserify dev dependency from browser extension
50
+
6
51
  ## [4.9.1] - 2024-07-23
7
52
  ### Fixed
8
53
  - PB-34134 As a signed-in user I should search resources even if the data integrity is corrupted
@@ -1719,7 +1764,8 @@ self registration settings option in the left-side bar
1719
1764
  - AP: User with plugin installed
1720
1765
  - LU: Logged in user
1721
1766
 
1722
- [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.1...HEAD
1767
+ [Unreleased]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.2...HEAD
1768
+ [4.9.2]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.1...4.9.2
1723
1769
  [4.9.1]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.9.0...4.9.1
1724
1770
  [4.9.0]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.8.2...4.9.0
1725
1771
  [4.8.2]: https://github.com/passbolt/passbolt_browser_extension/compare/v4.8.1...4.8.2
package/RELEASE_NOTES.md CHANGED
@@ -1,9 +1,51 @@
1
- Song: https://www.youtube.com/watch?v=lz2REwKVmnk
1
+ Song: https://www.youtube.com/watch?v=VmtU-bLyReU
2
2
 
3
- Passbolt v4.9.1 is a maintenance update that addresses issues related to the search resources.
3
+ This release addresses several bugs reported by the community. Additionally, it includes numerous maintenance updates as part of our ongoing efforts to ensure a smooth transition and support for the upcoming v5.
4
4
 
5
- We extend our gratitude to the community for their feedback and assistance in testing this release. We hope these updates enhance your experience with Passbolt and we look forward to hearing from you.
5
+ Thank you to the community for reporting these issues.
6
6
 
7
- ## [4.9.1] - 2024-07-23
7
+
8
+ ## [4.9.2] - 2024-08-26
8
9
  ### Fixed
9
- - PB-34134 As a signed-in user I should search resources even if the data integrity is corrupted
10
+ - PB-33861: Resources with personal field set to null should be considered as personal resources
11
+ - PB-34314: Fix shadow-dom autofill fields
12
+ - PB-34236: Fix Retrieving folder activities displaying no data
13
+
14
+ ### Maintenance
15
+ - PB-34313: Add resources type retrieval requirements documentation
16
+ - PB-34259: E2EE WP1 - Transform dtos from v4 to v5
17
+ - PB-34260: E2EE WP1 - Display resource sidebar information section in v5
18
+ - PB-34261: E2EE WP1 - Display resource sidebar activity section in v5
19
+ - PB-34262: E2EE WP1 - Display resource sidebar description section in v5
20
+ - PB-34263: E2EE WP1 - Display copy username to clipboard from more menu using v5
21
+ - PB-34264: E2EE WP1 - Display resource grid using v5
22
+ - PB-34265: E2EE WP1 - Display resource grid contextual menu using v5
23
+ - PB-34266: E2EE WP1 - Display quickaccess resource view page in v5
24
+ - PB-34267: E2EE WP1 - Display quickaccess home page in v5
25
+ - PB-34268: E2EE WP1 - Display inform menu in v5
26
+ - PB-34269: E2EE WP1 - Autofill resources from Quickaccess in v5 format
27
+ - PB-34270: E2EE WP1 - Make resource entity compatible with v4 and v5
28
+ - PB-34271: E2EE WP1 - Display inform and toolbar suggested resources badge CTA in v5
29
+ - PB-34272: E2EE WP1 - Search resource in webapp using v5
30
+ - PB-34287: E2EE WP1 - Create password resource from webapp in v5 format
31
+ - PB-34288: E2EE WP1 - Create standalone TOTP resource in v5 format
32
+ - PB-34289: E2EE WP1 - Edit password resource in v5 format
33
+ - PB-34290: E2EE WP1 - Edit standalone TOTP resource in v5 format
34
+ - PB-34291: E2EE WP1 - Edit resource description from sidebar in v5 format
35
+ - PB-34292: E2EE WP1 - Delete resource(s) in v5 format
36
+ - PB-34293: E2EE WP1 - Share resource(s) in v5 format
37
+ - PB-34294: E2EE WP1 - Import resource(s) in v5 format
38
+ - PB-34295: E2EE WP1 - Export resource(s) in v5 format
39
+ - PB-34296: E2EE WP1 - Move resource(s) in v5 format
40
+ - PB-34297: E2EE WP1 - Create password resource from quickaccess in v5 format
41
+ - PB-34298: E2EE WP1 - Auto-save password resource from quickaccess in v5 format
42
+ - PB-34299: E2EE WP1 - Make resource entity compatible only with v5
43
+ - PB-34311: E2EE WP1 - Make resource V4 and V5 compatible in both ways
44
+ - PB-34315: E2EE WP1 - Transform DTO to V4 for API and adapt resource validation to v5
45
+ - PB-34391: E2EE WP1 - Enforce resource type id should be required and not null
46
+ - PB-34392: E2EE WP1 - Validate Metadata.uris as array of string, and maxLength
47
+
48
+ ### Security
49
+ - PB-34237: Upgrade vulnerable library i18next-parser
50
+ - PB-34305: Upgrade lockfile-lint library on passbolt_api package-lock.json
51
+ - PB-34422: Remove grunt-browserify dev dependency from browser extension
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "passbolt-browser-extension",
3
- "version": "4.9.2-alpha.0",
3
+ "version": "4.9.2",
4
4
  "license": "AGPL-3.0",
5
5
  "copyright": "Copyright 2022 Passbolt SA",
6
6
  "description": "Passbolt web extension for the open source password manager for teams",
@@ -21,7 +21,7 @@
21
21
  "locutus": "~2.0.9",
22
22
  "openpgp": "^5.11.1",
23
23
  "papaparse": "^5.2.0",
24
- "passbolt-styleguide": "^4.9.4",
24
+ "passbolt-styleguide": "^4.9.5",
25
25
  "react": "17.0.2",
26
26
  "react-dom": "17.0.2",
27
27
  "secrets-passbolt": "github:passbolt/secrets.js#v2.0.1",
@@ -70,7 +70,7 @@ class AutofillController {
70
70
  const secretSchema = await this.resourceTypeModel.getSecretSchemaById(resource.resourceTypeId);
71
71
  const privateKey = await GetDecryptedUserPrivateKeyService.getKey(passphrase);
72
72
  const plaintextSecret = await DecryptAndParseResourceSecretService.decryptAndParse(resource.secret, secretSchema, privateKey);
73
- const username = resource.metadata?.username;
73
+ const username = resource.metadata?.username || "";
74
74
  const password = plaintextSecret?.password;
75
75
  this.fillCredential(webIntegrationWorker, {username, password});
76
76
  } finally {
@@ -105,6 +105,7 @@ describe("AutofillController", () => {
105
105
  expect(portWrapper.request).toHaveBeenCalledWith('passbolt.quickaccess.fill-form', resource.username, secret.password, tab.url);
106
106
  expect(portWrapper.emit).not.toHaveBeenCalledWith('passbolt.in-form-menu.close');
107
107
  });
108
+
108
109
 
109
110
  it("Should not autofill from a worker that is not inform menu or quickaccess.", async() => {
110
111
  expect.assertions(10);
@@ -144,6 +145,47 @@ describe("AutofillController", () => {
144
145
  expect(portWrapper.request).not.toHaveBeenCalledWith('passbolt.quickaccess.fill-form', resource.username, secret.password, tab.url);
145
146
  expect(portWrapper.emit).not.toHaveBeenCalledWith('passbolt.in-form-menu.close');
146
147
  });
148
+
149
+ it("Should map username with empty string if not exist.", async() => {
150
+ expect.assertions(10);
151
+
152
+ // initialisation
153
+ const requestId = uuidv4();
154
+ const worker = readWorker();
155
+ const controller = new AutofillController(worker, requestId, defaultApiClientOptions(), account);
156
+ const resource = defaultResourceDto({
157
+ username: null
158
+ });
159
+ const secret = {password: "secret"};
160
+ const port = mockPort({name: worker.id, tabId: worker.tabId, frameId: worker.frameId});
161
+ const portWrapper = new Port(port);
162
+ const tab = {url: "https://url.com"};
163
+ // mocked function
164
+ jest.spyOn(WorkerService, "get").mockImplementationOnce(() => ({port: portWrapper, tab: tab}));
165
+ jest.spyOn(controller.getPassphraseService, "requestPassphraseFromQuickAccess");
166
+ jest.spyOn(controller.getPassphraseService, "getPassphrase").mockImplementationOnce(() => pgpKeys.ada.passphrase);
167
+ jest.spyOn(controller.resourceModel, "findForDecrypt").mockImplementationOnce(() => resource);
168
+ jest.spyOn(controller.resourceTypeModel, "getSecretSchemaById").mockImplementationOnce(jest.fn());
169
+ jest.spyOn(GetDecryptedUserPrivateKeyService, "getKey").mockImplementationOnce(() => pgpKeys.ada.private_decrypted);
170
+ jest.spyOn(DecryptAndParseResourceSecretService, "decryptAndParse").mockImplementationOnce(() => secret);
171
+ jest.spyOn(portWrapper, "emit");
172
+ jest.spyOn(portWrapper, "request");
173
+
174
+ // process
175
+ await controller.exec(resource.id, worker.tabId);
176
+
177
+ // expectations
178
+ expect(controller.getPassphraseService.requestPassphraseFromQuickAccess).not.toHaveBeenCalled();
179
+ expect(controller.getPassphraseService.getPassphrase).toHaveBeenCalledTimes(1);
180
+ expect(controller.getPassphraseService.getPassphrase).toHaveBeenCalledWith(worker);
181
+ expect(controller.resourceModel.findForDecrypt).toHaveBeenCalledTimes(1);
182
+ expect(controller.resourceModel.findForDecrypt).toHaveBeenCalledWith(resource.id);
183
+ expect(controller.resourceTypeModel.getSecretSchemaById).toHaveBeenCalledTimes(1);
184
+ expect(controller.resourceTypeModel.getSecretSchemaById).toHaveBeenCalledWith(resource.resourceTypeId);
185
+ expect(portWrapper.emit).not.toHaveBeenCalledWith('passbolt.web-integration.fill-credentials', {username: "", password: secret.password});
186
+ expect(portWrapper.request).not.toHaveBeenCalledWith('passbolt.quickaccess.fill-form', "", secret.password, tab.url);
187
+ expect(portWrapper.emit).not.toHaveBeenCalledWith('passbolt.in-form-menu.close');
188
+ });
147
189
  });
148
190
  });
149
191
 
@@ -20,8 +20,8 @@
20
20
  "Encrypting": "Chiffrement",
21
21
  "Encrypting {{counter}}/{{total}}": "Chiffrement {{counter}}/{{total}}",
22
22
  "Encrypting secret": "Chiffrement du secret",
23
- "Expiry date will be updated on {{count}} resource._one": "Expiry date will be updated on {{count}} resource.",
24
- "Expiry date will be updated on {{count}} resource._other": "Expiry date will be updated on {{count}} resources.",
23
+ "Expiry date will be updated on {{count}} resource._one": "La date d'expiration sera mise à jour sur {{count}} ressource.",
24
+ "Expiry date will be updated on {{count}} resource._other": "La date d'expiration sera mise à jour sur {{count}} ressources.",
25
25
  "Exporting ...": "Exportation ...",
26
26
  "Fetching parent permissions": "Récupération des permissions parentes",
27
27
  "Folder {{name}} can not be moved.": "Le dossier {{name}} ne peut pas être déplacé.",
@@ -34,7 +34,7 @@
34
34
  "Initialize": "Initialisation",
35
35
  "Initializing": "Initialisation en cours",
36
36
  "Initializing ...": "Initialisation en cours ...",
37
- "Mark as expired ...": "Mark as expired ...",
37
+ "Mark as expired ...": "Marquer comme expiré ...",
38
38
  "MFA authentication is required.": "L'authentification MFA est requise.",
39
39
  "Moving {{name}}": "Déplace {{name}}",
40
40
  "Moving {{total}} resources": "Déplacement de {{total}} ressources",
@@ -68,7 +68,7 @@
68
68
  "The keys should be an array of valid openpgp private keys.": "Les clés doivent être un tableau de clés privées OpenPGP valides.",
69
69
  "The keys should be an array of valid openpgp public keys.": "Les clés doivent être un tableau de clés publiques OpenPGP valides.",
70
70
  "The keys should be an array.": "Les clés doivent être un tableau.",
71
- "The message should be a valid openpgp clear text message.": "The message should be a valid openpgp clear text message.",
71
+ "The message should be a valid openpgp clear text message.": "Le message doit être un message OpenPGP en clair valide.",
72
72
  "The message should be a valid openpgp message.": "Le message doit être un message OpenPGP valide.",
73
73
  "The message should be of type string.": "Le message doit être de type string.",
74
74
  "The private key should be a valid openpgp key.": "La clé privée doit être une clé OpenPGP valide.",
@@ -91,5 +91,5 @@
91
91
  "Updating password": "Mise à jour du mot de passe",
92
92
  "Updating resource": "Mise à jour de la ressource",
93
93
  "Updating users' key...": "Mise à jour de la clé d'utilisateurs...",
94
- "You have already started the process on another tab.": "You have already started the process on another tab."
94
+ "You have already started the process on another tab.": "Vous avez déjà commencé le processus dans un autre onglet."
95
95
  }
@@ -20,8 +20,8 @@
20
20
  "Encrypting": "Szyfrowanie",
21
21
  "Encrypting {{counter}}/{{total}}": "Szyfrowanie {{counter}}/{{total}}",
22
22
  "Encrypting secret": "Szyfrowanie sekretu",
23
- "Expiry date will be updated on {{count}} resource._one": "Expiry date will be updated on {{count}} resource.",
24
- "Expiry date will be updated on {{count}} resource._other": "Expiry date will be updated on {{count}} resources.",
23
+ "Expiry date will be updated on {{count}} resource._one": "Data wygaśnięcia zostanie zaktualizowana w {{count}} zasobie.",
24
+ "Expiry date will be updated on {{count}} resource._other": "Data wygaśnięcia zostanie zaktualizowana w {{count}} zasobach.",
25
25
  "Exporting ...": "Eksportowanie ...",
26
26
  "Fetching parent permissions": "Pobieranie uprawnień nadrzędnych",
27
27
  "Folder {{name}} can not be moved.": "Nie można przenieść folderu {{name}}.",