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 +47 -1
- package/RELEASE_NOTES.md +47 -5
- package/package.json +2 -2
- package/src/all/background_page/controller/autofill/AutofillController.js +1 -1
- package/src/all/background_page/controller/autofill/AutofillController.test.js +42 -0
- package/src/all/locales/fr-FR/common.json +5 -5
- package/src/all/locales/pl-PL/common.json +2 -2
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.
|
|
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=
|
|
1
|
+
Song: https://www.youtube.com/watch?v=VmtU-bLyReU
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
5
|
+
Thank you to the community for reporting these issues.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
## [4.9.2] - 2024-08-26
|
|
8
9
|
### Fixed
|
|
9
|
-
- PB-
|
|
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
|
|
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.
|
|
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": "
|
|
24
|
-
"Expiry date will be updated on {{count}} resource._other": "
|
|
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 ...": "
|
|
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.": "
|
|
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.": "
|
|
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": "
|
|
24
|
-
"Expiry date will be updated on {{count}} resource._other": "
|
|
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}}.",
|