diff --git a/.changeset/few-masks-punch.md b/.changeset/few-masks-punch.md new file mode 100644 index 00000000000..cf455b251bd --- /dev/null +++ b/.changeset/few-masks-punch.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": major +--- + +Removes deprecated `canAccessRoom` meteor method diff --git a/apps/meteor/server/methods/canAccessRoom.ts b/apps/meteor/server/methods/canAccessRoom.ts deleted file mode 100644 index eeff599a858..00000000000 --- a/apps/meteor/server/methods/canAccessRoom.ts +++ /dev/null @@ -1,70 +0,0 @@ -import type { IRoom, IUser } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Rooms, Users } from '@rocket.chat/models'; -import { Match, check } from 'meteor/check'; -import { Meteor } from 'meteor/meteor'; - -import { canAccessRoomAsync } from '../../app/authorization/server'; -import { settings } from '../../app/settings/server'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - canAccessRoom(rid: IRoom['_id'], userId: IUser['_id'], extraData?: Record): (IRoom & { username?: string }) | boolean; - } -} - -if (['yes', 'true'].includes(String(process.env.ALLOW_CANACCESSROOM_METHOD).toLowerCase())) { - console.warn('Method canAccessRoom is deprecated and will be removed after version 5.0'); - Meteor.methods({ - async canAccessRoom(rid, userId, extraData) { - check(rid, String); - check(userId, Match.Maybe(String)); - - let user; - - if (userId) { - user = await Users.findOneById(userId, { - projection: { - username: 1, - }, - }); - - if (!user?.username) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'canAccessRoom', - }); - } - } - - if (!rid) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { - method: 'canAccessRoom', - }); - } - - const room = await Rooms.findOneById(rid); - - if (!room) { - throw new Meteor.Error('error-invalid-room', 'Invalid room', { - method: 'canAccessRoom', - }); - } - - if (await canAccessRoomAsync(room, user, extraData)) { - if (user) { - return { ...room, username: user.username }; - } - return room; - } - - if (!userId && settings.get('Accounts_AllowAnonymousRead') === false) { - throw new Meteor.Error('error-invalid-user', 'Invalid user', { - method: 'canAccessRoom', - }); - } - - return false; - }, - }); -} diff --git a/apps/meteor/server/methods/index.ts b/apps/meteor/server/methods/index.ts index dd738080e05..b2cd6f718b1 100644 --- a/apps/meteor/server/methods/index.ts +++ b/apps/meteor/server/methods/index.ts @@ -7,7 +7,6 @@ import './addRoomModerator'; import './addRoomOwner'; import './afterVerifyEmail'; import './browseChannels'; -import './canAccessRoom'; import './channelsList'; import './createDirectMessage'; import './deleteFileMessage';