From dd4870f96f894253e0482f30d0097634ed79933e Mon Sep 17 00:00:00 2001 From: Mattermost Build Date: Wed, 8 May 2024 22:01:00 +0300 Subject: [PATCH] [MM-58158] Make sure closing the permissions dialog results in a Deny instead of an Allow (#3032) (#3033) (cherry picked from commit 3cf7ec7451c6f9fbe86f6b841e31b731cea425cb) Co-authored-by: Devin Binnie <52460000+devinbinnie@users.noreply.github.com> --- src/main/permissionsManager.test.js | 12 ++++++------ src/main/permissionsManager.ts | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/permissionsManager.test.js b/src/main/permissionsManager.test.js index 09390de4..d1025ee2 100644 --- a/src/main/permissionsManager.test.js +++ b/src/main/permissionsManager.test.js @@ -145,7 +145,7 @@ describe('main/PermissionsManager', () => { const permissionsManager = new PermissionsManager('anyfile.json'); permissionsManager.writeToFile = jest.fn(); const cb = jest.fn(); - dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0})); + dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2})); await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'}); expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(true); expect(permissionsManager.writeToFile).toHaveBeenCalled(); @@ -156,7 +156,7 @@ describe('main/PermissionsManager', () => { const permissionsManager = new PermissionsManager('anyfile.json'); permissionsManager.writeToFile = jest.fn(); const cb = jest.fn(); - dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 1})); + dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0})); await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'}); expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(false); expect(permissionsManager.writeToFile).toHaveBeenCalled(); @@ -167,7 +167,7 @@ describe('main/PermissionsManager', () => { const permissionsManager = new PermissionsManager('anyfile.json'); permissionsManager.writeToFile = jest.fn(); const cb = jest.fn(); - dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2})); + dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 1})); await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'}); expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(false); expect(permissionsManager.json['http://anyurl.com'].media.alwaysDeny).toBe(true); @@ -179,7 +179,7 @@ describe('main/PermissionsManager', () => { const permissionsManager = new PermissionsManager('anyfile.json'); permissionsManager.writeToFile = jest.fn(); const cb = jest.fn(); - dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0})); + dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2})); await Promise.all([ permissionsManager.handlePermissionRequest({id: 2}, 'notifications', cb, {requestingUrl: 'http://anyurl.com'}), permissionsManager.handlePermissionRequest({id: 2}, 'notifications', cb, {requestingUrl: 'http://anyurl.com'}), @@ -199,7 +199,7 @@ describe('main/PermissionsManager', () => { const permissionsManager = new PermissionsManager('anyfile.json'); permissionsManager.writeToFile = jest.fn(); const cb = jest.fn(); - dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0})); + dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2})); await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'}); expect(dialog.showMessageBox).toHaveBeenCalled(); }); @@ -208,7 +208,7 @@ describe('main/PermissionsManager', () => { const permissionsManager = new PermissionsManager('anyfile.json'); permissionsManager.writeToFile = jest.fn(); const cb = jest.fn(); - dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0})); + dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2})); await permissionsManager.handlePermissionRequest({id: 2}, 'openExternal', cb, {requestingUrl: 'http://anyurl.com', externalURL: 'ms-excel://differenturl.com'}); expect(dialog.showMessageBox).toHaveBeenCalled(); }); diff --git a/src/main/permissionsManager.ts b/src/main/permissionsManager.ts index 8f10f417..7ec773e1 100644 --- a/src/main/permissionsManager.ts +++ b/src/main/permissionsManager.ts @@ -152,16 +152,16 @@ export class PermissionsManager extends JsonFileManager { detail: localizeMessage(`main.permissionsManager.checkPermission.dialog.detail.${permission}`, 'Would you like to grant {appName} this permission?', {appName: app.name}), type: 'question', buttons: [ - localizeMessage('label.allow', 'Allow'), localizeMessage('label.deny', 'Deny'), localizeMessage('label.denyPermanently', 'Deny Permanently'), + localizeMessage('label.allow', 'Allow'), ], }); // Save their response const newPermission = { - allowed: response === 0, - alwaysDeny: (response === 2) ? true : undefined, + allowed: response === 2, + alwaysDeny: (response === 1) ? true : undefined, }; this.json[parsedURL.origin] = { ...this.json[parsedURL.origin], @@ -171,7 +171,7 @@ export class PermissionsManager extends JsonFileManager { this.inflightPermissionChecks.delete(permissionKey); - if (response > 0) { + if (response < 2) { return false; } }