From 5a74a5c164ce54e8e0d3a52ef7c48d395ae88383 Mon Sep 17 00:00:00 2001 From: Murtaza Patrawala <34130764+murtaza98@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:07:39 +0530 Subject: [PATCH] [FIX] Voip endpoint permissions (#25783) ## Proposed changes (including videos or screenshots) ## Issue(s) Earlier we didn't check for any permissions while creating or closing VoIP room. This new PR will enforce those permission checks ## Steps to test or reproduce ## Further comments --- apps/meteor/app/api/server/v1/voip/rooms.ts | 8 ++++++-- apps/meteor/tests/end-to-end/api/02-channels.js | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/meteor/app/api/server/v1/voip/rooms.ts b/apps/meteor/app/api/server/v1/voip/rooms.ts index f04feaf0e084..79e77c607972 100644 --- a/apps/meteor/app/api/server/v1/voip/rooms.ts +++ b/apps/meteor/app/api/server/v1/voip/rooms.ts @@ -82,7 +82,11 @@ const parseAndValidate = (property: string, date?: string): DateParam => { API.v1.addRoute( 'voip/room', - { authRequired: false, rateLimiterOptions: { numRequestsAllowed: 5, intervalTimeInMS: 60000 } }, + { + authRequired: true, + rateLimiterOptions: { numRequestsAllowed: 5, intervalTimeInMS: 60000 }, + permissionsRequired: ['inbound-voip-calls'], + }, { async get() { const defaultCheckParams = { @@ -212,7 +216,7 @@ API.v1.addRoute( */ API.v1.addRoute( 'voip/room.close', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['inbound-voip-calls'] }, { async post() { check(this.bodyParams, { diff --git a/apps/meteor/tests/end-to-end/api/02-channels.js b/apps/meteor/tests/end-to-end/api/02-channels.js index 80e7435c8e8f..5469295f68bd 100644 --- a/apps/meteor/tests/end-to-end/api/02-channels.js +++ b/apps/meteor/tests/end-to-end/api/02-channels.js @@ -305,11 +305,13 @@ describe('[Channels]', function () { before(() => updateSetting('VoIP_Enabled', true)); const createVoipRoom = async () => { const testUser = await createUser({ roles: ['user', 'livechat-agent'] }); + const testUserCredentials = await login(testUser.username, password); const visitor = await createVisitor(); const roomResponse = await createRoom({ token: visitor.token, type: 'v', agentId: testUser._id, + credentials: testUserCredentials, }); return roomResponse.body.room; };