From 5cea67f09a181bcf749e24b3d6bdba19b286e01e Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Mon, 8 Apr 2024 19:27:10 -0300 Subject: [PATCH 01/18] chore: bump 7.0.0 --- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- packages/core-typings/package.json | 2 +- packages/rest-typings/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 5878bf0b3190..34642c087e2e 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "6.9.0-develop" + "version": "7.0.0-develop" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 314fae0c4ead..481ce9ce9bf6 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "6.9.0-develop", + "version": "7.0.0-develop", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index d59418429c34..4e0b99fa9daa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "6.9.0-develop", + "version": "7.0.0-develop", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index 595421d04c31..1e334cf4a881 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/package", "name": "@rocket.chat/core-typings", "private": true, - "version": "6.9.0-develop", + "version": "7.0.0-develop", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "eslint": "~8.45.0", diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 9d2f040a8582..1a5d60ef618d 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/rest-typings", "private": true, - "version": "6.9.0-develop", + "version": "7.0.0-develop", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "@types/jest": "~29.5.7", From 9b3d017c59741b1978ed83d3f4857fdc8f258073 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 9 Apr 2024 13:47:21 -0300 Subject: [PATCH 02/18] fix!: api login should not suggest which credential is wrong (#32159) --- .changeset/fuzzy-cherries-buy.md | 7 +++++++ .../lib/server/lib/loginErrorMessageOverride.js | 14 -------------- .../lib/server/lib/loginErrorMessageOverride.ts | 16 ++++++++++++++++ .../client/meteorOverrides/login/google.ts | 10 ---------- .../externals/meteor/accounts-base.d.ts | 10 +++++++++- .../end-to-end/api/31-failed-login-attempts.ts | 2 +- 6 files changed, 33 insertions(+), 26 deletions(-) create mode 100644 .changeset/fuzzy-cherries-buy.md delete mode 100644 apps/meteor/app/lib/server/lib/loginErrorMessageOverride.js create mode 100644 apps/meteor/app/lib/server/lib/loginErrorMessageOverride.ts diff --git a/.changeset/fuzzy-cherries-buy.md b/.changeset/fuzzy-cherries-buy.md new file mode 100644 index 000000000000..e185a148c917 --- /dev/null +++ b/.changeset/fuzzy-cherries-buy.md @@ -0,0 +1,7 @@ +--- +"@rocket.chat/meteor": major +--- + +Api login should not suggest which credential is wrong (password/username) + +Failed login attemps will always return `Unauthorized` instead of the internal fail reason diff --git a/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.js b/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.js deleted file mode 100644 index 4e054b81b2cf..000000000000 --- a/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.js +++ /dev/null @@ -1,14 +0,0 @@ -// Do not disclose if user exists when password is invalid -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -const { _runLoginHandlers } = Accounts; -Accounts._runLoginHandlers = function (methodInvocation, options) { - const result = _runLoginHandlers.call(Accounts, methodInvocation, options); - - if (result.error && result.error.reason === 'Incorrect password') { - result.error = new Meteor.Error(403, 'User not found'); - } - - return result; -}; diff --git a/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.ts b/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.ts new file mode 100644 index 000000000000..e2a6e0d10581 --- /dev/null +++ b/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.ts @@ -0,0 +1,16 @@ +// Do not disclose if user exists when password is invalid +import { Accounts } from 'meteor/accounts-base'; +import { Meteor } from 'meteor/meteor'; + +const { _runLoginHandlers } = Accounts; + +Accounts._options.ambiguousErrorMessages = true; +Accounts._runLoginHandlers = async function (methodInvocation, options) { + const result = await _runLoginHandlers.call(Accounts, methodInvocation, options); + + if (result.error instanceof Meteor.Error) { + result.error = new Meteor.Error(401, 'User not found'); + } + + return result; +}; diff --git a/apps/meteor/client/meteorOverrides/login/google.ts b/apps/meteor/client/meteorOverrides/login/google.ts index 2742cade15d2..4e99ac3a281b 100644 --- a/apps/meteor/client/meteorOverrides/login/google.ts +++ b/apps/meteor/client/meteorOverrides/login/google.ts @@ -8,16 +8,6 @@ import { overrideLoginMethod, type LoginCallback } from '../../lib/2fa/overrideL import { wrapRequestCredentialFn } from '../../lib/wrapRequestCredentialFn'; import { createOAuthTotpLoginMethod } from './oauth'; -declare module 'meteor/accounts-base' { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace Accounts { - export const _options: { - restrictCreationByEmailDomain?: string | (() => string); - forbidClientAccountCreation?: boolean | undefined; - }; - } -} - declare module 'meteor/meteor' { // eslint-disable-next-line @typescript-eslint/no-namespace namespace Meteor { diff --git a/apps/meteor/definition/externals/meteor/accounts-base.d.ts b/apps/meteor/definition/externals/meteor/accounts-base.d.ts index 3f0b148120e7..f51c2f383987 100644 --- a/apps/meteor/definition/externals/meteor/accounts-base.d.ts +++ b/apps/meteor/definition/externals/meteor/accounts-base.d.ts @@ -22,7 +22,7 @@ declare module 'meteor/accounts-base' { function _insertLoginToken(userId: string, token: { token: string; when: Date }): void; - function _runLoginHandlers(methodInvocation: T, loginRequest: Record): LoginMethodResult | undefined; + function _runLoginHandlers(methodInvocation: T, loginRequest: Record): Promise; function registerLoginHandler(name: string, handler: (options: any) => undefined | object): void; @@ -54,6 +54,14 @@ declare module 'meteor/accounts-base' { const _accountData: Record; + interface AccountsServerOptions { + ambiguousErrorMessages?: boolean; + restrictCreationByEmailDomain?: string | (() => string); + forbidClientAccountCreation?: boolean | undefined; + } + + export const _options: AccountsServerOptions; + // eslint-disable-next-line @typescript-eslint/no-namespace namespace oauth { function credentialRequestCompleteHandler( diff --git a/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts b/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts index 7e1019b60ecb..906b19d0a931 100644 --- a/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts +++ b/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts @@ -54,7 +54,7 @@ describe('[Failed Login Attempts]', function () { .expect(401) .expect((res) => { expect(res.body).to.have.property('status', 'error'); - expect(res.body).to.have.property('message', 'Incorrect password'); + expect(res.body).to.have.property('message', 'Unauthorized'); }); } From 8d5b603a6c3b90fbcdce2d81c3e234f8cddf895d Mon Sep 17 00:00:00 2001 From: Pierre Lehnen <55164754+pierre-lehnen-rc@users.noreply.github.com> Date: Thu, 11 Apr 2024 12:00:50 -0300 Subject: [PATCH 03/18] chore!: remove hipchat importer (#32154) --- .changeset/quiet-kings-rhyme.md | 5 + FEATURES.md | 1 - .../server/HipChatEnterpriseImporter.js | 343 ------------------ .../server/index.ts | 8 - .../server/classes/ImportDataConverter.ts | 7 - .../server/classes/VirtualDataConverter.ts | 10 - apps/meteor/package.json | 1 - apps/meteor/server/importPackages.ts | 1 - apps/meteor/server/models/raw/ImportData.ts | 13 +- packages/i18n/src/locales/af.i18n.json | 2 - packages/i18n/src/locales/ar.i18n.json | 2 - packages/i18n/src/locales/az.i18n.json | 2 - packages/i18n/src/locales/be-BY.i18n.json | 2 - packages/i18n/src/locales/bg.i18n.json | 2 - packages/i18n/src/locales/bs.i18n.json | 2 - packages/i18n/src/locales/ca.i18n.json | 2 - packages/i18n/src/locales/cs.i18n.json | 2 - packages/i18n/src/locales/cy.i18n.json | 2 - packages/i18n/src/locales/da.i18n.json | 2 - packages/i18n/src/locales/de-AT.i18n.json | 2 - packages/i18n/src/locales/de-IN.i18n.json | 2 - packages/i18n/src/locales/de.i18n.json | 2 - packages/i18n/src/locales/el.i18n.json | 2 - packages/i18n/src/locales/en.i18n.json | 3 - packages/i18n/src/locales/eo.i18n.json | 2 - packages/i18n/src/locales/es.i18n.json | 2 - packages/i18n/src/locales/fa.i18n.json | 2 - packages/i18n/src/locales/fi.i18n.json | 2 - packages/i18n/src/locales/fr.i18n.json | 2 - packages/i18n/src/locales/hr.i18n.json | 2 - packages/i18n/src/locales/hu.i18n.json | 2 - packages/i18n/src/locales/id.i18n.json | 2 - packages/i18n/src/locales/it.i18n.json | 2 - packages/i18n/src/locales/ja.i18n.json | 2 - packages/i18n/src/locales/ka-GE.i18n.json | 2 - packages/i18n/src/locales/km.i18n.json | 2 - packages/i18n/src/locales/ko.i18n.json | 2 - packages/i18n/src/locales/ku.i18n.json | 2 - packages/i18n/src/locales/lo.i18n.json | 2 - packages/i18n/src/locales/lt.i18n.json | 2 - packages/i18n/src/locales/lv.i18n.json | 2 - packages/i18n/src/locales/mn.i18n.json | 2 - packages/i18n/src/locales/ms-MY.i18n.json | 2 - packages/i18n/src/locales/nl.i18n.json | 2 - packages/i18n/src/locales/no.i18n.json | 2 - packages/i18n/src/locales/pl.i18n.json | 2 - packages/i18n/src/locales/pt-BR.i18n.json | 2 - packages/i18n/src/locales/pt.i18n.json | 2 - packages/i18n/src/locales/ro.i18n.json | 2 - packages/i18n/src/locales/ru.i18n.json | 2 - packages/i18n/src/locales/sk-SK.i18n.json | 2 - packages/i18n/src/locales/sl-SI.i18n.json | 2 - packages/i18n/src/locales/sq.i18n.json | 2 - packages/i18n/src/locales/sr.i18n.json | 2 - packages/i18n/src/locales/sv.i18n.json | 2 - packages/i18n/src/locales/ta-IN.i18n.json | 2 - packages/i18n/src/locales/th-TH.i18n.json | 2 - packages/i18n/src/locales/tr.i18n.json | 2 - packages/i18n/src/locales/uk.i18n.json | 2 - packages/i18n/src/locales/vi-VN.i18n.json | 2 - packages/i18n/src/locales/zh-HK.i18n.json | 2 - packages/i18n/src/locales/zh-TW.i18n.json | 2 - packages/i18n/src/locales/zh.i18n.json | 2 - .../src/models/IImportDataModel.ts | 1 - yarn.lock | 3 +- 65 files changed, 7 insertions(+), 495 deletions(-) create mode 100644 .changeset/quiet-kings-rhyme.md delete mode 100644 apps/meteor/app/importer-hipchat-enterprise/server/HipChatEnterpriseImporter.js delete mode 100644 apps/meteor/app/importer-hipchat-enterprise/server/index.ts diff --git a/.changeset/quiet-kings-rhyme.md b/.changeset/quiet-kings-rhyme.md new file mode 100644 index 000000000000..0fd7fda7ea66 --- /dev/null +++ b/.changeset/quiet-kings-rhyme.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': major +--- + +Removed the ability to import data in the HipChat Enterprise format, as it was discontinued over five years ago. diff --git a/FEATURES.md b/FEATURES.md index 5601cc0c7ccc..67848389b593 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -33,7 +33,6 @@ - Incoming / Outgoing Webhooks - Data Importer - Import from Slack - - Import from Hipchat - Slack Bridge - Profiles - Custom avatars diff --git a/apps/meteor/app/importer-hipchat-enterprise/server/HipChatEnterpriseImporter.js b/apps/meteor/app/importer-hipchat-enterprise/server/HipChatEnterpriseImporter.js deleted file mode 100644 index ac3d278d82ab..000000000000 --- a/apps/meteor/app/importer-hipchat-enterprise/server/HipChatEnterpriseImporter.js +++ /dev/null @@ -1,343 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { Readable } from 'stream'; - -import { Settings } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { Importer, ProgressStep } from '../../importer/server'; - -/** @deprecated HipChat was discontinued at 2019-02-15 */ -export class HipChatEnterpriseImporter extends Importer { - constructor(info, importRecord, converterOptions = {}) { - super(info, importRecord, converterOptions); - - this.Readable = Readable; - this.zlib = require('zlib'); - this.tarStream = require('tar-stream'); - this.extract = this.tarStream.extract(); - this.path = path; - } - - parseData(data) { - const dataString = data.toString(); - try { - this.logger.debug('parsing file contents'); - return JSON.parse(dataString); - } catch (e) { - this.logger.error(e); - return false; - } - } - - async prepareUsersFile(file) { - await super.updateProgress(ProgressStep.PREPARING_USERS); - let count = 0; - - for (const u of file) { - const newUser = { - emails: [], - importIds: [String(u.User.id)], - username: u.User.mention_name, - name: u.User.name, - avatarUrl: u.User.avatar && `data:image/png;base64,${u.User.avatar.replace(/\n/g, '')}`, - bio: u.User.title || undefined, - deleted: u.User.is_deleted, - type: 'user', - }; - count++; - - if (u.User.email) { - newUser.emails.push(u.User.email); - } - - this.converter.addUser(newUser); - } - - await Settings.incrementValueById('Hipchat_Enterprise_Importer_Count', count); - await super.updateRecord({ 'count.users': count }); - await super.addCountToTotal(count); - } - - async prepareRoomsFile(file) { - await super.updateProgress(ProgressStep.PREPARING_CHANNELS); - let count = 0; - - for await (const r of file) { - await this.converter.addChannel({ - u: { - _id: r.Room.owner, - }, - importIds: [String(r.Room.id)], - name: r.Room.name, - users: r.Room.members, - t: r.Room.privacy === 'private' ? 'p' : 'c', - topic: r.Room.topic, - ts: new Date(r.Room.created), - archived: r.Room.is_archived, - }); - - count++; - } - - await super.updateRecord({ 'count.channels': count }); - await super.addCountToTotal(count); - } - - async prepareUserMessagesFile(file) { - this.logger.debug(`preparing room with ${file.length} messages `); - let count = 0; - const dmRooms = []; - - for await (const m of file) { - if (!m.PrivateUserMessage) { - continue; - } - - // If the message id is already on the list, skip it - if (this.preparedMessages[m.PrivateUserMessage.id] !== undefined) { - continue; - } - this.preparedMessages[m.PrivateUserMessage.id] = true; - - const senderId = String(m.PrivateUserMessage.sender.id); - const receiverId = String(m.PrivateUserMessage.receiver.id); - const users = [senderId, receiverId].sort(); - - if (!dmRooms[receiverId]) { - dmRooms[receiverId] = await this.converter.findDMForImportedUsers(senderId, receiverId); - - if (!dmRooms[receiverId]) { - const room = { - importIds: [users.join('')], - users, - t: 'd', - ts: new Date(m.PrivateUserMessage.timestamp.split(' ')[0]), - }; - await this.converter.addChannel(room); - dmRooms[receiverId] = room; - } - } - - const rid = dmRooms[receiverId].importIds[0]; - const newMessage = this.convertImportedMessage(m.PrivateUserMessage, rid, 'private'); - count++; - await this.converter.addMessage(newMessage); - } - - return count; - } - - async loadTurndownService() { - const TurndownService = (await import('turndown')).default; - - const turndownService = new TurndownService({ - strongDelimiter: '*', - hr: '', - br: '\n', - }); - - turndownService.addRule('strikethrough', { - filter: 'img', - - replacement(content, node) { - const src = node.getAttribute('src') || ''; - const alt = node.alt || node.title || src; - return src ? `[${alt}](${src})` : ''; - }, - }); - - this.turndownService = turndownService; - - return turndownService; - } - - convertImportedMessage(importedMessage, rid, type) { - const idType = type === 'private' ? type : `${rid}-${type}`; - const newId = `hipchatenterprise-${idType}-${importedMessage.id}`; - - const newMessage = { - _id: newId, - rid, - ts: new Date(importedMessage.timestamp.split(' ')[0]), - u: { - _id: String(importedMessage.sender.id), - }, - }; - - const text = importedMessage.message; - - if (importedMessage.message_format === 'html') { - newMessage.msg = this.turndownService.turndown(text); - } else if (text.startsWith('/me ')) { - newMessage.msg = `${text.replace(/\/me /, '_')}_`; - } else { - newMessage.msg = text; - } - - if (importedMessage.attachment?.url) { - const fileId = `${importedMessage.id}-${importedMessage.attachment.name || 'attachment'}`; - - newMessage._importFile = { - downloadUrl: importedMessage.attachment.url, - id: `${fileId}`, - size: importedMessage.attachment.size || 0, - name: importedMessage.attachment.name, - external: false, - source: 'hipchat-enterprise', - original: { - ...importedMessage.attachment, - }, - }; - } - - return newMessage; - } - - async prepareRoomMessagesFile(file, rid) { - this.logger.debug(`preparing room with ${file.length} messages `); - let count = 0; - - await this.loadTurndownService(); - - for await (const m of file) { - if (m.UserMessage) { - const newMessage = this.convertImportedMessage(m.UserMessage, rid, 'user'); - await this.converter.addMessage(newMessage); - count++; - } else if (m.NotificationMessage) { - const newMessage = this.convertImportedMessage(m.NotificationMessage, rid, 'notif'); - newMessage.u._id = 'rocket.cat'; - newMessage.alias = m.NotificationMessage.sender; - - await this.converter.addMessage(newMessage); - count++; - } else if (m.TopicRoomMessage) { - const newMessage = this.convertImportedMessage(m.TopicRoomMessage, rid, 'topic'); - newMessage.t = 'room_changed_topic'; - - await this.converter.addMessage(newMessage); - count++; - } else if (m.ArchiveRoomMessage) { - this.logger.warn('Archived Room Notification was ignored.'); - } else if (m.GuestAccessMessage) { - this.logger.warn('Guess Access Notification was ignored.'); - } else { - this.logger.error({ msg: "HipChat Enterprise importer isn't configured to handle this message:", file: m }); - } - } - - return count; - } - - async prepareMessagesFile(file, info) { - await super.updateProgress(ProgressStep.PREPARING_MESSAGES); - - const [type, id] = info.dir.split('/'); - const roomIdentifier = `${type}/${id}`; - - await super.updateRecord({ messagesstatus: roomIdentifier }); - - switch (type) { - case 'users': - return this.prepareUserMessagesFile(file); - case 'rooms': - return this.prepareRoomMessagesFile(file, id); - default: - this.logger.error(`HipChat Enterprise importer isn't configured to handle "${type}" files (${info.dir}).`); - return 0; - } - } - - async prepareFile(info, data, fileName) { - const file = this.parseData(data); - if (file === false) { - this.logger.error('failed to parse data'); - return false; - } - - switch (info.base) { - case 'users.json': - await this.prepareUsersFile(file); - break; - case 'rooms.json': - await this.prepareRoomsFile(file); - break; - case 'history.json': - return this.prepareMessagesFile(file, info); - case 'emoticons.json': - case 'metadata.json': - break; - default: - this.logger.error(`HipChat Enterprise importer doesn't know what to do with the file "${fileName}"`); - break; - } - - return 0; - } - - async prepareUsingLocalFile(fullFilePath) { - this.logger.debug('start preparing import operation'); - await this.converter.clearImportData(); - - // HipChat duplicates direct messages (one for each user) - // This object will keep track of messages that have already been prepared so it doesn't try to do it twice - this.preparedMessages = {}; - let messageCount = 0; - - const promise = new Promise((resolve, reject) => { - this.extract.on('entry', (header, stream, next) => { - this.logger.debug(`new entry from import file: ${header.name}`); - if (!header.name.endsWith('.json')) { - stream.resume(); - return next(); - } - - const info = this.path.parse(header.name); - let pos = 0; - let data = Buffer.allocUnsafe(header.size); - - stream.on('data', (chunk) => { - data.fill(chunk, pos, pos + chunk.length); - pos += chunk.length; - }); - - stream.on('end', async () => { - this.logger.info(`Processing the file: ${header.name}`); - const newMessageCount = await this.prepareFile(info, data, header.name); - - messageCount += newMessageCount; - await super.updateRecord({ 'count.messages': messageCount }); - await super.addCountToTotal(newMessageCount); - - data = undefined; - - this.logger.debug('next import entry'); - next(); - }); - - stream.on('error', () => next()); - stream.resume(); - }); - - this.extract.on('error', (err) => { - this.logger.error({ msg: 'extract error:', err }); - reject(new Meteor.Error('error-import-file-extract-error')); - }); - - this.extract.on('finish', resolve); - - const rs = fs.createReadStream(fullFilePath); - const gunzip = this.zlib.createGunzip(); - - gunzip.on('error', (err) => { - this.logger.error({ msg: 'extract error:', err }); - reject(new Meteor.Error('error-import-file-extract-error')); - }); - this.logger.debug('start extracting import file'); - rs.pipe(gunzip).pipe(this.extract); - }); - - return promise; - } -} diff --git a/apps/meteor/app/importer-hipchat-enterprise/server/index.ts b/apps/meteor/app/importer-hipchat-enterprise/server/index.ts deleted file mode 100644 index e50a9b9c4bd3..000000000000 --- a/apps/meteor/app/importer-hipchat-enterprise/server/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Importers } from '../../importer/server'; -import { HipChatEnterpriseImporter } from './HipChatEnterpriseImporter'; - -Importers.add({ - key: 'hipchatenterprise', - name: 'HipChat (tar.gz)', - importer: HipChatEnterpriseImporter, -}); diff --git a/apps/meteor/app/importer/server/classes/ImportDataConverter.ts b/apps/meteor/app/importer/server/classes/ImportDataConverter.ts index 493d14061bf2..fcb32f91ed62 100644 --- a/apps/meteor/app/importer/server/classes/ImportDataConverter.ts +++ b/apps/meteor/app/importer/server/classes/ImportDataConverter.ts @@ -833,13 +833,6 @@ export class ImportDataConverter { await this.updateRoomId(room._id, roomData); } - public async findDMForImportedUsers(...users: Array): Promise { - const record = await ImportData.findDMForImportedUsers(...users); - if (record) { - return record.data; - } - } - async findImportedRoomId(importId: string): Promise { if (this._roomCache.has(importId)) { return this._roomCache.get(importId) as string; diff --git a/apps/meteor/app/importer/server/classes/VirtualDataConverter.ts b/apps/meteor/app/importer/server/classes/VirtualDataConverter.ts index ef850226be5c..8ca9f3b5894c 100644 --- a/apps/meteor/app/importer/server/classes/VirtualDataConverter.ts +++ b/apps/meteor/app/importer/server/classes/VirtualDataConverter.ts @@ -6,7 +6,6 @@ import type { IImportRecord, IImportRecordType, IImportData, - IImportChannel, } from '@rocket.chat/core-typings'; import { Random } from '@rocket.chat/random'; @@ -47,15 +46,6 @@ export class VirtualDataConverter extends ImportDataConverter { this.clearVirtualData(); } - public async findDMForImportedUsers(...users: Array): Promise { - if (!this.useVirtual) { - return super.findDMForImportedUsers(...users); - } - - // The original method is only used by the hipchat importer so we probably don't need to implement this on the virtual converter. - return undefined; - } - public addUserSync(data: IImportUser, options?: Record): void { return this.addObjectSync('user', data, options); } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 481ce9ce9bf6..ef4445fce280 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -426,7 +426,6 @@ "string-strip-html": "^7.0.3", "suretype": "~2.4.1", "swiper": "^9.3.2", - "tar-stream": "^1.6.2", "textarea-caret": "^3.1.0", "tinykeys": "^1.4.0", "turndown": "^7.1.2", diff --git a/apps/meteor/server/importPackages.ts b/apps/meteor/server/importPackages.ts index 2b4e3106ed45..dfda85e52a9e 100644 --- a/apps/meteor/server/importPackages.ts +++ b/apps/meteor/server/importPackages.ts @@ -26,7 +26,6 @@ import '../app/google-oauth/server'; import '../app/iframe-login/server'; import '../app/importer/server'; import '../app/importer-csv/server'; -import '../app/importer-hipchat-enterprise/server'; import '../app/importer-pending-files/server'; import '../app/importer-pending-avatars/server'; import '../app/importer-slack/server'; diff --git a/apps/meteor/server/models/raw/ImportData.ts b/apps/meteor/server/models/raw/ImportData.ts index e38670662a3f..19ec573fa239 100644 --- a/apps/meteor/server/models/raw/ImportData.ts +++ b/apps/meteor/server/models/raw/ImportData.ts @@ -6,7 +6,7 @@ import type { RocketChatRecordDeleted, } from '@rocket.chat/core-typings'; import type { IImportDataModel } from '@rocket.chat/model-typings'; -import type { Collection, FindCursor, Db, Filter, IndexDescription } from 'mongodb'; +import type { Collection, FindCursor, Db, IndexDescription } from 'mongodb'; import { BaseRaw } from './BaseRaw'; @@ -102,15 +102,4 @@ export class ImportDataRaw extends BaseRaw implements IImportData return channel?.data?.importIds?.shift(); } - - findDMForImportedUsers(...users: Array): Promise { - const query: Filter = { - 'dataType': 'channel', - 'data.users': { - $all: users, - }, - }; - - return this.findOne(query); - } } diff --git a/packages/i18n/src/locales/af.i18n.json b/packages/i18n/src/locales/af.i18n.json index 992c74fa1174..1b7efc6ffe68 100644 --- a/packages/i18n/src/locales/af.i18n.json +++ b/packages/i18n/src/locales/af.i18n.json @@ -1272,8 +1272,6 @@ "Importer_done": "Invoer voltooi!", "Importer_finishing": "Voltooi die invoer.", "Importer_From_Description": "Invoer {{from}} data in Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Wees asseblief bewus daarvan dat hierdie invoer nog steeds 'n werk aan die gang is, meld asseblief enige foute wat in GitHub voorkom:", - "Importer_HipChatEnterprise_Information": "Die opgelaaide lêer moet 'n gedecodeerde tar.gz wees, lees asseblief die dokumentasie vir verdere inligting:", "Importer_import_cancelled": "Invoer gekanselleer.", "Importer_import_failed": "'N Fout het voorgekom terwyl die invoer uitgevoer word.", "Importer_importing_channels": "Die kanale invoer.", diff --git a/packages/i18n/src/locales/ar.i18n.json b/packages/i18n/src/locales/ar.i18n.json index b84bae9caf6c..5090db9d2a9c 100644 --- a/packages/i18n/src/locales/ar.i18n.json +++ b/packages/i18n/src/locales/ar.i18n.json @@ -2145,8 +2145,6 @@ "Importer_finishing": "يتم إنهاء الاستيراد.", "Importer_From_Description": "استيراد بيانات {{from}} إلى Rocket.Chat.", "Importer_From_Description_CSV": "استيراد بيانات CSV إلى Rocket.Chat. يجب أن يكون الملف الذي تم رفعه بتنسيق ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "يرجى العلم أن هذا الاستيراد لا يزال قيد التقدم، يُرجى الإبلاغ عن أي أخطاء تحدث في GitHub:", - "Importer_HipChatEnterprise_Information": "يجب أن يكون الملف الذي تم تحميله بتنسيق tar.gz غير مشفر، تُرجى قراءة الوثائق للحصول على مزيد من المعلومات:", "Importer_import_cancelled": "تم إلغاء الاستيراد.", "Importer_import_failed": "حدث خطأ أثناء تشغيل الاستيراد.", "Importer_importing_channels": "يتم استيراد القنوات.", diff --git a/packages/i18n/src/locales/az.i18n.json b/packages/i18n/src/locales/az.i18n.json index a61bb8bbff00..96cea6562dda 100644 --- a/packages/i18n/src/locales/az.i18n.json +++ b/packages/i18n/src/locales/az.i18n.json @@ -1272,8 +1272,6 @@ "Importer_done": "Tamamilə idxal!", "Importer_finishing": "İthalatı bitirmək.", "Importer_From_Description": "Rocket.Chat'a {{from}} data verin.", - "Importer_HipChatEnterprise_BetaWarning": "Xahiş edirik, bu idxal hələ də davam edən bir iş olduğundan xəbərdar edin, GitHub'da meydana gələn hər hansı bir səhv bildirin:", - "Importer_HipChatEnterprise_Information": "Yüklənən fayl şifresi çözülmüş tar.gz olmalıdır, daha ətraflı məlumat üçün sənədləri oxuyun:", "Importer_import_cancelled": "İxrac ləğv edildi.", "Importer_import_failed": "İçeceğinizde çalışırken bir səhv baş verdi.", "Importer_importing_channels": "Kanalları idxal etmək.", diff --git a/packages/i18n/src/locales/be-BY.i18n.json b/packages/i18n/src/locales/be-BY.i18n.json index 865efa0f9c5a..1f769289e35b 100644 --- a/packages/i18n/src/locales/be-BY.i18n.json +++ b/packages/i18n/src/locales/be-BY.i18n.json @@ -1288,8 +1288,6 @@ "Importer_done": "Імпарт завершаны!", "Importer_finishing": "Завяршэнне імпарту.", "Importer_From_Description": "Імпартуе {{from}} дадзеныя ў Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Звярніце ўвагу, што гэты імпарт па-ранейшаму знаходзіцца ў стадыі распрацоўкі, просьба паведамляць пра памылкі, якія адбываюцца ў GitHub:", - "Importer_HipChatEnterprise_Information": "Загружаны файл павінен быць расшыфраваны tar.gz, калі ласка, прачытайце дакументацыю для атрымання дадатковай інфармацыі:", "Importer_import_cancelled": "Імпарт адменены.", "Importer_import_failed": "пры выкананні імпарту адбылася памылка.", "Importer_importing_channels": "Імпарт каналаў.", diff --git a/packages/i18n/src/locales/bg.i18n.json b/packages/i18n/src/locales/bg.i18n.json index 318a310eed56..7a6d9b0aa05a 100644 --- a/packages/i18n/src/locales/bg.i18n.json +++ b/packages/i18n/src/locales/bg.i18n.json @@ -1270,8 +1270,6 @@ "Importer_CSV_Information": "CSV вносителят изисква специален формат, прочетете документацията за това как да структурирате файла с цип:", "Importer_done": "Импортирането е завършено!", "Importer_finishing": "Завършване на импортирането.", - "Importer_HipChatEnterprise_BetaWarning": "Имайте предвид, че този внос все още е в процес на разработка, моля, отчетете всички грешки, които възникват в GitHub:", - "Importer_HipChatEnterprise_Information": "Каченият файл трябва да е декриптиран tar.gz, моля прочетете документацията за допълнителна информация:", "Importer_import_cancelled": "Импортирането бе отменено.", "Importer_import_failed": "Възникна грешка при изпълнение на импортирането.", "Importer_importing_channels": "Импортиране на каналите.", diff --git a/packages/i18n/src/locales/bs.i18n.json b/packages/i18n/src/locales/bs.i18n.json index 86fd7083b2ce..1160aa6857ca 100644 --- a/packages/i18n/src/locales/bs.i18n.json +++ b/packages/i18n/src/locales/bs.i18n.json @@ -1267,8 +1267,6 @@ "Importer_done": "Uvoz dovršen!", "Importer_finishing": "Završavanje uvoza.", "Importer_From_Description": "Uvezi {{from}} podatke u Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Imajte na umu da je taj uvoz još uvijek u tijeku, prijavite sve pogreške koje se pojavljuju u GitHubu:", - "Importer_HipChatEnterprise_Information": "Prenesena datoteka mora biti dekriptirana tar.gz, pročitajte dokumentaciju za daljnje informacije:", "Importer_import_cancelled": "Uvoz je otkazan.", "Importer_import_failed": "Došlo je do pogreške pri izvršavanju uvoza.", "Importer_importing_channels": "Prebacivanje kanala.", diff --git a/packages/i18n/src/locales/ca.i18n.json b/packages/i18n/src/locales/ca.i18n.json index 834ad853ff0f..a587a55e76a4 100644 --- a/packages/i18n/src/locales/ca.i18n.json +++ b/packages/i18n/src/locales/ca.i18n.json @@ -2113,8 +2113,6 @@ "Importer_finishing": "Finalitza la importació.", "Importer_From_Description": "Importa les dades de {{from}} a Rocket.Chat.", "Importer_From_Description_CSV": "Importa dades CSV a Rocket.Chat. El fitxer penjat ha de ser un fitxer ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Tingueu en compte que aquest sistema d'importació encara està en desenvolupament. Si us plau, notifiqueu-nos a GitHub els errors que es produeixin:", - "Importer_HipChatEnterprise_Information": "L'arxiu carregat ha de ser un tar.gz desxifrat, llegiu la documentació per obtenir més informació:", "Importer_import_cancelled": "Importació cancel·lada.", "Importer_import_failed": "S'ha produït un error durant la importació.", "Importer_importing_channels": "Important els canals.", diff --git a/packages/i18n/src/locales/cs.i18n.json b/packages/i18n/src/locales/cs.i18n.json index fcd5c28d37af..4f1a330e64ac 100644 --- a/packages/i18n/src/locales/cs.i18n.json +++ b/packages/i18n/src/locales/cs.i18n.json @@ -1816,8 +1816,6 @@ "Importer_ExternalUrl_Description": "Můžete také použít adresu URL pro veřejně přístupný soubor:", "Importer_finishing": "Dokončuji import.", "Importer_From_Description": "Import dat {{from}} do Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Mějte prosím na paměti, že tato funkcionalita je stále ve vývoji, prosím nahlašte nám jakékoliv chyby přes github:", - "Importer_HipChatEnterprise_Information": "Nahraný soubor musí být nešifrovaný tar.gz, Více informací naleznete v dokumentaci:", "Importer_import_cancelled": "Import zrušen.", "Importer_import_failed": "Došlo k chybě při importu.", "Importer_importing_channels": "Importuji místnosti.", diff --git a/packages/i18n/src/locales/cy.i18n.json b/packages/i18n/src/locales/cy.i18n.json index f9f99d0e6423..98001c0c4cd5 100644 --- a/packages/i18n/src/locales/cy.i18n.json +++ b/packages/i18n/src/locales/cy.i18n.json @@ -1268,8 +1268,6 @@ "Importer_done": "Mewnforio yn gyflawn!", "Importer_finishing": "Gorffen y mewnforio.", "Importer_From_Description": "Mewnforion {{from}} data i Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Cofiwch fod y mewnforio hwn yn dal i fod yn waith ar y gweill, rhowch wybod am unrhyw wallau sy'n digwydd yn GitHub:", - "Importer_HipChatEnterprise_Information": "Rhaid i'r ffeil a lwythir i fyny fod yn tar.gz dadgryptiedig, darllenwch y dogfennau i gael rhagor o wybodaeth:", "Importer_import_cancelled": "Canslo mewnforio.", "Importer_import_failed": "Digwyddodd gwall wrth redeg y mewnforio.", "Importer_importing_channels": "Mewnforio y sianeli.", diff --git a/packages/i18n/src/locales/da.i18n.json b/packages/i18n/src/locales/da.i18n.json index 789fa5347410..d7c00efb1ec2 100644 --- a/packages/i18n/src/locales/da.i18n.json +++ b/packages/i18n/src/locales/da.i18n.json @@ -1908,8 +1908,6 @@ "Importer_ExternalUrl_Description": "Du kan også bruge en URL til en offentlig tilgængelig fil:", "Importer_finishing": "Afslutter importen.", "Importer_From_Description": "Importerer {{from}} data til Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Vær opmærksom på, at denne import stadig er under udvikling. Rapporter venligst eventuelle fejl der opstår til GitHub:", - "Importer_HipChatEnterprise_Information": "Den uploadede fil skal være en dekrypteret tar.gz. Du kan få mere at vide i dokumentationen:", "Importer_import_cancelled": "Import annulleret.", "Importer_import_failed": "Der opstod en fejl under udførelsen af importen.", "Importer_importing_channels": "Importerer kanalerne.", diff --git a/packages/i18n/src/locales/de-AT.i18n.json b/packages/i18n/src/locales/de-AT.i18n.json index b41505392150..c3531b942634 100644 --- a/packages/i18n/src/locales/de-AT.i18n.json +++ b/packages/i18n/src/locales/de-AT.i18n.json @@ -1274,8 +1274,6 @@ "Importer_done": "Die Daten wurden erfolgreich importiert!", "Importer_finishing": "Import abgeschlossen.", "Importer_From_Description": "Importiert Daten von {{from}} nach Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Bitte beachten Sie, dass dieser Import noch in Arbeit ist. Bitte melden Sie alle Fehler, die in GitHub auftreten:", - "Importer_HipChatEnterprise_Information": "Die hochgeladene Datei muss eine entschlüsselte tar.gz sein. Bitte lesen Sie die Dokumentation für weitere Informationen:", "Importer_import_cancelled": "Der Import wurde abgebrochen.", "Importer_import_failed": "Während des Importierens ist ein Fehler aufgetreten.", "Importer_importing_channels": "Importiere die Kanäle.", diff --git a/packages/i18n/src/locales/de-IN.i18n.json b/packages/i18n/src/locales/de-IN.i18n.json index 719cfe9da4fd..e02ce12b7a8c 100644 --- a/packages/i18n/src/locales/de-IN.i18n.json +++ b/packages/i18n/src/locales/de-IN.i18n.json @@ -1464,8 +1464,6 @@ "Importer_ExternalUrl_Description": "Du kannst eine öffentlich erreichbare URL zur Datei angeben.", "Importer_finishing": "Import abgeschlossen.", "Importer_From_Description": "Importiert Daten von {{from}} nach Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Bitte beachte, dass sich dieser Importer noch in der Entwicklung befindet. Bitte melde Fehler auf GitHub: ", - "Importer_HipChatEnterprise_Information": "Die hochgeladene Datei muss ein nicht-verschlüsseltes tar.gz sein. Bitte lies die Dokumentation für weiterführende Informationen.", "Importer_import_cancelled": "Der Import wurde abgebrochen.", "Importer_import_failed": "Während des Importierens ist ein Fehler aufgetreten.", "Importer_importing_channels": "Importiere die Kanäle.", diff --git a/packages/i18n/src/locales/de.i18n.json b/packages/i18n/src/locales/de.i18n.json index 64e30aeec0fc..eaebe5fdb97e 100644 --- a/packages/i18n/src/locales/de.i18n.json +++ b/packages/i18n/src/locales/de.i18n.json @@ -2386,8 +2386,6 @@ "Importer_finishing": "Import abgeschlossen.", "Importer_From_Description": "Importiert Daten von {{from}} nach Rocket.Chat.", "Importer_From_Description_CSV": "Importiert CSV-Daten in Rocket.Chat. Die hochgeladene Fatei muss eine ZIP-Datei sein.", - "Importer_HipChatEnterprise_BetaWarning": "Bitte beachten Sie, dass sich dieser Importer noch in der Entwicklung befindet. Bitte berichten Sie über Fehler auf GitHub: ", - "Importer_HipChatEnterprise_Information": "Die hochgeladene Datei muss ein nicht verschlüsseltes tar.gz sein. Bitte lesen Sie die Dokumentation für weiterführende Informationen:", "Importer_import_cancelled": "Der Import wurde abgebrochen.", "Importer_import_failed": "Während des Importierens ist ein Fehler aufgetreten.", "Importer_importing_channels": "Importiere die Kanäle.", diff --git a/packages/i18n/src/locales/el.i18n.json b/packages/i18n/src/locales/el.i18n.json index 4cf3b7764dd0..6f655452f5ba 100644 --- a/packages/i18n/src/locales/el.i18n.json +++ b/packages/i18n/src/locales/el.i18n.json @@ -1279,8 +1279,6 @@ "Importer_done": "Εισαγωγή πλήρης!", "Importer_finishing": "Ολοκλήρωση της εισαγωγής.", "Importer_From_Description": "Οι εισαγωγές {{from}} δεδομένων's σε Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Λάβετε υπόψη ότι αυτή η εισαγωγή εξακολουθεί να είναι εργασία σε εξέλιξη, αναφέρετε τυχόν λάθη που εμφανίζονται στο GitHub:", - "Importer_HipChatEnterprise_Information": "Το φορτωμένο αρχείο πρέπει να είναι αποκρυπτογραφημένο tar.gz, διαβάστε την τεκμηρίωση για περισσότερες πληροφορίες:", "Importer_import_cancelled": "Εισαγωγής ακυρωθεί.", "Importer_import_failed": "Παρουσιάστηκε σφάλμα κατά την εκτέλεση της εισαγωγής.", "Importer_importing_channels": "Εισάγει τα κανάλια.", diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index 24fb91023e1a..f617150c8a46 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -2557,7 +2557,6 @@ "Highlights": "Highlights", "Highlights_How_To": "To be notified when someone mentions a word or phrase, add it here. You can separate words or phrases with commas. Highlight Words are not case sensitive.", "Highlights_List": "Highlight words", - "HipChat (tar.gz)": "HipChat (tar.gz)", "History": "History", "Hold_Time": "Hold Time", "Hold": "Hold", @@ -2623,8 +2622,6 @@ "Importer_finishing": "Finishing up the import.", "Importer_From_Description": "Imports {{from}} data into Rocket.Chat.", "Importer_From_Description_CSV": "Imports CSV data into Rocket.Chat. The uploaded file must be a ZIP file.", - "Importer_HipChatEnterprise_BetaWarning": "Please be aware that this import is still a work in progress, please report any errors which occur in GitHub:", - "Importer_HipChatEnterprise_Information": "The file uploaded must be a decrypted tar.gz, please read the documentation for further information:", "Importer_import_cancelled": "Import cancelled.", "Importer_import_failed": "An error occurred while running the import.", "Importer_importing_channels": "Importing the channels.", diff --git a/packages/i18n/src/locales/eo.i18n.json b/packages/i18n/src/locales/eo.i18n.json index 5631b9240ffa..a49a4034c79e 100644 --- a/packages/i18n/src/locales/eo.i18n.json +++ b/packages/i18n/src/locales/eo.i18n.json @@ -1272,8 +1272,6 @@ "Importer_done": "Importante kompletan!", "Importer_finishing": "Finante la importadon.", "Importer_From_Description": "Importas {{from}}-datumojn en Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Bonvolu konscii, ke ĉi tiu importado ankoraŭ estas progreso, bonvolu raporti iujn erarojn, kiuj okazas en GitHub:", - "Importer_HipChatEnterprise_Information": "La dosiero alŝutita devas esti senĉifrita tar.gz, bonvolu legi la dokumentadon por pliaj informoj:", "Importer_import_cancelled": "Importi nuligita.", "Importer_import_failed": "Eraro okazis dum ĝi funkciis la importadon.", "Importer_importing_channels": "Importante la kanaloj.", diff --git a/packages/i18n/src/locales/es.i18n.json b/packages/i18n/src/locales/es.i18n.json index d992ceef246f..7891d2f1bf9b 100644 --- a/packages/i18n/src/locales/es.i18n.json +++ b/packages/i18n/src/locales/es.i18n.json @@ -2132,8 +2132,6 @@ "Importer_finishing": "Terminando la importación.", "Importer_From_Description": "Importa datos de {{from}} a Rocket.Chat.", "Importer_From_Description_CSV": "Importa datos en formato CSV a Rocket.Chat. El archivo subido debe ser un archivo ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Ten en cuenta que esta importación aún se está desarrollando. Informa acerca de cualquier error que ocurra en GitHub:", - "Importer_HipChatEnterprise_Information": "El archivo subido debe ser un archivo tar.gz descifrado. Consulta la documentación para obtener más información:", "Importer_import_cancelled": "Importación cancelada.", "Importer_import_failed": "Se ha producido un error durante la ejecución de la importación.", "Importer_importing_channels": "Importando los canales.", diff --git a/packages/i18n/src/locales/fa.i18n.json b/packages/i18n/src/locales/fa.i18n.json index c812d39a543a..4db4cf410051 100644 --- a/packages/i18n/src/locales/fa.i18n.json +++ b/packages/i18n/src/locales/fa.i18n.json @@ -1531,8 +1531,6 @@ "Importer_done": "وارد کردن تمام شد!", "Importer_finishing": "پایان دادن به وارد کردن.", "Importer_From_Description": "داده های {{from}} را وارد Rocket.chat می کند.", - "Importer_HipChatEnterprise_BetaWarning": "لطفا توجه داشته باشید که این واردات همچنان یک کار در حال انجام است، لطفا هر خطایی که در GitHub رخ می دهد گزارش دهید:", - "Importer_HipChatEnterprise_Information": "فایل آپلود شده باید یک tar.gz رمزگشایی شود، لطفا مستندات بیشتری برای اطلاعات بیشتر بخوانید:", "Importer_import_cancelled": "وارد کردن لغو شد.", "Importer_import_failed": "هنگام وارد کردن خطایی رخ داد.", "Importer_importing_channels": "وارد کردن کانال ها.", diff --git a/packages/i18n/src/locales/fi.i18n.json b/packages/i18n/src/locales/fi.i18n.json index 53f1c0cb4dc1..ab38b092818f 100644 --- a/packages/i18n/src/locales/fi.i18n.json +++ b/packages/i18n/src/locales/fi.i18n.json @@ -2428,8 +2428,6 @@ "Importer_finishing": "Viimeistellään tuontia.", "Importer_From_Description": "Tuo tiedot kohteesta {{from}} Rocket.Chatiin.", "Importer_From_Description_CSV": "Tuo CSV-tiedot Rocket.Chatiin. Ladatun tiedoston on oltava ZIP-tiedosto.", - "Importer_HipChatEnterprise_BetaWarning": "Huomaa, että tuontitoiminto on edelleen kehitteillä. Ilmoita virheistä GitHubissa:", - "Importer_HipChatEnterprise_Information": "Ladattavan tiedoston on oltava purettu tar.gz-tiedosto. Katso lisätietoja oppaista:", "Importer_import_cancelled": "Tuonti peruutettu.", "Importer_import_failed": "Virhe tuotaessa.", "Importer_importing_channels": "Tuodaan kanavia.", diff --git a/packages/i18n/src/locales/fr.i18n.json b/packages/i18n/src/locales/fr.i18n.json index 436669e5c14f..d252075095ea 100644 --- a/packages/i18n/src/locales/fr.i18n.json +++ b/packages/i18n/src/locales/fr.i18n.json @@ -2131,8 +2131,6 @@ "Importer_finishing": "Finalisation de l'importation.", "Importer_From_Description": "Importer les données de {{from}} dans Rocket.Chat.", "Importer_From_Description_CSV": "Importe des données CSV dans Rocket.Chat. Le fichier chargé doit être un fichier ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Notez que la fonction d'importation est toujours en cours de développement, veuillez signaler toute erreur dans GitHub :", - "Importer_HipChatEnterprise_Information": "Le fichier chargé doit être au format tar.gz déchiffré, lisez la documentation pour plus d'informations :", "Importer_import_cancelled": "Importation annulée.", "Importer_import_failed": "Une erreur est survenue lors de l'importation.", "Importer_importing_channels": "Importation des canaux.", diff --git a/packages/i18n/src/locales/hr.i18n.json b/packages/i18n/src/locales/hr.i18n.json index e88c450fc6ce..56e7ef52e447 100644 --- a/packages/i18n/src/locales/hr.i18n.json +++ b/packages/i18n/src/locales/hr.i18n.json @@ -1403,8 +1403,6 @@ "Importer_done": "Uvoz dovršen!", "Importer_finishing": "Završavanje uvoza.", "Importer_From_Description": "Uvezi {{from}} podatke u Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Imajte na umu da je taj uvoz još uvijek u tijeku, prijavite sve pogreške koje se pojavljuju u GitHubu:", - "Importer_HipChatEnterprise_Information": "Prenesena datoteka mora biti dekriptirana tar.gz, pročitajte dokumentaciju za daljnje informacije:", "Importer_import_cancelled": "Uvoz je otkazan.", "Importer_import_failed": "Došlo je do pogreške pri izvršavanju uvoza.", "Importer_importing_channels": "Prebacivanje kanala.", diff --git a/packages/i18n/src/locales/hu.i18n.json b/packages/i18n/src/locales/hu.i18n.json index d352ad6492a3..1bd51c87958e 100644 --- a/packages/i18n/src/locales/hu.i18n.json +++ b/packages/i18n/src/locales/hu.i18n.json @@ -2342,8 +2342,6 @@ "Importer_finishing": "Az importálás befejezése.", "Importer_From_Description": "{{from}}-adatokat importál a Rocket.Chatbe.", "Importer_From_Description_CSV": "CSV-adatokat importál a Rocket.Chatbe. A feltöltött fájlnak ZIP-fájlnak kell lennie.", - "Importer_HipChatEnterprise_BetaWarning": "Felhívjuk a figyelmét, hogy ennek az importálásnak a munkálatai még folyamatban vannak, az esetleges hibákat a GitHubon jelentse:", - "Importer_HipChatEnterprise_Information": "A feltöltött fájlnak visszafejtett tar.gz-nek kell lennie, olvassa el a dokumentációt további információkért:", "Importer_import_cancelled": "Az importálás megszakítva.", "Importer_import_failed": "Hiba történt az importálás futása során.", "Importer_importing_channels": "A csatornák importálása.", diff --git a/packages/i18n/src/locales/id.i18n.json b/packages/i18n/src/locales/id.i18n.json index e0656e017425..59cdd3a2e559 100644 --- a/packages/i18n/src/locales/id.i18n.json +++ b/packages/i18n/src/locales/id.i18n.json @@ -1272,8 +1272,6 @@ "Importer_done": "Mengimpor lengkap!", "Importer_finishing": "Menyelesaikan impor.", "Importer_From_Description": "Impor {{from}} Data's menjadi Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Perlu diketahui bahwa impor ini masih dalam proses penyelesaian, laporkan kesalahan yang terjadi di GitHub:", - "Importer_HipChatEnterprise_Information": "File yang diunggah harus berupa tar.gz terdekrip, baca dokumentasi untuk informasi lebih lanjut:", "Importer_import_cancelled": "Impor dibatalkan.", "Importer_import_failed": "Terjadi kesalahan saat menjalankan impor.", "Importer_importing_channels": "Mengimpor saluran.", diff --git a/packages/i18n/src/locales/it.i18n.json b/packages/i18n/src/locales/it.i18n.json index c40e8e2a5fd7..654f0ce7d5d7 100644 --- a/packages/i18n/src/locales/it.i18n.json +++ b/packages/i18n/src/locales/it.i18n.json @@ -1678,8 +1678,6 @@ "Importer_done": "Importazione completata!", "Importer_finishing": "In fase di terminazione dell'importazione.", "Importer_From_Description": "Importa i dati da {{from}} in Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Nota che questa importazione è in sviluppo, riporta ogni errori che può avvenire su GitHub:", - "Importer_HipChatEnterprise_Information": "Il file caricato deve essere un file tar.gz decriptato, leggi la documentazione per altre informazioni:", "Importer_import_cancelled": "Importazione annullata.", "Importer_import_failed": "Si è verificato un errore durante l'esecuzione dell'importazione.", "Importer_importing_channels": "In fase d'importazione dei canali.", diff --git a/packages/i18n/src/locales/ja.i18n.json b/packages/i18n/src/locales/ja.i18n.json index 27a99598d88d..504c8ef27205 100644 --- a/packages/i18n/src/locales/ja.i18n.json +++ b/packages/i18n/src/locales/ja.i18n.json @@ -2107,8 +2107,6 @@ "Importer_finishing": "インポートを終了しています。", "Importer_From_Description": "{{from}}のデータをRocket.Chatへインポートします。", "Importer_From_Description_CSV": "CSVデータをRocket.Chatにインポートします。アップロードするファイルはZIPファイルである必要があります。", - "Importer_HipChatEnterprise_BetaWarning": "このインポートはまだ進行中です。GitHubで発生したエラーを報告してください。", - "Importer_HipChatEnterprise_Information": "アップロードされるファイルは暗号化を解除されたtar.gzでなければなりません。詳細はドキュメントを参照してください。", "Importer_import_cancelled": "インポートをキャンセルしました。", "Importer_import_failed": "インポートの実行中にエラーが発生しました。", "Importer_importing_channels": "チャネルをインポートしています。", diff --git a/packages/i18n/src/locales/ka-GE.i18n.json b/packages/i18n/src/locales/ka-GE.i18n.json index 7e28a9792559..32c128f412c1 100644 --- a/packages/i18n/src/locales/ka-GE.i18n.json +++ b/packages/i18n/src/locales/ka-GE.i18n.json @@ -1717,8 +1717,6 @@ "Importer_ExternalUrl_Description": "თქვენ ასევე შეგიძლიათ ნახოთ ბმული საჯარო წვდომის ფაილისთვის", "Importer_finishing": "იმპორტი სრულდება", "Importer_From_Description": "მონაცემებს აიმპორტებს {{from}}-დან Rocket.Chat-ში", - "Importer_HipChatEnterprise_BetaWarning": "გთხოვთ გაითვალისწინოთ, რომ ეს იმპორტი კვლავ შემუშავების პროცესშია \n გთხოვთ, აცნობეთ შეცდომების შესახებ GitHub– ში:", - "Importer_HipChatEnterprise_Information": "ატვირთული ფაილი უნდა იყოს გაშიფრული tar.gz, დამატებითი ინფორმაციისთვის წაიკითხეთ დოკუმენტაცია:", "Importer_import_cancelled": "იმპორტი გაუქმდა.", "Importer_import_failed": "იმპორტისას მოხდა შეცდომა.", "Importer_importing_channels": "არხების იმპორტი.", diff --git a/packages/i18n/src/locales/km.i18n.json b/packages/i18n/src/locales/km.i18n.json index f995ba297bd0..03012fd5fba0 100644 --- a/packages/i18n/src/locales/km.i18n.json +++ b/packages/i18n/src/locales/km.i18n.json @@ -1528,8 +1528,6 @@ "Importer_ExternalUrl_Description": "អ្នកក៏អាចប្រើ URL សម្រាប់ឯកសារអាចចូលដំណើរការជាសាធារណៈបានដែរ:", "Importer_finishing": "បញ្ចប់ការនាំចូល។", "Importer_From_Description": "ការនាំចូល {{from}} ទិន្នន័យ's បានចូលទៅក្នុង Rocket.Chat ។", - "Importer_HipChatEnterprise_BetaWarning": "សូមជ្រាបថាការនាំចូលនេះនៅតែជាការងារកំពុងដំណើរការសូមរាយការណ៍កំហុសទាំងឡាយដែលកើតឡើងនៅក្នុង GitHub:", - "Importer_HipChatEnterprise_Information": "ឯកសារដែលបានផ្ទុកឡើងត្រូវតែជាឌីជីថលដែលបានឌិគ្រីបសូមអានឯកសារសម្រាប់ព័ត៌មានបន្ថែម:", "Importer_import_cancelled": "នាំចូលលុបចោល។", "Importer_import_failed": "កំហុសមួយបានកើតឡើងខណៈពេលកំពុងរត់ការនាំចូល។", "Importer_importing_channels": "ការនាំចូលបណ្តាញនេះ។", diff --git a/packages/i18n/src/locales/ko.i18n.json b/packages/i18n/src/locales/ko.i18n.json index 7f1fae38eda4..0f05dd38853f 100644 --- a/packages/i18n/src/locales/ko.i18n.json +++ b/packages/i18n/src/locales/ko.i18n.json @@ -1869,8 +1869,6 @@ "Importer_ExternalUrl_Description": "외부에서 접근할 수 있는 파일의 URL을 사용할 수 있습니다.", "Importer_finishing": "가져오기 마무리 중..", "Importer_From_Description": "{{from}} 데이터를 Rocket.Chat으로 가져옵니다.", - "Importer_HipChatEnterprise_BetaWarning": "이 가져 오기가 아직 진행 중이므로 GitHub에서 발생하는 모든 오류를보고하십시오.", - "Importer_HipChatEnterprise_Information": "업로드 된 파일은 해독 된 tar.gz 여야합니다. 자세한 내용은 설명서를 참조하십시오.", "Importer_import_cancelled": "가져오기가 취소되었습니다.", "Importer_import_failed": "가져오기를 실행하는 동안 오류가 발생했습니다.", "Importer_importing_channels": "채널 가져오기", diff --git a/packages/i18n/src/locales/ku.i18n.json b/packages/i18n/src/locales/ku.i18n.json index ccf008f20b78..61713f69a0cb 100644 --- a/packages/i18n/src/locales/ku.i18n.json +++ b/packages/i18n/src/locales/ku.i18n.json @@ -1267,8 +1267,6 @@ "Importer_done": "Importing temam!", "Importer_finishing": "Despêk xwe import.", "Importer_From_Description": "Imports {{from}} welat's nav Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Ji kerema xwe bizanibin ku ev import jî hîn jî di pêşveçûnê de ye, kerema ku li GitHubê pêk tê rapor bikin:", - "Importer_HipChatEnterprise_Information": "Divê belgeyê belaş divê tar.gz, ji kerema xwe belgeyên bêtir agahdarî belgeyên bixwînin:", "Importer_import_cancelled": "Import betalkirin.", "Importer_import_failed": "dema ku li import An error teqîn pêk hat.", "Importer_importing_channels": "Importing kanalên.", diff --git a/packages/i18n/src/locales/lo.i18n.json b/packages/i18n/src/locales/lo.i18n.json index ce86290fe61e..05f70a1c6cd0 100644 --- a/packages/i18n/src/locales/lo.i18n.json +++ b/packages/i18n/src/locales/lo.i18n.json @@ -1306,8 +1306,6 @@ "Importer_done": "ການນໍາເຂົ້າທີ່ສົມບູນ!", "Importer_finishing": "ສໍາເລັດເຖິງການນໍາເຂົ້າ.", "Importer_From_Description": "ການນໍາເຂົ້າ {{from}} ຂໍ້ມູນ's ເຂົ້າໄປໃນ Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "ໂປດທາບວ່າການນໍາເຂົ້ານີ້ຍັງຄົງເປັນວຽກທີ່ກໍາລັງດໍາເນີນການ, ກະລຸນາລາຍງານຂໍ້ຜິດພາດທີ່ເກີດຂື້ນໃນ GitHub:", - "Importer_HipChatEnterprise_Information": "ໄຟລ໌ທີ່ອັບໂຫລດຕ້ອງເປັນ tar.gz ທີ່ຖືກລະຫັດ, ກະລຸນາອ່ານເອກສານສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ:", "Importer_import_cancelled": "ການນໍາເຂົ້າຍົກເລີກ.", "Importer_import_failed": "ເກີດຄວາມຜິດພາດໃນຂະນະທີ່ເຮັດວຽກການນໍາເຂົ້າ.", "Importer_importing_channels": "ການນໍາເຂົ້າຊ່ອງທາງການ.", diff --git a/packages/i18n/src/locales/lt.i18n.json b/packages/i18n/src/locales/lt.i18n.json index 350049212f85..92ca4296c88c 100644 --- a/packages/i18n/src/locales/lt.i18n.json +++ b/packages/i18n/src/locales/lt.i18n.json @@ -1327,8 +1327,6 @@ "Importer_done": "Importavimas baigtas!", "Importer_finishing": "Užbaigti importą.", "Importer_From_Description": "Importuoja {{from}} duomenis į Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Atminkite, kad šis importas vis dar vyksta, prašome pranešti apie klaidas, kurios atsiranda \"GitHub\":", - "Importer_HipChatEnterprise_Information": "Įkeltas failas turi būti iššifruotas tar.gz, prašome perskaityti dokumentus, kad gautumėte papildomos informacijos:", "Importer_import_cancelled": "Importas atšauktas.", "Importer_import_failed": "Paleidus importą įvyko klaida.", "Importer_importing_channels": "Kanalų importavimas.", diff --git a/packages/i18n/src/locales/lv.i18n.json b/packages/i18n/src/locales/lv.i18n.json index f74ff4a62af2..69f0a7adb3ae 100644 --- a/packages/i18n/src/locales/lv.i18n.json +++ b/packages/i18n/src/locales/lv.i18n.json @@ -1283,8 +1283,6 @@ "Importer_CSV_Information": "CSV importer ir nepieciešams noteikts formāts, lūdzu, izlasiet dokumentāciju, kā veidot savu zip failu:", "Importer_done": "Importēšana ir pabeigta.", "Importer_finishing": "Importēšanas pabeigšana.", - "Importer_HipChatEnterprise_BetaWarning": "Lūdzu, ņemiet vērā, ka šis importēšana joprojām turpinās darbu, lūdzu, ziņojiet par visām kļūdām, kas rodas GitHub:", - "Importer_HipChatEnterprise_Information": "Augšupielādētajam failam jābūt atšifrētam tar.gz, lūdzu, izlasiet dokumentāciju, lai saņemtu sīkāku informāciju:", "Importer_import_cancelled": "Imports ir atcelts.", "Importer_import_failed": "Veicot importēšanu, radās kļūda.", "Importer_importing_channels": "Kanālu importēšana.", diff --git a/packages/i18n/src/locales/mn.i18n.json b/packages/i18n/src/locales/mn.i18n.json index df3463de92a9..19f9614e779e 100644 --- a/packages/i18n/src/locales/mn.i18n.json +++ b/packages/i18n/src/locales/mn.i18n.json @@ -1267,8 +1267,6 @@ "Importer_CSV_Information": "CSV-ийн импортлогч тодорхой форматыг шаарддаг бөгөөд таны zip файлыг хэрхэн бүтээх талаар баримтжуулалтыг уншина уу:", "Importer_done": "Бүрэн импортлох!", "Importer_finishing": "Импортыг дуусгах.", - "Importer_HipChatEnterprise_BetaWarning": "Энэ импорт нь одоо ч ажил дуусч байгаа гэдгийг анхаарна уу, GitHub-д тохиолддог аливаа алдааг мэдээлнэ үү:", - "Importer_HipChatEnterprise_Information": "Байршуулсан файл нь шифрлэгдсэн tar.gz байна, дэлгэрэнгүй мэдээллийг баримтжуулж уншина уу:", "Importer_import_cancelled": "Импорт цуцлагдсан.", "Importer_import_failed": "Импортыг ажиллуулж байхад алдаа гарлаа.", "Importer_importing_channels": "Суваг оруулах.", diff --git a/packages/i18n/src/locales/ms-MY.i18n.json b/packages/i18n/src/locales/ms-MY.i18n.json index 065170e2ee3b..dd95e255eef9 100644 --- a/packages/i18n/src/locales/ms-MY.i18n.json +++ b/packages/i18n/src/locales/ms-MY.i18n.json @@ -1270,8 +1270,6 @@ "Importer_done": "Mengimport lengkap!", "Importer_finishing": "Hampir selesai import.", "Importer_From_Description": "Import {{from}} data's ke dalam Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Harap maklum bahawa import ini masih merupakan kerja yang sedang berjalan, sila laporkan kesilapan yang berlaku di GitHub:", - "Importer_HipChatEnterprise_Information": "Fail yang dimuat naik mestilah tar.gz disahsulit, sila baca dokumentasi untuk maklumat lanjut:", "Importer_import_cancelled": "Import dibatalkan.", "Importer_import_failed": "Ralat berlaku semasa berjalan import.", "Importer_importing_channels": "Mengimport saluran.", diff --git a/packages/i18n/src/locales/nl.i18n.json b/packages/i18n/src/locales/nl.i18n.json index 93433dff0bee..4c76ee3998dd 100644 --- a/packages/i18n/src/locales/nl.i18n.json +++ b/packages/i18n/src/locales/nl.i18n.json @@ -2123,8 +2123,6 @@ "Importer_finishing": "Afwerking van de import.", "Importer_From_Description": "Impoort {{from}}-gegevens in Rocket.Chat.", "Importer_From_Description_CSV": "Importeert CSV-gegevens in Rocket.Chat. De geüploade file moet een ZIP-bestand zijn.", - "Importer_HipChatEnterprise_BetaWarning": "Houd er rekening mee dat deze import nog steeds in uitvoering is, meld eventuele fouten die optreden op GitHub:", - "Importer_HipChatEnterprise_Information": "Het geüploade bestand moet een gedecodeerde tar.gz zijn, lees de documentatie voor meer informatie:", "Importer_import_cancelled": "Import geannuleerd.", "Importer_import_failed": "Er is een fout opgetreden tijdens het importeren.", "Importer_importing_channels": "Kanalen aan het importeren.", diff --git a/packages/i18n/src/locales/no.i18n.json b/packages/i18n/src/locales/no.i18n.json index 769e58c1e6a8..4c2e8231e952 100644 --- a/packages/i18n/src/locales/no.i18n.json +++ b/packages/i18n/src/locales/no.i18n.json @@ -2211,8 +2211,6 @@ "Importer_done": "Importerer komplett!", "Importer_finishing": "Fullfører importen.", "Importer_From_Description": "Importerer data fra {{from}} til Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Vær oppmerksom på at denne importen fortsatt er et pågående arbeid, vennligst rapporter eventuelle feil som oppstår i GitHub:", - "Importer_HipChatEnterprise_Information": "Filen som lastes opp må være en dekryptert tar.gz, vennligst les dokumentasjonen for ytterligere informasjon:", "Importer_import_cancelled": "Import avbrutt.", "Importer_import_failed": "Det oppsto en feil under kjøring av importen.", "Importer_importing_channels": "Importerer kanalene.", diff --git a/packages/i18n/src/locales/pl.i18n.json b/packages/i18n/src/locales/pl.i18n.json index 9043a5137fa2..8d8a6d7f8b81 100644 --- a/packages/i18n/src/locales/pl.i18n.json +++ b/packages/i18n/src/locales/pl.i18n.json @@ -2315,8 +2315,6 @@ "Importer_finishing": "Kończąc się na import.", "Importer_From_Description": "Import danych {{from}} 's do Rocket.Chat.", "Importer_From_Description_CSV": "Importuje dane CSV do Rocket.Chat. Przesłany plik musi być plikiem ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Należy pamiętać, że ten import jest nadal w toku, zgłoś wszelkie błędy występujące w GitHub:", - "Importer_HipChatEnterprise_Information": "Przesłany plik musi być odszyfrowanym tar.gz. Aby uzyskać więcej informacji, przeczytaj dokumentację:", "Importer_import_cancelled": "Importowanie anulowane.", "Importer_import_failed": "Wystąpił błąd podczas wykonywania importu.", "Importer_importing_channels": "Importowanie kanałów.", diff --git a/packages/i18n/src/locales/pt-BR.i18n.json b/packages/i18n/src/locales/pt-BR.i18n.json index 0cc43f6fb508..8471abc55503 100644 --- a/packages/i18n/src/locales/pt-BR.i18n.json +++ b/packages/i18n/src/locales/pt-BR.i18n.json @@ -2189,8 +2189,6 @@ "Importer_finishing": "Terminando a importação.", "Importer_From_Description": "Importa dados de {{from}} para o Rocket.Chat.", "Importer_From_Description_CSV": "Importa dados de CSV para o Rocket.Chat. O arquivo importado deve ser um arquivo ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Saiba que esta importação é ainda um trabalho em andamento; informe quaisquer erros que ocorrerem no GitHub:", - "Importer_HipChatEnterprise_Information": "O arquivo carregado deve ser um tar.gz descriptografado; leia a documentação para obter mais informações:", "Importer_import_cancelled": "Importação cancelada.", "Importer_import_failed": "Ocorreu um erro durante a execução da importação.", "Importer_importing_channels": "Importando os canais.", diff --git a/packages/i18n/src/locales/pt.i18n.json b/packages/i18n/src/locales/pt.i18n.json index c3bf9d739b21..dce6b7a84ab0 100644 --- a/packages/i18n/src/locales/pt.i18n.json +++ b/packages/i18n/src/locales/pt.i18n.json @@ -1516,8 +1516,6 @@ "Importer_ExternalUrl_Description": "Você também pode usar um URL para um arquivo acessível publicamente:", "Importer_finishing": "A terminar importação.", "Importer_From_Description": "Importar dados de {{from}} para o Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Lembre-se de que esta importação ainda é um trabalho em andamento, informe quaisquer erros que ocorram no GitHub:", - "Importer_HipChatEnterprise_Information": "O arquivo carregado deve ser um tar.gz descienciado, leia a documentação para obter mais informações:", "Importer_import_cancelled": "Importação cancelada.", "Importer_import_failed": "Ocorreu um erro durante a execução da importação.", "Importer_importing_channels": "A importar os canais.", diff --git a/packages/i18n/src/locales/ro.i18n.json b/packages/i18n/src/locales/ro.i18n.json index 8f6974fde123..1682d381eba6 100644 --- a/packages/i18n/src/locales/ro.i18n.json +++ b/packages/i18n/src/locales/ro.i18n.json @@ -1271,8 +1271,6 @@ "Importer_done": "Import complet!", "Importer_finishing": "Se finalizează import.", "Importer_From_Description": "Importuri {{from}} 's date în Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Rețineți că acest import este încă o operațiune în curs, vă rugăm să raportați orice erori apărute în GitHub:", - "Importer_HipChatEnterprise_Information": "Fișierul încărcat trebuie să fie un tar.gz decriptat, citiți documentația pentru mai multe informații:", "Importer_import_cancelled": "Import anulat.", "Importer_import_failed": "A Apărut o eroare în timpul importului.", "Importer_importing_channels": "Se importă canalele.", diff --git a/packages/i18n/src/locales/ru.i18n.json b/packages/i18n/src/locales/ru.i18n.json index 577fcd3eaf49..b71382186315 100644 --- a/packages/i18n/src/locales/ru.i18n.json +++ b/packages/i18n/src/locales/ru.i18n.json @@ -2280,8 +2280,6 @@ "Importer_finishing": "Завершить импорт данных.", "Importer_From_Description": "Импортировать данные из {{from}} в Rocket.Chat.", "Importer_From_Description_CSV": "Импортирует данные файла CSV в Rocket.Chat. Загруженный файл должен быть в формате ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Имейте в виду, что импорт всё ещё продолжается. Пожалуйста, сообщите о любых возникающих ошибках на GitHub:", - "Importer_HipChatEnterprise_Information": "Загруженный файл должен быть расшифрованным tar.gz, пожалуйста, прочитайте документацию для получения дополнительной информации:", "Importer_import_cancelled": "Импорт данных отменен.", "Importer_import_failed": "Во время импорта данных возникла ошибка.", "Importer_importing_channels": "Импортировать каналы.", diff --git a/packages/i18n/src/locales/sk-SK.i18n.json b/packages/i18n/src/locales/sk-SK.i18n.json index 27100c086c67..8f8c70d6f72a 100644 --- a/packages/i18n/src/locales/sk-SK.i18n.json +++ b/packages/i18n/src/locales/sk-SK.i18n.json @@ -1282,8 +1282,6 @@ "Importer_done": "Import je dokončený!", "Importer_finishing": "Dokončenie importu.", "Importer_From_Description": "Importuje {{from}} dáta do Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Majte na pamäti, že tento import je stále prebiehajúcim procesom, nahláste všetky chyby, ktoré sa vyskytli v GitHub:", - "Importer_HipChatEnterprise_Information": "Nahraný súbor musí byť dešifrovaný tar.gz, prečítajte si prosím dokumentáciu pre ďalšie informácie:", "Importer_import_cancelled": "Import bol zrušený.", "Importer_import_failed": "Počas spúšťania importu sa vyskytla chyba.", "Importer_importing_channels": "Importovanie kanálov.", diff --git a/packages/i18n/src/locales/sl-SI.i18n.json b/packages/i18n/src/locales/sl-SI.i18n.json index a3630f6ce6c6..9bbec55b124f 100644 --- a/packages/i18n/src/locales/sl-SI.i18n.json +++ b/packages/i18n/src/locales/sl-SI.i18n.json @@ -1263,8 +1263,6 @@ "Importer_done": "Uvoz končan!", "Importer_finishing": "Končujem uvoz. ", "Importer_From_Description": "Uvozi {{from}} podatki v Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Upoštevajte, da uvoz še kar poteka, prijavite napake, ki so se zgodile v GitHub:", - "Importer_HipChatEnterprise_Information": "Naložena datoteka mora biti dešifrirana tar.gz, za več informacij preberite navodila. ", "Importer_import_cancelled": "Uvoz preklican. ", "Importer_import_failed": "Napaka med uvozom.", "Importer_importing_channels": "Uvažanje kanalov. ", diff --git a/packages/i18n/src/locales/sq.i18n.json b/packages/i18n/src/locales/sq.i18n.json index 73e0ca0a56ed..92dd5cf8bb9f 100644 --- a/packages/i18n/src/locales/sq.i18n.json +++ b/packages/i18n/src/locales/sq.i18n.json @@ -1271,8 +1271,6 @@ "Importer_done": "Importimi i plotë!", "Importer_finishing": "Përfunduar importin.", "Importer_From_Description": "Importet {{from}} dhënat's në Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Ju lutemi, kini parasysh se ky import ende është një punë në vazhdim, ju lutem raportoni çdo gabim që ndodh në GitHub:", - "Importer_HipChatEnterprise_Information": "Skedari i ngarkuar duhet të jetë tar.gz i dekriptuar, ju lutem lexoni dokumentacionin për informacione të mëtejshme:", "Importer_import_cancelled": "Import anuluar.", "Importer_import_failed": "Ndodhi një gabim gjatë drejtimin e importit.", "Importer_importing_channels": "Importimin e kanaleve.", diff --git a/packages/i18n/src/locales/sr.i18n.json b/packages/i18n/src/locales/sr.i18n.json index 4a741a750d4f..2de1204a86e3 100644 --- a/packages/i18n/src/locales/sr.i18n.json +++ b/packages/i18n/src/locales/sr.i18n.json @@ -1153,8 +1153,6 @@ "Importer_CSV_Information": "ЦСВ увознику је потребан одређени формат, молимо прочитајте документацију како структурирати своју зип датотеку:", "Importer_done": "Увоз завршен!", "Importer_finishing": "Завршавање увоза.", - "Importer_HipChatEnterprise_BetaWarning": "Имајте на уму да је овај увоз и даље посао у току, пријавите грешке које се јављају у ГитХуб-у:", - "Importer_HipChatEnterprise_Information": "Датотека која је отпремљена мора бити дешифрована тар.гз, прочитајте документацију за додатне информације:", "Importer_import_cancelled": "Увоз отказан.", "Importer_import_failed": "Дошло је до грешке приликом увоза.", "Importer_importing_channels": "Увожење канала.", diff --git a/packages/i18n/src/locales/sv.i18n.json b/packages/i18n/src/locales/sv.i18n.json index 843e70fbaa38..064581ae07ca 100644 --- a/packages/i18n/src/locales/sv.i18n.json +++ b/packages/i18n/src/locales/sv.i18n.json @@ -2432,8 +2432,6 @@ "Importer_finishing": "Avslutar importen.", "Importer_From_Description": "Importera {{from}}s data till Rocket.Chat.", "Importer_From_Description_CSV": "Importerar CSV-data till Rocket.Chat. Den uppladdade filen måste vara en zip-fil.", - "Importer_HipChatEnterprise_BetaWarning": "Var medveten om att denna import fortfarande är ett pågående arbete, var god rapportera eventuella fel som uppstår i GitHub:", - "Importer_HipChatEnterprise_Information": "Den uppladdade filen måste vara en dekrypterad tar.gz, läs dokumentationen för ytterligare information:", "Importer_import_cancelled": "Import avbruten.", "Importer_import_failed": "Ett fel uppstod under importen.", "Importer_importing_channels": "Importerar kanalerna.", diff --git a/packages/i18n/src/locales/ta-IN.i18n.json b/packages/i18n/src/locales/ta-IN.i18n.json index 7ae4d9a96653..54ac84c6552b 100644 --- a/packages/i18n/src/locales/ta-IN.i18n.json +++ b/packages/i18n/src/locales/ta-IN.i18n.json @@ -1271,8 +1271,6 @@ "Importer_done": "முழுமையான இறக்குமதி!", "Importer_finishing": "இறக்குமதி முடிக்கிறது.", "Importer_From_Description": "இறக்குமதி Rocket.Chat ஒரு 'கள் தரவு {{from}}.", - "Importer_HipChatEnterprise_BetaWarning": "இந்த இறக்குமதி இன்னமும் முன்னேற்றம் அடைந்ததை நினைவில் கொள்ளுங்கள், தயவுசெய்து GitHub இல் ஏற்படும் எந்த பிழைகளையும் தெரிவிக்கவும்:", - "Importer_HipChatEnterprise_Information": "பதிவேற்றிய கோப்பு ஒரு குறியாக்கப்பட்ட tar.gz ஆக இருக்க வேண்டும், மேலும் தகவலுக்கு ஆவணங்களைப் படிக்கவும்:", "Importer_import_cancelled": "இறக்குமதி ரத்துசெய்யப்பட்டது.", "Importer_import_failed": "இறக்குமதி இயங்கும் போது ஒரு பிழை ஏற்பட்டது.", "Importer_importing_channels": "சேனல்கள் இறக்குமதி.", diff --git a/packages/i18n/src/locales/th-TH.i18n.json b/packages/i18n/src/locales/th-TH.i18n.json index e9f3705b559f..c3120a791770 100644 --- a/packages/i18n/src/locales/th-TH.i18n.json +++ b/packages/i18n/src/locales/th-TH.i18n.json @@ -1266,8 +1266,6 @@ "Importer_CSV_Information": "ตัวนำเข้า CSV ต้องการรูปแบบเฉพาะโปรดอ่านเอกสารสำหรับวิธีจัดโครงสร้างไฟล์ซิปของคุณ:", "Importer_done": "การนำเข้าเสร็จสมบูรณ์!", "Importer_finishing": "เสร็จสิ้นการนำเข้า", - "Importer_HipChatEnterprise_BetaWarning": "โปรดทราบว่าการนำเข้านี้ยังคงเป็นงานระหว่างดำเนินการโปรดรายงานข้อผิดพลาดที่เกิดขึ้นใน GitHub:", - "Importer_HipChatEnterprise_Information": "ไฟล์ที่อัปโหลดต้องเป็น tar.gad ถอดรหัสลับโปรดอ่านเอกสารประกอบสำหรับข้อมูลเพิ่มเติม:", "Importer_import_cancelled": "ยกเลิกการนำเข้าแล้ว", "Importer_import_failed": "เกิดข้อผิดพลาดขณะเรียกใช้งานนำเข้า", "Importer_importing_channels": "การนำเข้าช่อง", diff --git a/packages/i18n/src/locales/tr.i18n.json b/packages/i18n/src/locales/tr.i18n.json index fbfe4c1a1d8c..023058c4a346 100644 --- a/packages/i18n/src/locales/tr.i18n.json +++ b/packages/i18n/src/locales/tr.i18n.json @@ -1540,8 +1540,6 @@ "Importer_ExternalUrl_Description": "Herkesin erişebileceği dosya için bir URL de kullanabilirsiniz:", "Importer_finishing": "İçe aktarım tamamlanıyor.", "Importer_From_Description": "{{from}} verisini Rocket.Chat'e aktarır.", - "Importer_HipChatEnterprise_BetaWarning": "Bu içe aktarma işlemi halen devam etmekte olan bir çalışma olduğuna dikkat edin, lütfen GitHub'ta oluşan hataları bildirin:", - "Importer_HipChatEnterprise_Information": "Yüklenen dosya, şifresi çözülmüş bir tar.gz olmalıdır; daha fazla bilgi için lütfen belgeleri okuyun:", "Importer_import_cancelled": "İçe aktarım iptal edildi.", "Importer_import_failed": "İçe aktarım sırasında bir hata oluştu.", "Importer_importing_channels": "Kanallar içe aktarılıyor.", diff --git a/packages/i18n/src/locales/uk.i18n.json b/packages/i18n/src/locales/uk.i18n.json index 6ae5a028387f..4478bf77a7e8 100644 --- a/packages/i18n/src/locales/uk.i18n.json +++ b/packages/i18n/src/locales/uk.i18n.json @@ -1685,8 +1685,6 @@ "Importer_ExternalUrl_Description": "Ви також можете використовувати URL-адресу для загальнодоступного файлу:", "Importer_finishing": "Завершення імпорту.", "Importer_From_Description": "Imports {{from}} data в Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Будь ласка, пам'ятайте, що цей імпорт все ще працює, повідомте про всі помилки, які виникають в GitHub:", - "Importer_HipChatEnterprise_Information": "Завантажений файл повинен бути розшифрованим tar.gz, будь ласка, ознайомтеся з документацією для отримання додаткової інформації:", "Importer_import_cancelled": "Імпорт скасований.", "Importer_import_failed": "Сталася помилка під час виконання імпорту.", "Importer_importing_channels": "Імпорт каналів.", diff --git a/packages/i18n/src/locales/vi-VN.i18n.json b/packages/i18n/src/locales/vi-VN.i18n.json index 21fc37f11f01..3ab142c2e056 100644 --- a/packages/i18n/src/locales/vi-VN.i18n.json +++ b/packages/i18n/src/locales/vi-VN.i18n.json @@ -1365,8 +1365,6 @@ "Importer_done": "Nhập đầy đủ!", "Importer_finishing": "Hoàn thành việc nhập dữ liệu.", "Importer_From_Description": "Nhập dữ liệu {{from}} vào Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Xin lưu ý rằng phần nhập dữ liệu này vẫn đang trong quá trình hoàn thiện, hãy báo cáo bất kỳ lỗi nào xảy ra tại GitHub:", - "Importer_HipChatEnterprise_Information": "Tệp được tải lên phải là tệp được giải mã tar.gz, vui lòng đọc tài liệu để biết thêm thông tin:", "Importer_import_cancelled": "Nhập dữ liệu bị hủy.", "Importer_import_failed": "Đã xảy ra lỗi khi chạy.", "Importer_importing_channels": "Nhập các kênh.", diff --git a/packages/i18n/src/locales/zh-HK.i18n.json b/packages/i18n/src/locales/zh-HK.i18n.json index fa44a7fed369..4a658c74e957 100644 --- a/packages/i18n/src/locales/zh-HK.i18n.json +++ b/packages/i18n/src/locales/zh-HK.i18n.json @@ -1292,8 +1292,6 @@ "Importer_done": "导入完成!", "Importer_finishing": "完成进口。", "Importer_From_Description": "将{{from}}数据导入Rocket.Chat。", - "Importer_HipChatEnterprise_BetaWarning": "请注意,此导入仍在进行中,请报告GitHub中发生的任何错误:", - "Importer_HipChatEnterprise_Information": "上传的文件必须是解密的tar.gz,请阅读文档以获取更多信息:", "Importer_import_cancelled": "导入已取消。", "Importer_import_failed": "运行导入时发生错误。", "Importer_importing_channels": "导入频道。", diff --git a/packages/i18n/src/locales/zh-TW.i18n.json b/packages/i18n/src/locales/zh-TW.i18n.json index d15e7739f226..9a7f1990fb3f 100644 --- a/packages/i18n/src/locales/zh-TW.i18n.json +++ b/packages/i18n/src/locales/zh-TW.i18n.json @@ -2084,8 +2084,6 @@ "Importer_finishing": "完成了匯入。", "Importer_From_Description": "匯入{{from}}的資料轉換成Rocket.Chat。", "Importer_From_Description_CSV": "匯入 CSV 資料到 Rocket.Chat。上傳的檔案必須為 ZIP 檔。", - "Importer_HipChatEnterprise_BetaWarning": "請注意,此匯入仍在進行中,請報告GitHub中發生的任何錯誤:", - "Importer_HipChatEnterprise_Information": "上傳的文件必須是解密的tar.gz,請閱讀文件以獲取更多訊息:", "Importer_import_cancelled": "匯入已取消。", "Importer_import_failed": "在執行匯入時出錯。", "Importer_importing_channels": "匯入頻道。", diff --git a/packages/i18n/src/locales/zh.i18n.json b/packages/i18n/src/locales/zh.i18n.json index b5a972637d81..d656c787a1df 100644 --- a/packages/i18n/src/locales/zh.i18n.json +++ b/packages/i18n/src/locales/zh.i18n.json @@ -1901,8 +1901,6 @@ "Importer_ExternalUrl_Description": "您还可以将URL用于可公开访问的文件:", "Importer_finishing": "导入即将完成。", "Importer_From_Description": "将 {{from}} 数据导入 Rocket.Chat。", - "Importer_HipChatEnterprise_BetaWarning": "请注意,导入功能尚处于开发阶段,如有错误发生请在 GitHub 向我们反馈:", - "Importer_HipChatEnterprise_Information": "上传的文件必须为未加密的 tar.gz 文件,请查阅文档进一步了解相关信息:", "Importer_import_cancelled": "已取消导入。", "Importer_import_failed": "导入过程中发生错误!", "Importer_importing_channels": "正在导入频道。", diff --git a/packages/model-typings/src/models/IImportDataModel.ts b/packages/model-typings/src/models/IImportDataModel.ts index 160eaaf604a0..95eaa8a4ce0d 100644 --- a/packages/model-typings/src/models/IImportDataModel.ts +++ b/packages/model-typings/src/models/IImportDataModel.ts @@ -12,5 +12,4 @@ export interface IImportDataModel extends IBaseModel { checkIfDirectMessagesExists(): Promise; countMessages(): Promise; findChannelImportIdByNameOrImportId(channelIdentifier: string): Promise; - findDMForImportedUsers(...users: Array): Promise; } diff --git a/yarn.lock b/yarn.lock index 86e7f4ae9ed9..0c354697f5e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9511,7 +9511,6 @@ __metadata: supports-color: ~7.2.0 suretype: ~2.4.1 swiper: ^9.3.2 - tar-stream: ^1.6.2 template-file: ^6.0.1 textarea-caret: ^3.1.0 tinykeys: ^1.4.0 @@ -39463,7 +39462,7 @@ __metadata: languageName: node linkType: hard -"tar-stream@npm:^1.5.2, tar-stream@npm:^1.6.2": +"tar-stream@npm:^1.5.2": version: 1.6.2 resolution: "tar-stream@npm:1.6.2" dependencies: From c2ab323783329407a830e08ea7ab0d1c25a272d5 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Thu, 11 Apr 2024 23:57:14 -0300 Subject: [PATCH 04/18] chore!: Removed Mongo 4.4. support and added 7.0 (#32162) Co-authored-by: Diego Sampaio --- .changeset/fair-seahorses-laugh.md | 13 +++++++++++++ .changeset/fluffy-knives-count.md | 5 +++++ .github/workflows/ci-test-e2e.yml | 6 +++--- .github/workflows/ci.yml | 8 ++++---- apps/meteor/server/startup/serverRunning.js | 10 +++++----- docker-compose-local.yml | 8 ++++---- 6 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 .changeset/fair-seahorses-laugh.md create mode 100644 .changeset/fluffy-knives-count.md diff --git a/.changeset/fair-seahorses-laugh.md b/.changeset/fair-seahorses-laugh.md new file mode 100644 index 000000000000..8f93695a8e17 --- /dev/null +++ b/.changeset/fair-seahorses-laugh.md @@ -0,0 +1,13 @@ +--- +'@rocket.chat/meteor': major +--- + +As per MongoDB Lifecycle Schedules ([mongodb.com/legal/support-policy/lifecycles](https://www.mongodb.com/legal/support-policy/lifecycles)) we're removing official support to MongoDB version 4.4 that has reached end of life in February 2024. + +We recommend upgrading to at least MongoDB 6.0+, though 5.0 is still a supported version. + +Here are official docs on how to upgrade to some of the supported versions: + +- [mongodb.com/docs/manual/release-notes/5.0-upgrade-replica-set](https://www.mongodb.com/docs/manual/release-notes/5.0-upgrade-replica-set/) +- [mongodb.com/docs/manual/release-notes/6.0-upgrade-replica-set](https://www.mongodb.com/docs/manual/release-notes/6.0-upgrade-replica-set/) +- [mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/) diff --git a/.changeset/fluffy-knives-count.md b/.changeset/fluffy-knives-count.md new file mode 100644 index 000000000000..4e4e8aad3631 --- /dev/null +++ b/.changeset/fluffy-knives-count.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": major +--- + +Added MongoDB 7.0 support diff --git a/.github/workflows/ci-test-e2e.yml b/.github/workflows/ci-test-e2e.yml index a7a6f3f367e2..11d0a1e4262a 100644 --- a/.github/workflows/ci-test-e2e.yml +++ b/.github/workflows/ci-test-e2e.yml @@ -29,7 +29,7 @@ on: transporter: type: string mongodb-version: - default: "['4.4', '6.0']" + default: "['5.0', '7.0']" required: false type: string release: @@ -74,8 +74,8 @@ jobs: test: runs-on: ubuntu-20.04 env: - RC_DOCKERFILE: ${{ matrix.mongodb-version == '6.0' && inputs.rc-dockerfile-alpine || inputs.rc-dockerfile }} - RC_DOCKER_TAG: ${{ matrix.mongodb-version == '6.0' && inputs.rc-docker-tag-alpine || inputs.rc-docker-tag }} + RC_DOCKERFILE: ${{ matrix.mongodb-version == '7.0' && inputs.rc-dockerfile-alpine || inputs.rc-dockerfile }} + RC_DOCKER_TAG: ${{ matrix.mongodb-version == '7.0' && inputs.rc-docker-tag-alpine || inputs.rc-docker-tag }} strategy: fail-fast: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 51e034505a85..5a3dfbf87d87 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,7 +117,7 @@ jobs: fi; curl -H "Content-Type: application/json" -H "X-Update-Token: $UPDATE_TOKEN" -d \ - "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"4.4\", \"5.0\", \"6.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"draft\", \"draftAs\": \"$RC_RELEASE\"}" \ + "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"5.0\", \"6.0\", \"7.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"draft\", \"draftAs\": \"$RC_RELEASE\"}" \ https://releases.rocket.chat/update packages-build: @@ -348,7 +348,7 @@ jobs: release: ee transporter: 'nats://nats:4222' enterprise-license: ${{ needs.release-versions.outputs.enterprise-license }} - mongodb-version: "['4.4']" + mongodb-version: "['5.0']" node-version: ${{ needs.release-versions.outputs.node-version }} lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} rc-dockerfile: ${{ needs.release-versions.outputs.rc-dockerfile }} @@ -372,7 +372,7 @@ jobs: enterprise-license: ${{ needs.release-versions.outputs.enterprise-license }} shard: '[1, 2, 3, 4, 5]' total-shard: 5 - mongodb-version: "['4.4']" + mongodb-version: "['5.0']" node-version: ${{ needs.release-versions.outputs.node-version }} lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} rc-dockerfile: ${{ needs.release-versions.outputs.rc-dockerfile }} @@ -720,7 +720,7 @@ jobs: fi; curl -H "Content-Type: application/json" -H "X-Update-Token: $UPDATE_TOKEN" -d \ - "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"4.4\", \"5.0\", \"6.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"$RC_RELEASE\"}" \ + "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"5.0\", \"6.0\", \"7.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"$RC_RELEASE\"}" \ https://releases.rocket.chat/update # Makes build fail if the release isn't there diff --git a/apps/meteor/server/startup/serverRunning.js b/apps/meteor/server/startup/serverRunning.js index 8d572036f16a..d642c006c4d2 100644 --- a/apps/meteor/server/startup/serverRunning.js +++ b/apps/meteor/server/startup/serverRunning.js @@ -78,8 +78,8 @@ Meteor.startup(async () => { exitIfNotBypassed(process.env.BYPASS_NODEJS_VALIDATION); } - if (!semver.satisfies(semver.coerce(mongoVersion), '>=4.4.0')) { - msg += ['', '', 'YOUR CURRENT MONGODB VERSION IS NOT SUPPORTED,', 'PLEASE UPGRADE TO VERSION 4.4 OR LATER'].join('\n'); + if (semver.satisfies(semver.coerce(mongoVersion), '<5.0.0')) { + msg += ['', '', 'YOUR CURRENT MONGODB VERSION IS NOT SUPPORTED,', 'PLEASE UPGRADE TO VERSION 5.0 OR LATER'].join('\n'); showErrorBox('SERVER ERROR', msg); exitIfNotBypassed(process.env.BYPASS_MONGO_VALIDATION); @@ -88,11 +88,11 @@ Meteor.startup(async () => { showSuccessBox('SERVER RUNNING', msg); // Deprecation - if (!skipMongoDbDeprecationCheck && !semver.satisfies(semver.coerce(mongoVersion), '>=5.0.0')) { + if (!skipMongoDbDeprecationCheck && semver.satisfies(semver.coerce(mongoVersion), '<6.0.0')) { msg = [ `YOUR CURRENT MONGODB VERSION (${mongoVersion}) IS DEPRECATED.`, - 'IT WILL NOT BE SUPPORTED ON ROCKET.CHAT VERSION 7.0.0 AND GREATER,', - 'PLEASE UPGRADE MONGODB TO VERSION 5.0 OR GREATER', + 'IT WILL NOT BE SUPPORTED ON ROCKET.CHAT VERSION 8.0.0 AND GREATER,', + 'PLEASE UPGRADE MONGODB TO VERSION 6.0 OR GREATER', ].join('\n'); showWarningBox('DEPRECATION', msg); diff --git a/docker-compose-local.yml b/docker-compose-local.yml index 16c64187461a..812899c7d946 100644 --- a/docker-compose-local.yml +++ b/docker-compose-local.yml @@ -112,7 +112,7 @@ services: - 'host.docker.internal:host-gateway' depends_on: - nats - + queue-worker-service: platform: linux/amd64 build: @@ -128,7 +128,7 @@ services: - 'host.docker.internal:host-gateway' depends_on: - nats - + omnichannel-transcript-service: platform: linux/amd64 build: @@ -144,9 +144,9 @@ services: - 'host.docker.internal:host-gateway' depends_on: - nats - + mongo: - image: docker.io/bitnami/mongodb:4.4 + image: docker.io/bitnami/mongodb:7.0 restart: on-failure environment: MONGODB_REPLICA_SET_MODE: primary From 68fee687f7f168aac55d1fd357eea26c1dcb8597 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Wed, 24 Apr 2024 09:47:33 -0300 Subject: [PATCH 05/18] rebase with mongo --- .github/workflows/ci-test-e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-test-e2e.yml b/.github/workflows/ci-test-e2e.yml index 11d0a1e4262a..c68789ff46fd 100644 --- a/.github/workflows/ci-test-e2e.yml +++ b/.github/workflows/ci-test-e2e.yml @@ -83,7 +83,7 @@ jobs: mongodb-version: ${{ fromJSON(inputs.mongodb-version) }} shard: ${{ fromJSON(inputs.shard) }} - name: MongoDB ${{ matrix.mongodb-version }} (${{ matrix.shard }}/${{ inputs.total-shard }})${{ matrix.mongodb-version == '6.0' && ' - Alpine' || '' }} + name: MongoDB ${{ matrix.mongodb-version }} (${{ matrix.shard }}/${{ inputs.total-shard }})${{ matrix.mongodb-version == '7.0' && ' - Alpine' || '' }} steps: - name: Login to GitHub Container Registry From 42bde44f096b6184873aa73aa9f8e1a539e3b6eb Mon Sep 17 00:00:00 2001 From: matheusbsilva137 Date: Mon, 29 Apr 2024 19:39:52 -0300 Subject: [PATCH 06/18] chore: Improve permissions check on im endpoints --- apps/meteor/app/api/server/v1/im.ts | 12 +- .../tests/end-to-end/api/04-direct-message.js | 166 ++++++++++-------- 2 files changed, 92 insertions(+), 86 deletions(-) diff --git a/apps/meteor/app/api/server/v1/im.ts b/apps/meteor/app/api/server/v1/im.ts index a640318a9cd0..1084ac96a188 100644 --- a/apps/meteor/app/api/server/v1/im.ts +++ b/apps/meteor/app/api/server/v1/im.ts @@ -395,7 +395,7 @@ API.v1.addRoute( API.v1.addRoute( ['dm.messages.others', 'im.messages.others'], - { authRequired: true }, + { authRequired: true, permissionsRequired: ['view-room-administration'] }, { async get() { if (settings.get('API_Enable_Direct_Message_History_EndPoint') !== true) { @@ -404,10 +404,6 @@ API.v1.addRoute( }); } - if (!(await hasPermissionAsync(this.userId, 'view-room-administration'))) { - return API.v1.unauthorized(); - } - const { roomId } = this.queryParams; if (!roomId) { throw new Meteor.Error('error-roomid-param-not-provided', 'The parameter "roomId" is required'); @@ -483,13 +479,9 @@ API.v1.addRoute( API.v1.addRoute( ['dm.list.everyone', 'im.list.everyone'], - { authRequired: true }, + { authRequired: true, permissionsRequired: ['view-room-administration'] }, { async get() { - if (!(await hasPermissionAsync(this.userId, 'view-room-administration'))) { - return API.v1.unauthorized(); - } - const { offset, count }: { offset: number; count: number } = await getPaginationItems(this.queryParams); const { sort, fields, query } = await this.parseJsonQuery(); diff --git a/apps/meteor/tests/end-to-end/api/04-direct-message.js b/apps/meteor/tests/end-to-end/api/04-direct-message.js index be8868ef6b48..c5c2a80d4691 100644 --- a/apps/meteor/tests/end-to-end/api/04-direct-message.js +++ b/apps/meteor/tests/end-to-end/api/04-direct-message.js @@ -206,29 +206,51 @@ describe('[Direct Messages]', function () { .end(done); }); - it('/im.list.everyone', (done) => { - request - .get(api('im.list.everyone')) - .set(credentials) - .expect('Content-Type', 'application/json') - .expect(200) - .expect((res) => { - expect(res.body).to.have.property('success', true); - expect(res.body).to.have.property('count', 1); - expect(res.body).to.have.property('total', 1); - expect(res.body).to.have.property('ims').and.to.be.an('array'); - const im = res.body.ims[0]; - expect(im).to.have.property('_id'); - expect(im).to.have.property('t').and.to.be.eq('d'); - expect(im).to.have.property('msgs').and.to.be.a('number'); - expect(im).to.have.property('usernames').and.to.be.an('array'); - expect(im).to.have.property('ro'); - expect(im).to.have.property('sysMes'); - expect(im).to.have.property('_updatedAt'); - expect(im).to.have.property('ts'); - expect(im).to.have.property('lastMessage'); - }) - .end(done); + describe('/im.list.everyone', () => { + before(async () => { + return updatePermission('view-room-administration', ['admin']); + }); + + after(async () => { + return updatePermission('view-room-administration', ['admin']); + }); + + it('should succesfully return a list of direct messages', async () => { + await request + .get(api('im.list.everyone')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('count', 1); + expect(res.body).to.have.property('total', 1); + expect(res.body).to.have.property('ims').and.to.be.an('array'); + const im = res.body.ims[0]; + expect(im).to.have.property('_id'); + expect(im).to.have.property('t').and.to.be.eq('d'); + expect(im).to.have.property('msgs').and.to.be.a('number'); + expect(im).to.have.property('usernames').and.to.be.an('array'); + expect(im).to.have.property('ro'); + expect(im).to.have.property('sysMes'); + expect(im).to.have.property('_updatedAt'); + expect(im).to.have.property('ts'); + expect(im).to.have.property('lastMessage'); + }); + }); + + it('should fail if user does NOT have the view-room-administration permission', async () => { + await updatePermission('view-room-administration', []); + await request + .get(api('im.list.everyone')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); + }); + }); }); describe("Setting: 'Use Real Name': true", () => { @@ -355,63 +377,55 @@ describe('[Direct Messages]', function () { }); describe('/im.messages.others', () => { - it('should fail when the endpoint is disabled', (done) => { - updateSetting('API_Enable_Direct_Message_History_EndPoint', false).then(() => { - request - .get(api('im.messages.others')) - .set(credentials) - .query({ - roomId: directMessage._id, - }) - .expect('Content-Type', 'application/json') - .expect(400) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body).to.have.property('errorType', 'error-endpoint-disabled'); - }) - .end(done); - }); + it('should fail when the endpoint is disabled', async () => { + await updateSetting('API_Enable_Direct_Message_History_EndPoint', false); + await request + .get(api('im.messages.others')) + .set(credentials) + .query({ + roomId: directMessage._id, + }) + .expect('Content-Type', 'application/json') + .expect(400) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('errorType', 'error-endpoint-disabled'); + }); }); - it('should fail when the endpoint is enabled but the user doesnt have permission', (done) => { - updateSetting('API_Enable_Direct_Message_History_EndPoint', true).then(() => { - updatePermission('view-room-administration', []).then(() => { - request - .get(api('im.messages.others')) - .set(credentials) - .query({ - roomId: directMessage._id, - }) - .expect('Content-Type', 'application/json') - .expect(403) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body).to.have.property('error', 'unauthorized'); - }) - .end(done); + it('should fail when the endpoint is enabled but the user doesnt have permission', async () => { + await updateSetting('API_Enable_Direct_Message_History_EndPoint', true); + await updatePermission('view-room-administration', []); + await request + .get(api('im.messages.others')) + .set(credentials) + .query({ + roomId: directMessage._id, + }) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); }); - }); }); - it('should succeed when the endpoint is enabled and user has permission', (done) => { - updateSetting('API_Enable_Direct_Message_History_EndPoint', true).then(() => { - updatePermission('view-room-administration', ['admin']).then(() => { - request - .get(api('im.messages.others')) - .set(credentials) - .query({ - roomId: directMessage._id, - }) - .expect('Content-Type', 'application/json') - .expect(200) - .expect((res) => { - expect(res.body).to.have.property('success', true); - expect(res.body).to.have.property('messages').and.to.be.an('array'); - expect(res.body).to.have.property('offset'); - expect(res.body).to.have.property('count'); - expect(res.body).to.have.property('total'); - }) - .end(done); + it('should succeed when the endpoint is enabled and user has permission', async () => { + await updateSetting('API_Enable_Direct_Message_History_EndPoint', true); + await updatePermission('view-room-administration', ['admin']); + await request + .get(api('im.messages.others')) + .set(credentials) + .query({ + roomId: directMessage._id, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('messages').and.to.be.an('array'); + expect(res.body).to.have.property('offset'); + expect(res.body).to.have.property('count'); + expect(res.body).to.have.property('total'); }); - }); }); }); From 94b238dbacfe150d045a19961093e92df67b2bcb Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Mon, 8 Apr 2024 19:27:10 -0300 Subject: [PATCH 07/18] chore: bump 7.0.0 --- apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- packages/core-typings/package.json | 2 +- packages/rest-typings/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 5878bf0b3190..34642c087e2e 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "6.9.0-develop" + "version": "7.0.0-develop" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 082f80665849..5f766d672ebb 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "6.9.0-develop", + "version": "7.0.0-develop", "private": true, "author": { "name": "Rocket.Chat", diff --git a/package.json b/package.json index d59418429c34..4e0b99fa9daa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "6.9.0-develop", + "version": "7.0.0-develop", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index 0c7fadfe0c35..41c4dd6d06bc 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/package", "name": "@rocket.chat/core-typings", "private": true, - "version": "6.9.0-develop", + "version": "7.0.0-develop", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "eslint": "~8.45.0", diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 9d2f040a8582..1a5d60ef618d 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/rest-typings", "private": true, - "version": "6.9.0-develop", + "version": "7.0.0-develop", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "@types/jest": "~29.5.7", From fcc9265d0acf7423a88eb86ef5cdbdd5dd1d96a7 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 9 Apr 2024 13:47:21 -0300 Subject: [PATCH 08/18] fix!: api login should not suggest which credential is wrong (#32159) --- .changeset/fuzzy-cherries-buy.md | 7 +++++++ .../lib/server/lib/loginErrorMessageOverride.js | 14 -------------- .../lib/server/lib/loginErrorMessageOverride.ts | 16 ++++++++++++++++ .../client/meteorOverrides/login/google.ts | 10 ---------- .../externals/meteor/accounts-base.d.ts | 10 +++++++++- .../end-to-end/api/31-failed-login-attempts.ts | 2 +- 6 files changed, 33 insertions(+), 26 deletions(-) create mode 100644 .changeset/fuzzy-cherries-buy.md delete mode 100644 apps/meteor/app/lib/server/lib/loginErrorMessageOverride.js create mode 100644 apps/meteor/app/lib/server/lib/loginErrorMessageOverride.ts diff --git a/.changeset/fuzzy-cherries-buy.md b/.changeset/fuzzy-cherries-buy.md new file mode 100644 index 000000000000..e185a148c917 --- /dev/null +++ b/.changeset/fuzzy-cherries-buy.md @@ -0,0 +1,7 @@ +--- +"@rocket.chat/meteor": major +--- + +Api login should not suggest which credential is wrong (password/username) + +Failed login attemps will always return `Unauthorized` instead of the internal fail reason diff --git a/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.js b/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.js deleted file mode 100644 index 4e054b81b2cf..000000000000 --- a/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.js +++ /dev/null @@ -1,14 +0,0 @@ -// Do not disclose if user exists when password is invalid -import { Accounts } from 'meteor/accounts-base'; -import { Meteor } from 'meteor/meteor'; - -const { _runLoginHandlers } = Accounts; -Accounts._runLoginHandlers = function (methodInvocation, options) { - const result = _runLoginHandlers.call(Accounts, methodInvocation, options); - - if (result.error && result.error.reason === 'Incorrect password') { - result.error = new Meteor.Error(403, 'User not found'); - } - - return result; -}; diff --git a/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.ts b/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.ts new file mode 100644 index 000000000000..e2a6e0d10581 --- /dev/null +++ b/apps/meteor/app/lib/server/lib/loginErrorMessageOverride.ts @@ -0,0 +1,16 @@ +// Do not disclose if user exists when password is invalid +import { Accounts } from 'meteor/accounts-base'; +import { Meteor } from 'meteor/meteor'; + +const { _runLoginHandlers } = Accounts; + +Accounts._options.ambiguousErrorMessages = true; +Accounts._runLoginHandlers = async function (methodInvocation, options) { + const result = await _runLoginHandlers.call(Accounts, methodInvocation, options); + + if (result.error instanceof Meteor.Error) { + result.error = new Meteor.Error(401, 'User not found'); + } + + return result; +}; diff --git a/apps/meteor/client/meteorOverrides/login/google.ts b/apps/meteor/client/meteorOverrides/login/google.ts index 2742cade15d2..4e99ac3a281b 100644 --- a/apps/meteor/client/meteorOverrides/login/google.ts +++ b/apps/meteor/client/meteorOverrides/login/google.ts @@ -8,16 +8,6 @@ import { overrideLoginMethod, type LoginCallback } from '../../lib/2fa/overrideL import { wrapRequestCredentialFn } from '../../lib/wrapRequestCredentialFn'; import { createOAuthTotpLoginMethod } from './oauth'; -declare module 'meteor/accounts-base' { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace Accounts { - export const _options: { - restrictCreationByEmailDomain?: string | (() => string); - forbidClientAccountCreation?: boolean | undefined; - }; - } -} - declare module 'meteor/meteor' { // eslint-disable-next-line @typescript-eslint/no-namespace namespace Meteor { diff --git a/apps/meteor/definition/externals/meteor/accounts-base.d.ts b/apps/meteor/definition/externals/meteor/accounts-base.d.ts index 3f0b148120e7..f51c2f383987 100644 --- a/apps/meteor/definition/externals/meteor/accounts-base.d.ts +++ b/apps/meteor/definition/externals/meteor/accounts-base.d.ts @@ -22,7 +22,7 @@ declare module 'meteor/accounts-base' { function _insertLoginToken(userId: string, token: { token: string; when: Date }): void; - function _runLoginHandlers(methodInvocation: T, loginRequest: Record): LoginMethodResult | undefined; + function _runLoginHandlers(methodInvocation: T, loginRequest: Record): Promise; function registerLoginHandler(name: string, handler: (options: any) => undefined | object): void; @@ -54,6 +54,14 @@ declare module 'meteor/accounts-base' { const _accountData: Record; + interface AccountsServerOptions { + ambiguousErrorMessages?: boolean; + restrictCreationByEmailDomain?: string | (() => string); + forbidClientAccountCreation?: boolean | undefined; + } + + export const _options: AccountsServerOptions; + // eslint-disable-next-line @typescript-eslint/no-namespace namespace oauth { function credentialRequestCompleteHandler( diff --git a/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts b/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts index 7e1019b60ecb..906b19d0a931 100644 --- a/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts +++ b/apps/meteor/tests/end-to-end/api/31-failed-login-attempts.ts @@ -54,7 +54,7 @@ describe('[Failed Login Attempts]', function () { .expect(401) .expect((res) => { expect(res.body).to.have.property('status', 'error'); - expect(res.body).to.have.property('message', 'Incorrect password'); + expect(res.body).to.have.property('message', 'Unauthorized'); }); } From cd0313b7ed7b7edc46b65ce0949412bcca16ae58 Mon Sep 17 00:00:00 2001 From: Pierre Lehnen <55164754+pierre-lehnen-rc@users.noreply.github.com> Date: Thu, 11 Apr 2024 12:00:50 -0300 Subject: [PATCH 09/18] chore!: remove hipchat importer (#32154) --- .changeset/quiet-kings-rhyme.md | 5 + FEATURES.md | 1 - .../server/HipChatEnterpriseImporter.js | 343 ------------------ .../server/index.ts | 8 - .../server/classes/ImportDataConverter.ts | 7 - .../server/classes/VirtualDataConverter.ts | 10 - apps/meteor/package.json | 1 - apps/meteor/server/importPackages.ts | 1 - apps/meteor/server/models/raw/ImportData.ts | 13 +- packages/i18n/src/locales/af.i18n.json | 2 - packages/i18n/src/locales/ar.i18n.json | 2 - packages/i18n/src/locales/az.i18n.json | 2 - packages/i18n/src/locales/be-BY.i18n.json | 2 - packages/i18n/src/locales/bg.i18n.json | 2 - packages/i18n/src/locales/bs.i18n.json | 2 - packages/i18n/src/locales/ca.i18n.json | 2 - packages/i18n/src/locales/cs.i18n.json | 2 - packages/i18n/src/locales/cy.i18n.json | 2 - packages/i18n/src/locales/da.i18n.json | 2 - packages/i18n/src/locales/de-AT.i18n.json | 2 - packages/i18n/src/locales/de-IN.i18n.json | 2 - packages/i18n/src/locales/de.i18n.json | 2 - packages/i18n/src/locales/el.i18n.json | 2 - packages/i18n/src/locales/en.i18n.json | 3 - packages/i18n/src/locales/eo.i18n.json | 2 - packages/i18n/src/locales/es.i18n.json | 2 - packages/i18n/src/locales/fa.i18n.json | 2 - packages/i18n/src/locales/fi.i18n.json | 2 - packages/i18n/src/locales/fr.i18n.json | 2 - packages/i18n/src/locales/hr.i18n.json | 2 - packages/i18n/src/locales/hu.i18n.json | 2 - packages/i18n/src/locales/id.i18n.json | 2 - packages/i18n/src/locales/it.i18n.json | 2 - packages/i18n/src/locales/ja.i18n.json | 2 - packages/i18n/src/locales/ka-GE.i18n.json | 2 - packages/i18n/src/locales/km.i18n.json | 2 - packages/i18n/src/locales/ko.i18n.json | 2 - packages/i18n/src/locales/ku.i18n.json | 2 - packages/i18n/src/locales/lo.i18n.json | 2 - packages/i18n/src/locales/lt.i18n.json | 2 - packages/i18n/src/locales/lv.i18n.json | 2 - packages/i18n/src/locales/mn.i18n.json | 2 - packages/i18n/src/locales/ms-MY.i18n.json | 2 - packages/i18n/src/locales/nl.i18n.json | 2 - packages/i18n/src/locales/no.i18n.json | 2 - packages/i18n/src/locales/pl.i18n.json | 2 - packages/i18n/src/locales/pt-BR.i18n.json | 2 - packages/i18n/src/locales/pt.i18n.json | 2 - packages/i18n/src/locales/ro.i18n.json | 2 - packages/i18n/src/locales/ru.i18n.json | 2 - packages/i18n/src/locales/sk-SK.i18n.json | 2 - packages/i18n/src/locales/sl-SI.i18n.json | 2 - packages/i18n/src/locales/sq.i18n.json | 2 - packages/i18n/src/locales/sr.i18n.json | 2 - packages/i18n/src/locales/sv.i18n.json | 2 - packages/i18n/src/locales/ta-IN.i18n.json | 2 - packages/i18n/src/locales/th-TH.i18n.json | 2 - packages/i18n/src/locales/tr.i18n.json | 2 - packages/i18n/src/locales/uk.i18n.json | 2 - packages/i18n/src/locales/vi-VN.i18n.json | 2 - packages/i18n/src/locales/zh-HK.i18n.json | 2 - packages/i18n/src/locales/zh-TW.i18n.json | 2 - packages/i18n/src/locales/zh.i18n.json | 2 - .../src/models/IImportDataModel.ts | 1 - yarn.lock | 3 +- 65 files changed, 7 insertions(+), 495 deletions(-) create mode 100644 .changeset/quiet-kings-rhyme.md delete mode 100644 apps/meteor/app/importer-hipchat-enterprise/server/HipChatEnterpriseImporter.js delete mode 100644 apps/meteor/app/importer-hipchat-enterprise/server/index.ts diff --git a/.changeset/quiet-kings-rhyme.md b/.changeset/quiet-kings-rhyme.md new file mode 100644 index 000000000000..0fd7fda7ea66 --- /dev/null +++ b/.changeset/quiet-kings-rhyme.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': major +--- + +Removed the ability to import data in the HipChat Enterprise format, as it was discontinued over five years ago. diff --git a/FEATURES.md b/FEATURES.md index 5601cc0c7ccc..67848389b593 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -33,7 +33,6 @@ - Incoming / Outgoing Webhooks - Data Importer - Import from Slack - - Import from Hipchat - Slack Bridge - Profiles - Custom avatars diff --git a/apps/meteor/app/importer-hipchat-enterprise/server/HipChatEnterpriseImporter.js b/apps/meteor/app/importer-hipchat-enterprise/server/HipChatEnterpriseImporter.js deleted file mode 100644 index ac3d278d82ab..000000000000 --- a/apps/meteor/app/importer-hipchat-enterprise/server/HipChatEnterpriseImporter.js +++ /dev/null @@ -1,343 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { Readable } from 'stream'; - -import { Settings } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { Importer, ProgressStep } from '../../importer/server'; - -/** @deprecated HipChat was discontinued at 2019-02-15 */ -export class HipChatEnterpriseImporter extends Importer { - constructor(info, importRecord, converterOptions = {}) { - super(info, importRecord, converterOptions); - - this.Readable = Readable; - this.zlib = require('zlib'); - this.tarStream = require('tar-stream'); - this.extract = this.tarStream.extract(); - this.path = path; - } - - parseData(data) { - const dataString = data.toString(); - try { - this.logger.debug('parsing file contents'); - return JSON.parse(dataString); - } catch (e) { - this.logger.error(e); - return false; - } - } - - async prepareUsersFile(file) { - await super.updateProgress(ProgressStep.PREPARING_USERS); - let count = 0; - - for (const u of file) { - const newUser = { - emails: [], - importIds: [String(u.User.id)], - username: u.User.mention_name, - name: u.User.name, - avatarUrl: u.User.avatar && `data:image/png;base64,${u.User.avatar.replace(/\n/g, '')}`, - bio: u.User.title || undefined, - deleted: u.User.is_deleted, - type: 'user', - }; - count++; - - if (u.User.email) { - newUser.emails.push(u.User.email); - } - - this.converter.addUser(newUser); - } - - await Settings.incrementValueById('Hipchat_Enterprise_Importer_Count', count); - await super.updateRecord({ 'count.users': count }); - await super.addCountToTotal(count); - } - - async prepareRoomsFile(file) { - await super.updateProgress(ProgressStep.PREPARING_CHANNELS); - let count = 0; - - for await (const r of file) { - await this.converter.addChannel({ - u: { - _id: r.Room.owner, - }, - importIds: [String(r.Room.id)], - name: r.Room.name, - users: r.Room.members, - t: r.Room.privacy === 'private' ? 'p' : 'c', - topic: r.Room.topic, - ts: new Date(r.Room.created), - archived: r.Room.is_archived, - }); - - count++; - } - - await super.updateRecord({ 'count.channels': count }); - await super.addCountToTotal(count); - } - - async prepareUserMessagesFile(file) { - this.logger.debug(`preparing room with ${file.length} messages `); - let count = 0; - const dmRooms = []; - - for await (const m of file) { - if (!m.PrivateUserMessage) { - continue; - } - - // If the message id is already on the list, skip it - if (this.preparedMessages[m.PrivateUserMessage.id] !== undefined) { - continue; - } - this.preparedMessages[m.PrivateUserMessage.id] = true; - - const senderId = String(m.PrivateUserMessage.sender.id); - const receiverId = String(m.PrivateUserMessage.receiver.id); - const users = [senderId, receiverId].sort(); - - if (!dmRooms[receiverId]) { - dmRooms[receiverId] = await this.converter.findDMForImportedUsers(senderId, receiverId); - - if (!dmRooms[receiverId]) { - const room = { - importIds: [users.join('')], - users, - t: 'd', - ts: new Date(m.PrivateUserMessage.timestamp.split(' ')[0]), - }; - await this.converter.addChannel(room); - dmRooms[receiverId] = room; - } - } - - const rid = dmRooms[receiverId].importIds[0]; - const newMessage = this.convertImportedMessage(m.PrivateUserMessage, rid, 'private'); - count++; - await this.converter.addMessage(newMessage); - } - - return count; - } - - async loadTurndownService() { - const TurndownService = (await import('turndown')).default; - - const turndownService = new TurndownService({ - strongDelimiter: '*', - hr: '', - br: '\n', - }); - - turndownService.addRule('strikethrough', { - filter: 'img', - - replacement(content, node) { - const src = node.getAttribute('src') || ''; - const alt = node.alt || node.title || src; - return src ? `[${alt}](${src})` : ''; - }, - }); - - this.turndownService = turndownService; - - return turndownService; - } - - convertImportedMessage(importedMessage, rid, type) { - const idType = type === 'private' ? type : `${rid}-${type}`; - const newId = `hipchatenterprise-${idType}-${importedMessage.id}`; - - const newMessage = { - _id: newId, - rid, - ts: new Date(importedMessage.timestamp.split(' ')[0]), - u: { - _id: String(importedMessage.sender.id), - }, - }; - - const text = importedMessage.message; - - if (importedMessage.message_format === 'html') { - newMessage.msg = this.turndownService.turndown(text); - } else if (text.startsWith('/me ')) { - newMessage.msg = `${text.replace(/\/me /, '_')}_`; - } else { - newMessage.msg = text; - } - - if (importedMessage.attachment?.url) { - const fileId = `${importedMessage.id}-${importedMessage.attachment.name || 'attachment'}`; - - newMessage._importFile = { - downloadUrl: importedMessage.attachment.url, - id: `${fileId}`, - size: importedMessage.attachment.size || 0, - name: importedMessage.attachment.name, - external: false, - source: 'hipchat-enterprise', - original: { - ...importedMessage.attachment, - }, - }; - } - - return newMessage; - } - - async prepareRoomMessagesFile(file, rid) { - this.logger.debug(`preparing room with ${file.length} messages `); - let count = 0; - - await this.loadTurndownService(); - - for await (const m of file) { - if (m.UserMessage) { - const newMessage = this.convertImportedMessage(m.UserMessage, rid, 'user'); - await this.converter.addMessage(newMessage); - count++; - } else if (m.NotificationMessage) { - const newMessage = this.convertImportedMessage(m.NotificationMessage, rid, 'notif'); - newMessage.u._id = 'rocket.cat'; - newMessage.alias = m.NotificationMessage.sender; - - await this.converter.addMessage(newMessage); - count++; - } else if (m.TopicRoomMessage) { - const newMessage = this.convertImportedMessage(m.TopicRoomMessage, rid, 'topic'); - newMessage.t = 'room_changed_topic'; - - await this.converter.addMessage(newMessage); - count++; - } else if (m.ArchiveRoomMessage) { - this.logger.warn('Archived Room Notification was ignored.'); - } else if (m.GuestAccessMessage) { - this.logger.warn('Guess Access Notification was ignored.'); - } else { - this.logger.error({ msg: "HipChat Enterprise importer isn't configured to handle this message:", file: m }); - } - } - - return count; - } - - async prepareMessagesFile(file, info) { - await super.updateProgress(ProgressStep.PREPARING_MESSAGES); - - const [type, id] = info.dir.split('/'); - const roomIdentifier = `${type}/${id}`; - - await super.updateRecord({ messagesstatus: roomIdentifier }); - - switch (type) { - case 'users': - return this.prepareUserMessagesFile(file); - case 'rooms': - return this.prepareRoomMessagesFile(file, id); - default: - this.logger.error(`HipChat Enterprise importer isn't configured to handle "${type}" files (${info.dir}).`); - return 0; - } - } - - async prepareFile(info, data, fileName) { - const file = this.parseData(data); - if (file === false) { - this.logger.error('failed to parse data'); - return false; - } - - switch (info.base) { - case 'users.json': - await this.prepareUsersFile(file); - break; - case 'rooms.json': - await this.prepareRoomsFile(file); - break; - case 'history.json': - return this.prepareMessagesFile(file, info); - case 'emoticons.json': - case 'metadata.json': - break; - default: - this.logger.error(`HipChat Enterprise importer doesn't know what to do with the file "${fileName}"`); - break; - } - - return 0; - } - - async prepareUsingLocalFile(fullFilePath) { - this.logger.debug('start preparing import operation'); - await this.converter.clearImportData(); - - // HipChat duplicates direct messages (one for each user) - // This object will keep track of messages that have already been prepared so it doesn't try to do it twice - this.preparedMessages = {}; - let messageCount = 0; - - const promise = new Promise((resolve, reject) => { - this.extract.on('entry', (header, stream, next) => { - this.logger.debug(`new entry from import file: ${header.name}`); - if (!header.name.endsWith('.json')) { - stream.resume(); - return next(); - } - - const info = this.path.parse(header.name); - let pos = 0; - let data = Buffer.allocUnsafe(header.size); - - stream.on('data', (chunk) => { - data.fill(chunk, pos, pos + chunk.length); - pos += chunk.length; - }); - - stream.on('end', async () => { - this.logger.info(`Processing the file: ${header.name}`); - const newMessageCount = await this.prepareFile(info, data, header.name); - - messageCount += newMessageCount; - await super.updateRecord({ 'count.messages': messageCount }); - await super.addCountToTotal(newMessageCount); - - data = undefined; - - this.logger.debug('next import entry'); - next(); - }); - - stream.on('error', () => next()); - stream.resume(); - }); - - this.extract.on('error', (err) => { - this.logger.error({ msg: 'extract error:', err }); - reject(new Meteor.Error('error-import-file-extract-error')); - }); - - this.extract.on('finish', resolve); - - const rs = fs.createReadStream(fullFilePath); - const gunzip = this.zlib.createGunzip(); - - gunzip.on('error', (err) => { - this.logger.error({ msg: 'extract error:', err }); - reject(new Meteor.Error('error-import-file-extract-error')); - }); - this.logger.debug('start extracting import file'); - rs.pipe(gunzip).pipe(this.extract); - }); - - return promise; - } -} diff --git a/apps/meteor/app/importer-hipchat-enterprise/server/index.ts b/apps/meteor/app/importer-hipchat-enterprise/server/index.ts deleted file mode 100644 index e50a9b9c4bd3..000000000000 --- a/apps/meteor/app/importer-hipchat-enterprise/server/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Importers } from '../../importer/server'; -import { HipChatEnterpriseImporter } from './HipChatEnterpriseImporter'; - -Importers.add({ - key: 'hipchatenterprise', - name: 'HipChat (tar.gz)', - importer: HipChatEnterpriseImporter, -}); diff --git a/apps/meteor/app/importer/server/classes/ImportDataConverter.ts b/apps/meteor/app/importer/server/classes/ImportDataConverter.ts index 493d14061bf2..fcb32f91ed62 100644 --- a/apps/meteor/app/importer/server/classes/ImportDataConverter.ts +++ b/apps/meteor/app/importer/server/classes/ImportDataConverter.ts @@ -833,13 +833,6 @@ export class ImportDataConverter { await this.updateRoomId(room._id, roomData); } - public async findDMForImportedUsers(...users: Array): Promise { - const record = await ImportData.findDMForImportedUsers(...users); - if (record) { - return record.data; - } - } - async findImportedRoomId(importId: string): Promise { if (this._roomCache.has(importId)) { return this._roomCache.get(importId) as string; diff --git a/apps/meteor/app/importer/server/classes/VirtualDataConverter.ts b/apps/meteor/app/importer/server/classes/VirtualDataConverter.ts index ef850226be5c..8ca9f3b5894c 100644 --- a/apps/meteor/app/importer/server/classes/VirtualDataConverter.ts +++ b/apps/meteor/app/importer/server/classes/VirtualDataConverter.ts @@ -6,7 +6,6 @@ import type { IImportRecord, IImportRecordType, IImportData, - IImportChannel, } from '@rocket.chat/core-typings'; import { Random } from '@rocket.chat/random'; @@ -47,15 +46,6 @@ export class VirtualDataConverter extends ImportDataConverter { this.clearVirtualData(); } - public async findDMForImportedUsers(...users: Array): Promise { - if (!this.useVirtual) { - return super.findDMForImportedUsers(...users); - } - - // The original method is only used by the hipchat importer so we probably don't need to implement this on the virtual converter. - return undefined; - } - public addUserSync(data: IImportUser, options?: Record): void { return this.addObjectSync('user', data, options); } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 5f766d672ebb..1b6661fb28b5 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -426,7 +426,6 @@ "string-strip-html": "^7.0.3", "suretype": "~2.4.1", "swiper": "^9.3.2", - "tar-stream": "^1.6.2", "textarea-caret": "^3.1.0", "tinykeys": "^1.4.0", "turndown": "^7.1.2", diff --git a/apps/meteor/server/importPackages.ts b/apps/meteor/server/importPackages.ts index 2b4e3106ed45..dfda85e52a9e 100644 --- a/apps/meteor/server/importPackages.ts +++ b/apps/meteor/server/importPackages.ts @@ -26,7 +26,6 @@ import '../app/google-oauth/server'; import '../app/iframe-login/server'; import '../app/importer/server'; import '../app/importer-csv/server'; -import '../app/importer-hipchat-enterprise/server'; import '../app/importer-pending-files/server'; import '../app/importer-pending-avatars/server'; import '../app/importer-slack/server'; diff --git a/apps/meteor/server/models/raw/ImportData.ts b/apps/meteor/server/models/raw/ImportData.ts index e38670662a3f..19ec573fa239 100644 --- a/apps/meteor/server/models/raw/ImportData.ts +++ b/apps/meteor/server/models/raw/ImportData.ts @@ -6,7 +6,7 @@ import type { RocketChatRecordDeleted, } from '@rocket.chat/core-typings'; import type { IImportDataModel } from '@rocket.chat/model-typings'; -import type { Collection, FindCursor, Db, Filter, IndexDescription } from 'mongodb'; +import type { Collection, FindCursor, Db, IndexDescription } from 'mongodb'; import { BaseRaw } from './BaseRaw'; @@ -102,15 +102,4 @@ export class ImportDataRaw extends BaseRaw implements IImportData return channel?.data?.importIds?.shift(); } - - findDMForImportedUsers(...users: Array): Promise { - const query: Filter = { - 'dataType': 'channel', - 'data.users': { - $all: users, - }, - }; - - return this.findOne(query); - } } diff --git a/packages/i18n/src/locales/af.i18n.json b/packages/i18n/src/locales/af.i18n.json index 992c74fa1174..1b7efc6ffe68 100644 --- a/packages/i18n/src/locales/af.i18n.json +++ b/packages/i18n/src/locales/af.i18n.json @@ -1272,8 +1272,6 @@ "Importer_done": "Invoer voltooi!", "Importer_finishing": "Voltooi die invoer.", "Importer_From_Description": "Invoer {{from}} data in Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Wees asseblief bewus daarvan dat hierdie invoer nog steeds 'n werk aan die gang is, meld asseblief enige foute wat in GitHub voorkom:", - "Importer_HipChatEnterprise_Information": "Die opgelaaide lêer moet 'n gedecodeerde tar.gz wees, lees asseblief die dokumentasie vir verdere inligting:", "Importer_import_cancelled": "Invoer gekanselleer.", "Importer_import_failed": "'N Fout het voorgekom terwyl die invoer uitgevoer word.", "Importer_importing_channels": "Die kanale invoer.", diff --git a/packages/i18n/src/locales/ar.i18n.json b/packages/i18n/src/locales/ar.i18n.json index b84bae9caf6c..5090db9d2a9c 100644 --- a/packages/i18n/src/locales/ar.i18n.json +++ b/packages/i18n/src/locales/ar.i18n.json @@ -2145,8 +2145,6 @@ "Importer_finishing": "يتم إنهاء الاستيراد.", "Importer_From_Description": "استيراد بيانات {{from}} إلى Rocket.Chat.", "Importer_From_Description_CSV": "استيراد بيانات CSV إلى Rocket.Chat. يجب أن يكون الملف الذي تم رفعه بتنسيق ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "يرجى العلم أن هذا الاستيراد لا يزال قيد التقدم، يُرجى الإبلاغ عن أي أخطاء تحدث في GitHub:", - "Importer_HipChatEnterprise_Information": "يجب أن يكون الملف الذي تم تحميله بتنسيق tar.gz غير مشفر، تُرجى قراءة الوثائق للحصول على مزيد من المعلومات:", "Importer_import_cancelled": "تم إلغاء الاستيراد.", "Importer_import_failed": "حدث خطأ أثناء تشغيل الاستيراد.", "Importer_importing_channels": "يتم استيراد القنوات.", diff --git a/packages/i18n/src/locales/az.i18n.json b/packages/i18n/src/locales/az.i18n.json index a61bb8bbff00..96cea6562dda 100644 --- a/packages/i18n/src/locales/az.i18n.json +++ b/packages/i18n/src/locales/az.i18n.json @@ -1272,8 +1272,6 @@ "Importer_done": "Tamamilə idxal!", "Importer_finishing": "İthalatı bitirmək.", "Importer_From_Description": "Rocket.Chat'a {{from}} data verin.", - "Importer_HipChatEnterprise_BetaWarning": "Xahiş edirik, bu idxal hələ də davam edən bir iş olduğundan xəbərdar edin, GitHub'da meydana gələn hər hansı bir səhv bildirin:", - "Importer_HipChatEnterprise_Information": "Yüklənən fayl şifresi çözülmüş tar.gz olmalıdır, daha ətraflı məlumat üçün sənədləri oxuyun:", "Importer_import_cancelled": "İxrac ləğv edildi.", "Importer_import_failed": "İçeceğinizde çalışırken bir səhv baş verdi.", "Importer_importing_channels": "Kanalları idxal etmək.", diff --git a/packages/i18n/src/locales/be-BY.i18n.json b/packages/i18n/src/locales/be-BY.i18n.json index 865efa0f9c5a..1f769289e35b 100644 --- a/packages/i18n/src/locales/be-BY.i18n.json +++ b/packages/i18n/src/locales/be-BY.i18n.json @@ -1288,8 +1288,6 @@ "Importer_done": "Імпарт завершаны!", "Importer_finishing": "Завяршэнне імпарту.", "Importer_From_Description": "Імпартуе {{from}} дадзеныя ў Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Звярніце ўвагу, што гэты імпарт па-ранейшаму знаходзіцца ў стадыі распрацоўкі, просьба паведамляць пра памылкі, якія адбываюцца ў GitHub:", - "Importer_HipChatEnterprise_Information": "Загружаны файл павінен быць расшыфраваны tar.gz, калі ласка, прачытайце дакументацыю для атрымання дадатковай інфармацыі:", "Importer_import_cancelled": "Імпарт адменены.", "Importer_import_failed": "пры выкананні імпарту адбылася памылка.", "Importer_importing_channels": "Імпарт каналаў.", diff --git a/packages/i18n/src/locales/bg.i18n.json b/packages/i18n/src/locales/bg.i18n.json index 318a310eed56..7a6d9b0aa05a 100644 --- a/packages/i18n/src/locales/bg.i18n.json +++ b/packages/i18n/src/locales/bg.i18n.json @@ -1270,8 +1270,6 @@ "Importer_CSV_Information": "CSV вносителят изисква специален формат, прочетете документацията за това как да структурирате файла с цип:", "Importer_done": "Импортирането е завършено!", "Importer_finishing": "Завършване на импортирането.", - "Importer_HipChatEnterprise_BetaWarning": "Имайте предвид, че този внос все още е в процес на разработка, моля, отчетете всички грешки, които възникват в GitHub:", - "Importer_HipChatEnterprise_Information": "Каченият файл трябва да е декриптиран tar.gz, моля прочетете документацията за допълнителна информация:", "Importer_import_cancelled": "Импортирането бе отменено.", "Importer_import_failed": "Възникна грешка при изпълнение на импортирането.", "Importer_importing_channels": "Импортиране на каналите.", diff --git a/packages/i18n/src/locales/bs.i18n.json b/packages/i18n/src/locales/bs.i18n.json index 86fd7083b2ce..1160aa6857ca 100644 --- a/packages/i18n/src/locales/bs.i18n.json +++ b/packages/i18n/src/locales/bs.i18n.json @@ -1267,8 +1267,6 @@ "Importer_done": "Uvoz dovršen!", "Importer_finishing": "Završavanje uvoza.", "Importer_From_Description": "Uvezi {{from}} podatke u Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Imajte na umu da je taj uvoz još uvijek u tijeku, prijavite sve pogreške koje se pojavljuju u GitHubu:", - "Importer_HipChatEnterprise_Information": "Prenesena datoteka mora biti dekriptirana tar.gz, pročitajte dokumentaciju za daljnje informacije:", "Importer_import_cancelled": "Uvoz je otkazan.", "Importer_import_failed": "Došlo je do pogreške pri izvršavanju uvoza.", "Importer_importing_channels": "Prebacivanje kanala.", diff --git a/packages/i18n/src/locales/ca.i18n.json b/packages/i18n/src/locales/ca.i18n.json index 834ad853ff0f..a587a55e76a4 100644 --- a/packages/i18n/src/locales/ca.i18n.json +++ b/packages/i18n/src/locales/ca.i18n.json @@ -2113,8 +2113,6 @@ "Importer_finishing": "Finalitza la importació.", "Importer_From_Description": "Importa les dades de {{from}} a Rocket.Chat.", "Importer_From_Description_CSV": "Importa dades CSV a Rocket.Chat. El fitxer penjat ha de ser un fitxer ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Tingueu en compte que aquest sistema d'importació encara està en desenvolupament. Si us plau, notifiqueu-nos a GitHub els errors que es produeixin:", - "Importer_HipChatEnterprise_Information": "L'arxiu carregat ha de ser un tar.gz desxifrat, llegiu la documentació per obtenir més informació:", "Importer_import_cancelled": "Importació cancel·lada.", "Importer_import_failed": "S'ha produït un error durant la importació.", "Importer_importing_channels": "Important els canals.", diff --git a/packages/i18n/src/locales/cs.i18n.json b/packages/i18n/src/locales/cs.i18n.json index fcd5c28d37af..4f1a330e64ac 100644 --- a/packages/i18n/src/locales/cs.i18n.json +++ b/packages/i18n/src/locales/cs.i18n.json @@ -1816,8 +1816,6 @@ "Importer_ExternalUrl_Description": "Můžete také použít adresu URL pro veřejně přístupný soubor:", "Importer_finishing": "Dokončuji import.", "Importer_From_Description": "Import dat {{from}} do Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Mějte prosím na paměti, že tato funkcionalita je stále ve vývoji, prosím nahlašte nám jakékoliv chyby přes github:", - "Importer_HipChatEnterprise_Information": "Nahraný soubor musí být nešifrovaný tar.gz, Více informací naleznete v dokumentaci:", "Importer_import_cancelled": "Import zrušen.", "Importer_import_failed": "Došlo k chybě při importu.", "Importer_importing_channels": "Importuji místnosti.", diff --git a/packages/i18n/src/locales/cy.i18n.json b/packages/i18n/src/locales/cy.i18n.json index f9f99d0e6423..98001c0c4cd5 100644 --- a/packages/i18n/src/locales/cy.i18n.json +++ b/packages/i18n/src/locales/cy.i18n.json @@ -1268,8 +1268,6 @@ "Importer_done": "Mewnforio yn gyflawn!", "Importer_finishing": "Gorffen y mewnforio.", "Importer_From_Description": "Mewnforion {{from}} data i Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Cofiwch fod y mewnforio hwn yn dal i fod yn waith ar y gweill, rhowch wybod am unrhyw wallau sy'n digwydd yn GitHub:", - "Importer_HipChatEnterprise_Information": "Rhaid i'r ffeil a lwythir i fyny fod yn tar.gz dadgryptiedig, darllenwch y dogfennau i gael rhagor o wybodaeth:", "Importer_import_cancelled": "Canslo mewnforio.", "Importer_import_failed": "Digwyddodd gwall wrth redeg y mewnforio.", "Importer_importing_channels": "Mewnforio y sianeli.", diff --git a/packages/i18n/src/locales/da.i18n.json b/packages/i18n/src/locales/da.i18n.json index 789fa5347410..d7c00efb1ec2 100644 --- a/packages/i18n/src/locales/da.i18n.json +++ b/packages/i18n/src/locales/da.i18n.json @@ -1908,8 +1908,6 @@ "Importer_ExternalUrl_Description": "Du kan også bruge en URL til en offentlig tilgængelig fil:", "Importer_finishing": "Afslutter importen.", "Importer_From_Description": "Importerer {{from}} data til Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Vær opmærksom på, at denne import stadig er under udvikling. Rapporter venligst eventuelle fejl der opstår til GitHub:", - "Importer_HipChatEnterprise_Information": "Den uploadede fil skal være en dekrypteret tar.gz. Du kan få mere at vide i dokumentationen:", "Importer_import_cancelled": "Import annulleret.", "Importer_import_failed": "Der opstod en fejl under udførelsen af importen.", "Importer_importing_channels": "Importerer kanalerne.", diff --git a/packages/i18n/src/locales/de-AT.i18n.json b/packages/i18n/src/locales/de-AT.i18n.json index b41505392150..c3531b942634 100644 --- a/packages/i18n/src/locales/de-AT.i18n.json +++ b/packages/i18n/src/locales/de-AT.i18n.json @@ -1274,8 +1274,6 @@ "Importer_done": "Die Daten wurden erfolgreich importiert!", "Importer_finishing": "Import abgeschlossen.", "Importer_From_Description": "Importiert Daten von {{from}} nach Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Bitte beachten Sie, dass dieser Import noch in Arbeit ist. Bitte melden Sie alle Fehler, die in GitHub auftreten:", - "Importer_HipChatEnterprise_Information": "Die hochgeladene Datei muss eine entschlüsselte tar.gz sein. Bitte lesen Sie die Dokumentation für weitere Informationen:", "Importer_import_cancelled": "Der Import wurde abgebrochen.", "Importer_import_failed": "Während des Importierens ist ein Fehler aufgetreten.", "Importer_importing_channels": "Importiere die Kanäle.", diff --git a/packages/i18n/src/locales/de-IN.i18n.json b/packages/i18n/src/locales/de-IN.i18n.json index 719cfe9da4fd..e02ce12b7a8c 100644 --- a/packages/i18n/src/locales/de-IN.i18n.json +++ b/packages/i18n/src/locales/de-IN.i18n.json @@ -1464,8 +1464,6 @@ "Importer_ExternalUrl_Description": "Du kannst eine öffentlich erreichbare URL zur Datei angeben.", "Importer_finishing": "Import abgeschlossen.", "Importer_From_Description": "Importiert Daten von {{from}} nach Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Bitte beachte, dass sich dieser Importer noch in der Entwicklung befindet. Bitte melde Fehler auf GitHub: ", - "Importer_HipChatEnterprise_Information": "Die hochgeladene Datei muss ein nicht-verschlüsseltes tar.gz sein. Bitte lies die Dokumentation für weiterführende Informationen.", "Importer_import_cancelled": "Der Import wurde abgebrochen.", "Importer_import_failed": "Während des Importierens ist ein Fehler aufgetreten.", "Importer_importing_channels": "Importiere die Kanäle.", diff --git a/packages/i18n/src/locales/de.i18n.json b/packages/i18n/src/locales/de.i18n.json index 64e30aeec0fc..eaebe5fdb97e 100644 --- a/packages/i18n/src/locales/de.i18n.json +++ b/packages/i18n/src/locales/de.i18n.json @@ -2386,8 +2386,6 @@ "Importer_finishing": "Import abgeschlossen.", "Importer_From_Description": "Importiert Daten von {{from}} nach Rocket.Chat.", "Importer_From_Description_CSV": "Importiert CSV-Daten in Rocket.Chat. Die hochgeladene Fatei muss eine ZIP-Datei sein.", - "Importer_HipChatEnterprise_BetaWarning": "Bitte beachten Sie, dass sich dieser Importer noch in der Entwicklung befindet. Bitte berichten Sie über Fehler auf GitHub: ", - "Importer_HipChatEnterprise_Information": "Die hochgeladene Datei muss ein nicht verschlüsseltes tar.gz sein. Bitte lesen Sie die Dokumentation für weiterführende Informationen:", "Importer_import_cancelled": "Der Import wurde abgebrochen.", "Importer_import_failed": "Während des Importierens ist ein Fehler aufgetreten.", "Importer_importing_channels": "Importiere die Kanäle.", diff --git a/packages/i18n/src/locales/el.i18n.json b/packages/i18n/src/locales/el.i18n.json index 4cf3b7764dd0..6f655452f5ba 100644 --- a/packages/i18n/src/locales/el.i18n.json +++ b/packages/i18n/src/locales/el.i18n.json @@ -1279,8 +1279,6 @@ "Importer_done": "Εισαγωγή πλήρης!", "Importer_finishing": "Ολοκλήρωση της εισαγωγής.", "Importer_From_Description": "Οι εισαγωγές {{from}} δεδομένων's σε Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Λάβετε υπόψη ότι αυτή η εισαγωγή εξακολουθεί να είναι εργασία σε εξέλιξη, αναφέρετε τυχόν λάθη που εμφανίζονται στο GitHub:", - "Importer_HipChatEnterprise_Information": "Το φορτωμένο αρχείο πρέπει να είναι αποκρυπτογραφημένο tar.gz, διαβάστε την τεκμηρίωση για περισσότερες πληροφορίες:", "Importer_import_cancelled": "Εισαγωγής ακυρωθεί.", "Importer_import_failed": "Παρουσιάστηκε σφάλμα κατά την εκτέλεση της εισαγωγής.", "Importer_importing_channels": "Εισάγει τα κανάλια.", diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index 44c142ba6e06..5831e9fa8377 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -2565,7 +2565,6 @@ "Highlights": "Highlights", "Highlights_How_To": "To be notified when someone mentions a word or phrase, add it here. You can separate words or phrases with commas. Highlight Words are not case sensitive.", "Highlights_List": "Highlight words", - "HipChat (tar.gz)": "HipChat (tar.gz)", "History": "History", "Hold_Time": "Hold Time", "Hold": "Hold", @@ -2631,8 +2630,6 @@ "Importer_finishing": "Finishing up the import.", "Importer_From_Description": "Imports {{from}} data into Rocket.Chat.", "Importer_From_Description_CSV": "Imports CSV data into Rocket.Chat. The uploaded file must be a ZIP file.", - "Importer_HipChatEnterprise_BetaWarning": "Please be aware that this import is still a work in progress, please report any errors which occur in GitHub:", - "Importer_HipChatEnterprise_Information": "The file uploaded must be a decrypted tar.gz, please read the documentation for further information:", "Importer_import_cancelled": "Import cancelled.", "Importer_import_failed": "An error occurred while running the import.", "Importer_importing_channels": "Importing the channels.", diff --git a/packages/i18n/src/locales/eo.i18n.json b/packages/i18n/src/locales/eo.i18n.json index 5631b9240ffa..a49a4034c79e 100644 --- a/packages/i18n/src/locales/eo.i18n.json +++ b/packages/i18n/src/locales/eo.i18n.json @@ -1272,8 +1272,6 @@ "Importer_done": "Importante kompletan!", "Importer_finishing": "Finante la importadon.", "Importer_From_Description": "Importas {{from}}-datumojn en Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Bonvolu konscii, ke ĉi tiu importado ankoraŭ estas progreso, bonvolu raporti iujn erarojn, kiuj okazas en GitHub:", - "Importer_HipChatEnterprise_Information": "La dosiero alŝutita devas esti senĉifrita tar.gz, bonvolu legi la dokumentadon por pliaj informoj:", "Importer_import_cancelled": "Importi nuligita.", "Importer_import_failed": "Eraro okazis dum ĝi funkciis la importadon.", "Importer_importing_channels": "Importante la kanaloj.", diff --git a/packages/i18n/src/locales/es.i18n.json b/packages/i18n/src/locales/es.i18n.json index d992ceef246f..7891d2f1bf9b 100644 --- a/packages/i18n/src/locales/es.i18n.json +++ b/packages/i18n/src/locales/es.i18n.json @@ -2132,8 +2132,6 @@ "Importer_finishing": "Terminando la importación.", "Importer_From_Description": "Importa datos de {{from}} a Rocket.Chat.", "Importer_From_Description_CSV": "Importa datos en formato CSV a Rocket.Chat. El archivo subido debe ser un archivo ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Ten en cuenta que esta importación aún se está desarrollando. Informa acerca de cualquier error que ocurra en GitHub:", - "Importer_HipChatEnterprise_Information": "El archivo subido debe ser un archivo tar.gz descifrado. Consulta la documentación para obtener más información:", "Importer_import_cancelled": "Importación cancelada.", "Importer_import_failed": "Se ha producido un error durante la ejecución de la importación.", "Importer_importing_channels": "Importando los canales.", diff --git a/packages/i18n/src/locales/fa.i18n.json b/packages/i18n/src/locales/fa.i18n.json index c812d39a543a..4db4cf410051 100644 --- a/packages/i18n/src/locales/fa.i18n.json +++ b/packages/i18n/src/locales/fa.i18n.json @@ -1531,8 +1531,6 @@ "Importer_done": "وارد کردن تمام شد!", "Importer_finishing": "پایان دادن به وارد کردن.", "Importer_From_Description": "داده های {{from}} را وارد Rocket.chat می کند.", - "Importer_HipChatEnterprise_BetaWarning": "لطفا توجه داشته باشید که این واردات همچنان یک کار در حال انجام است، لطفا هر خطایی که در GitHub رخ می دهد گزارش دهید:", - "Importer_HipChatEnterprise_Information": "فایل آپلود شده باید یک tar.gz رمزگشایی شود، لطفا مستندات بیشتری برای اطلاعات بیشتر بخوانید:", "Importer_import_cancelled": "وارد کردن لغو شد.", "Importer_import_failed": "هنگام وارد کردن خطایی رخ داد.", "Importer_importing_channels": "وارد کردن کانال ها.", diff --git a/packages/i18n/src/locales/fi.i18n.json b/packages/i18n/src/locales/fi.i18n.json index 53f1c0cb4dc1..ab38b092818f 100644 --- a/packages/i18n/src/locales/fi.i18n.json +++ b/packages/i18n/src/locales/fi.i18n.json @@ -2428,8 +2428,6 @@ "Importer_finishing": "Viimeistellään tuontia.", "Importer_From_Description": "Tuo tiedot kohteesta {{from}} Rocket.Chatiin.", "Importer_From_Description_CSV": "Tuo CSV-tiedot Rocket.Chatiin. Ladatun tiedoston on oltava ZIP-tiedosto.", - "Importer_HipChatEnterprise_BetaWarning": "Huomaa, että tuontitoiminto on edelleen kehitteillä. Ilmoita virheistä GitHubissa:", - "Importer_HipChatEnterprise_Information": "Ladattavan tiedoston on oltava purettu tar.gz-tiedosto. Katso lisätietoja oppaista:", "Importer_import_cancelled": "Tuonti peruutettu.", "Importer_import_failed": "Virhe tuotaessa.", "Importer_importing_channels": "Tuodaan kanavia.", diff --git a/packages/i18n/src/locales/fr.i18n.json b/packages/i18n/src/locales/fr.i18n.json index 436669e5c14f..d252075095ea 100644 --- a/packages/i18n/src/locales/fr.i18n.json +++ b/packages/i18n/src/locales/fr.i18n.json @@ -2131,8 +2131,6 @@ "Importer_finishing": "Finalisation de l'importation.", "Importer_From_Description": "Importer les données de {{from}} dans Rocket.Chat.", "Importer_From_Description_CSV": "Importe des données CSV dans Rocket.Chat. Le fichier chargé doit être un fichier ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Notez que la fonction d'importation est toujours en cours de développement, veuillez signaler toute erreur dans GitHub :", - "Importer_HipChatEnterprise_Information": "Le fichier chargé doit être au format tar.gz déchiffré, lisez la documentation pour plus d'informations :", "Importer_import_cancelled": "Importation annulée.", "Importer_import_failed": "Une erreur est survenue lors de l'importation.", "Importer_importing_channels": "Importation des canaux.", diff --git a/packages/i18n/src/locales/hr.i18n.json b/packages/i18n/src/locales/hr.i18n.json index e88c450fc6ce..56e7ef52e447 100644 --- a/packages/i18n/src/locales/hr.i18n.json +++ b/packages/i18n/src/locales/hr.i18n.json @@ -1403,8 +1403,6 @@ "Importer_done": "Uvoz dovršen!", "Importer_finishing": "Završavanje uvoza.", "Importer_From_Description": "Uvezi {{from}} podatke u Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Imajte na umu da je taj uvoz još uvijek u tijeku, prijavite sve pogreške koje se pojavljuju u GitHubu:", - "Importer_HipChatEnterprise_Information": "Prenesena datoteka mora biti dekriptirana tar.gz, pročitajte dokumentaciju za daljnje informacije:", "Importer_import_cancelled": "Uvoz je otkazan.", "Importer_import_failed": "Došlo je do pogreške pri izvršavanju uvoza.", "Importer_importing_channels": "Prebacivanje kanala.", diff --git a/packages/i18n/src/locales/hu.i18n.json b/packages/i18n/src/locales/hu.i18n.json index d352ad6492a3..1bd51c87958e 100644 --- a/packages/i18n/src/locales/hu.i18n.json +++ b/packages/i18n/src/locales/hu.i18n.json @@ -2342,8 +2342,6 @@ "Importer_finishing": "Az importálás befejezése.", "Importer_From_Description": "{{from}}-adatokat importál a Rocket.Chatbe.", "Importer_From_Description_CSV": "CSV-adatokat importál a Rocket.Chatbe. A feltöltött fájlnak ZIP-fájlnak kell lennie.", - "Importer_HipChatEnterprise_BetaWarning": "Felhívjuk a figyelmét, hogy ennek az importálásnak a munkálatai még folyamatban vannak, az esetleges hibákat a GitHubon jelentse:", - "Importer_HipChatEnterprise_Information": "A feltöltött fájlnak visszafejtett tar.gz-nek kell lennie, olvassa el a dokumentációt további információkért:", "Importer_import_cancelled": "Az importálás megszakítva.", "Importer_import_failed": "Hiba történt az importálás futása során.", "Importer_importing_channels": "A csatornák importálása.", diff --git a/packages/i18n/src/locales/id.i18n.json b/packages/i18n/src/locales/id.i18n.json index e0656e017425..59cdd3a2e559 100644 --- a/packages/i18n/src/locales/id.i18n.json +++ b/packages/i18n/src/locales/id.i18n.json @@ -1272,8 +1272,6 @@ "Importer_done": "Mengimpor lengkap!", "Importer_finishing": "Menyelesaikan impor.", "Importer_From_Description": "Impor {{from}} Data's menjadi Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Perlu diketahui bahwa impor ini masih dalam proses penyelesaian, laporkan kesalahan yang terjadi di GitHub:", - "Importer_HipChatEnterprise_Information": "File yang diunggah harus berupa tar.gz terdekrip, baca dokumentasi untuk informasi lebih lanjut:", "Importer_import_cancelled": "Impor dibatalkan.", "Importer_import_failed": "Terjadi kesalahan saat menjalankan impor.", "Importer_importing_channels": "Mengimpor saluran.", diff --git a/packages/i18n/src/locales/it.i18n.json b/packages/i18n/src/locales/it.i18n.json index c40e8e2a5fd7..654f0ce7d5d7 100644 --- a/packages/i18n/src/locales/it.i18n.json +++ b/packages/i18n/src/locales/it.i18n.json @@ -1678,8 +1678,6 @@ "Importer_done": "Importazione completata!", "Importer_finishing": "In fase di terminazione dell'importazione.", "Importer_From_Description": "Importa i dati da {{from}} in Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Nota che questa importazione è in sviluppo, riporta ogni errori che può avvenire su GitHub:", - "Importer_HipChatEnterprise_Information": "Il file caricato deve essere un file tar.gz decriptato, leggi la documentazione per altre informazioni:", "Importer_import_cancelled": "Importazione annullata.", "Importer_import_failed": "Si è verificato un errore durante l'esecuzione dell'importazione.", "Importer_importing_channels": "In fase d'importazione dei canali.", diff --git a/packages/i18n/src/locales/ja.i18n.json b/packages/i18n/src/locales/ja.i18n.json index 27a99598d88d..504c8ef27205 100644 --- a/packages/i18n/src/locales/ja.i18n.json +++ b/packages/i18n/src/locales/ja.i18n.json @@ -2107,8 +2107,6 @@ "Importer_finishing": "インポートを終了しています。", "Importer_From_Description": "{{from}}のデータをRocket.Chatへインポートします。", "Importer_From_Description_CSV": "CSVデータをRocket.Chatにインポートします。アップロードするファイルはZIPファイルである必要があります。", - "Importer_HipChatEnterprise_BetaWarning": "このインポートはまだ進行中です。GitHubで発生したエラーを報告してください。", - "Importer_HipChatEnterprise_Information": "アップロードされるファイルは暗号化を解除されたtar.gzでなければなりません。詳細はドキュメントを参照してください。", "Importer_import_cancelled": "インポートをキャンセルしました。", "Importer_import_failed": "インポートの実行中にエラーが発生しました。", "Importer_importing_channels": "チャネルをインポートしています。", diff --git a/packages/i18n/src/locales/ka-GE.i18n.json b/packages/i18n/src/locales/ka-GE.i18n.json index 7e28a9792559..32c128f412c1 100644 --- a/packages/i18n/src/locales/ka-GE.i18n.json +++ b/packages/i18n/src/locales/ka-GE.i18n.json @@ -1717,8 +1717,6 @@ "Importer_ExternalUrl_Description": "თქვენ ასევე შეგიძლიათ ნახოთ ბმული საჯარო წვდომის ფაილისთვის", "Importer_finishing": "იმპორტი სრულდება", "Importer_From_Description": "მონაცემებს აიმპორტებს {{from}}-დან Rocket.Chat-ში", - "Importer_HipChatEnterprise_BetaWarning": "გთხოვთ გაითვალისწინოთ, რომ ეს იმპორტი კვლავ შემუშავების პროცესშია \n გთხოვთ, აცნობეთ შეცდომების შესახებ GitHub– ში:", - "Importer_HipChatEnterprise_Information": "ატვირთული ფაილი უნდა იყოს გაშიფრული tar.gz, დამატებითი ინფორმაციისთვის წაიკითხეთ დოკუმენტაცია:", "Importer_import_cancelled": "იმპორტი გაუქმდა.", "Importer_import_failed": "იმპორტისას მოხდა შეცდომა.", "Importer_importing_channels": "არხების იმპორტი.", diff --git a/packages/i18n/src/locales/km.i18n.json b/packages/i18n/src/locales/km.i18n.json index f995ba297bd0..03012fd5fba0 100644 --- a/packages/i18n/src/locales/km.i18n.json +++ b/packages/i18n/src/locales/km.i18n.json @@ -1528,8 +1528,6 @@ "Importer_ExternalUrl_Description": "អ្នកក៏អាចប្រើ URL សម្រាប់ឯកសារអាចចូលដំណើរការជាសាធារណៈបានដែរ:", "Importer_finishing": "បញ្ចប់ការនាំចូល។", "Importer_From_Description": "ការនាំចូល {{from}} ទិន្នន័យ's បានចូលទៅក្នុង Rocket.Chat ។", - "Importer_HipChatEnterprise_BetaWarning": "សូមជ្រាបថាការនាំចូលនេះនៅតែជាការងារកំពុងដំណើរការសូមរាយការណ៍កំហុសទាំងឡាយដែលកើតឡើងនៅក្នុង GitHub:", - "Importer_HipChatEnterprise_Information": "ឯកសារដែលបានផ្ទុកឡើងត្រូវតែជាឌីជីថលដែលបានឌិគ្រីបសូមអានឯកសារសម្រាប់ព័ត៌មានបន្ថែម:", "Importer_import_cancelled": "នាំចូលលុបចោល។", "Importer_import_failed": "កំហុសមួយបានកើតឡើងខណៈពេលកំពុងរត់ការនាំចូល។", "Importer_importing_channels": "ការនាំចូលបណ្តាញនេះ។", diff --git a/packages/i18n/src/locales/ko.i18n.json b/packages/i18n/src/locales/ko.i18n.json index 7f1fae38eda4..0f05dd38853f 100644 --- a/packages/i18n/src/locales/ko.i18n.json +++ b/packages/i18n/src/locales/ko.i18n.json @@ -1869,8 +1869,6 @@ "Importer_ExternalUrl_Description": "외부에서 접근할 수 있는 파일의 URL을 사용할 수 있습니다.", "Importer_finishing": "가져오기 마무리 중..", "Importer_From_Description": "{{from}} 데이터를 Rocket.Chat으로 가져옵니다.", - "Importer_HipChatEnterprise_BetaWarning": "이 가져 오기가 아직 진행 중이므로 GitHub에서 발생하는 모든 오류를보고하십시오.", - "Importer_HipChatEnterprise_Information": "업로드 된 파일은 해독 된 tar.gz 여야합니다. 자세한 내용은 설명서를 참조하십시오.", "Importer_import_cancelled": "가져오기가 취소되었습니다.", "Importer_import_failed": "가져오기를 실행하는 동안 오류가 발생했습니다.", "Importer_importing_channels": "채널 가져오기", diff --git a/packages/i18n/src/locales/ku.i18n.json b/packages/i18n/src/locales/ku.i18n.json index ccf008f20b78..61713f69a0cb 100644 --- a/packages/i18n/src/locales/ku.i18n.json +++ b/packages/i18n/src/locales/ku.i18n.json @@ -1267,8 +1267,6 @@ "Importer_done": "Importing temam!", "Importer_finishing": "Despêk xwe import.", "Importer_From_Description": "Imports {{from}} welat's nav Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Ji kerema xwe bizanibin ku ev import jî hîn jî di pêşveçûnê de ye, kerema ku li GitHubê pêk tê rapor bikin:", - "Importer_HipChatEnterprise_Information": "Divê belgeyê belaş divê tar.gz, ji kerema xwe belgeyên bêtir agahdarî belgeyên bixwînin:", "Importer_import_cancelled": "Import betalkirin.", "Importer_import_failed": "dema ku li import An error teqîn pêk hat.", "Importer_importing_channels": "Importing kanalên.", diff --git a/packages/i18n/src/locales/lo.i18n.json b/packages/i18n/src/locales/lo.i18n.json index ce86290fe61e..05f70a1c6cd0 100644 --- a/packages/i18n/src/locales/lo.i18n.json +++ b/packages/i18n/src/locales/lo.i18n.json @@ -1306,8 +1306,6 @@ "Importer_done": "ການນໍາເຂົ້າທີ່ສົມບູນ!", "Importer_finishing": "ສໍາເລັດເຖິງການນໍາເຂົ້າ.", "Importer_From_Description": "ການນໍາເຂົ້າ {{from}} ຂໍ້ມູນ's ເຂົ້າໄປໃນ Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "ໂປດທາບວ່າການນໍາເຂົ້ານີ້ຍັງຄົງເປັນວຽກທີ່ກໍາລັງດໍາເນີນການ, ກະລຸນາລາຍງານຂໍ້ຜິດພາດທີ່ເກີດຂື້ນໃນ GitHub:", - "Importer_HipChatEnterprise_Information": "ໄຟລ໌ທີ່ອັບໂຫລດຕ້ອງເປັນ tar.gz ທີ່ຖືກລະຫັດ, ກະລຸນາອ່ານເອກສານສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ:", "Importer_import_cancelled": "ການນໍາເຂົ້າຍົກເລີກ.", "Importer_import_failed": "ເກີດຄວາມຜິດພາດໃນຂະນະທີ່ເຮັດວຽກການນໍາເຂົ້າ.", "Importer_importing_channels": "ການນໍາເຂົ້າຊ່ອງທາງການ.", diff --git a/packages/i18n/src/locales/lt.i18n.json b/packages/i18n/src/locales/lt.i18n.json index 350049212f85..92ca4296c88c 100644 --- a/packages/i18n/src/locales/lt.i18n.json +++ b/packages/i18n/src/locales/lt.i18n.json @@ -1327,8 +1327,6 @@ "Importer_done": "Importavimas baigtas!", "Importer_finishing": "Užbaigti importą.", "Importer_From_Description": "Importuoja {{from}} duomenis į Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Atminkite, kad šis importas vis dar vyksta, prašome pranešti apie klaidas, kurios atsiranda \"GitHub\":", - "Importer_HipChatEnterprise_Information": "Įkeltas failas turi būti iššifruotas tar.gz, prašome perskaityti dokumentus, kad gautumėte papildomos informacijos:", "Importer_import_cancelled": "Importas atšauktas.", "Importer_import_failed": "Paleidus importą įvyko klaida.", "Importer_importing_channels": "Kanalų importavimas.", diff --git a/packages/i18n/src/locales/lv.i18n.json b/packages/i18n/src/locales/lv.i18n.json index f74ff4a62af2..69f0a7adb3ae 100644 --- a/packages/i18n/src/locales/lv.i18n.json +++ b/packages/i18n/src/locales/lv.i18n.json @@ -1283,8 +1283,6 @@ "Importer_CSV_Information": "CSV importer ir nepieciešams noteikts formāts, lūdzu, izlasiet dokumentāciju, kā veidot savu zip failu:", "Importer_done": "Importēšana ir pabeigta.", "Importer_finishing": "Importēšanas pabeigšana.", - "Importer_HipChatEnterprise_BetaWarning": "Lūdzu, ņemiet vērā, ka šis importēšana joprojām turpinās darbu, lūdzu, ziņojiet par visām kļūdām, kas rodas GitHub:", - "Importer_HipChatEnterprise_Information": "Augšupielādētajam failam jābūt atšifrētam tar.gz, lūdzu, izlasiet dokumentāciju, lai saņemtu sīkāku informāciju:", "Importer_import_cancelled": "Imports ir atcelts.", "Importer_import_failed": "Veicot importēšanu, radās kļūda.", "Importer_importing_channels": "Kanālu importēšana.", diff --git a/packages/i18n/src/locales/mn.i18n.json b/packages/i18n/src/locales/mn.i18n.json index df3463de92a9..19f9614e779e 100644 --- a/packages/i18n/src/locales/mn.i18n.json +++ b/packages/i18n/src/locales/mn.i18n.json @@ -1267,8 +1267,6 @@ "Importer_CSV_Information": "CSV-ийн импортлогч тодорхой форматыг шаарддаг бөгөөд таны zip файлыг хэрхэн бүтээх талаар баримтжуулалтыг уншина уу:", "Importer_done": "Бүрэн импортлох!", "Importer_finishing": "Импортыг дуусгах.", - "Importer_HipChatEnterprise_BetaWarning": "Энэ импорт нь одоо ч ажил дуусч байгаа гэдгийг анхаарна уу, GitHub-д тохиолддог аливаа алдааг мэдээлнэ үү:", - "Importer_HipChatEnterprise_Information": "Байршуулсан файл нь шифрлэгдсэн tar.gz байна, дэлгэрэнгүй мэдээллийг баримтжуулж уншина уу:", "Importer_import_cancelled": "Импорт цуцлагдсан.", "Importer_import_failed": "Импортыг ажиллуулж байхад алдаа гарлаа.", "Importer_importing_channels": "Суваг оруулах.", diff --git a/packages/i18n/src/locales/ms-MY.i18n.json b/packages/i18n/src/locales/ms-MY.i18n.json index 065170e2ee3b..dd95e255eef9 100644 --- a/packages/i18n/src/locales/ms-MY.i18n.json +++ b/packages/i18n/src/locales/ms-MY.i18n.json @@ -1270,8 +1270,6 @@ "Importer_done": "Mengimport lengkap!", "Importer_finishing": "Hampir selesai import.", "Importer_From_Description": "Import {{from}} data's ke dalam Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Harap maklum bahawa import ini masih merupakan kerja yang sedang berjalan, sila laporkan kesilapan yang berlaku di GitHub:", - "Importer_HipChatEnterprise_Information": "Fail yang dimuat naik mestilah tar.gz disahsulit, sila baca dokumentasi untuk maklumat lanjut:", "Importer_import_cancelled": "Import dibatalkan.", "Importer_import_failed": "Ralat berlaku semasa berjalan import.", "Importer_importing_channels": "Mengimport saluran.", diff --git a/packages/i18n/src/locales/nl.i18n.json b/packages/i18n/src/locales/nl.i18n.json index 93433dff0bee..4c76ee3998dd 100644 --- a/packages/i18n/src/locales/nl.i18n.json +++ b/packages/i18n/src/locales/nl.i18n.json @@ -2123,8 +2123,6 @@ "Importer_finishing": "Afwerking van de import.", "Importer_From_Description": "Impoort {{from}}-gegevens in Rocket.Chat.", "Importer_From_Description_CSV": "Importeert CSV-gegevens in Rocket.Chat. De geüploade file moet een ZIP-bestand zijn.", - "Importer_HipChatEnterprise_BetaWarning": "Houd er rekening mee dat deze import nog steeds in uitvoering is, meld eventuele fouten die optreden op GitHub:", - "Importer_HipChatEnterprise_Information": "Het geüploade bestand moet een gedecodeerde tar.gz zijn, lees de documentatie voor meer informatie:", "Importer_import_cancelled": "Import geannuleerd.", "Importer_import_failed": "Er is een fout opgetreden tijdens het importeren.", "Importer_importing_channels": "Kanalen aan het importeren.", diff --git a/packages/i18n/src/locales/no.i18n.json b/packages/i18n/src/locales/no.i18n.json index 769e58c1e6a8..4c2e8231e952 100644 --- a/packages/i18n/src/locales/no.i18n.json +++ b/packages/i18n/src/locales/no.i18n.json @@ -2211,8 +2211,6 @@ "Importer_done": "Importerer komplett!", "Importer_finishing": "Fullfører importen.", "Importer_From_Description": "Importerer data fra {{from}} til Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Vær oppmerksom på at denne importen fortsatt er et pågående arbeid, vennligst rapporter eventuelle feil som oppstår i GitHub:", - "Importer_HipChatEnterprise_Information": "Filen som lastes opp må være en dekryptert tar.gz, vennligst les dokumentasjonen for ytterligere informasjon:", "Importer_import_cancelled": "Import avbrutt.", "Importer_import_failed": "Det oppsto en feil under kjøring av importen.", "Importer_importing_channels": "Importerer kanalene.", diff --git a/packages/i18n/src/locales/pl.i18n.json b/packages/i18n/src/locales/pl.i18n.json index 9043a5137fa2..8d8a6d7f8b81 100644 --- a/packages/i18n/src/locales/pl.i18n.json +++ b/packages/i18n/src/locales/pl.i18n.json @@ -2315,8 +2315,6 @@ "Importer_finishing": "Kończąc się na import.", "Importer_From_Description": "Import danych {{from}} 's do Rocket.Chat.", "Importer_From_Description_CSV": "Importuje dane CSV do Rocket.Chat. Przesłany plik musi być plikiem ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Należy pamiętać, że ten import jest nadal w toku, zgłoś wszelkie błędy występujące w GitHub:", - "Importer_HipChatEnterprise_Information": "Przesłany plik musi być odszyfrowanym tar.gz. Aby uzyskać więcej informacji, przeczytaj dokumentację:", "Importer_import_cancelled": "Importowanie anulowane.", "Importer_import_failed": "Wystąpił błąd podczas wykonywania importu.", "Importer_importing_channels": "Importowanie kanałów.", diff --git a/packages/i18n/src/locales/pt-BR.i18n.json b/packages/i18n/src/locales/pt-BR.i18n.json index cbe9906ed8aa..6b66906f63a4 100644 --- a/packages/i18n/src/locales/pt-BR.i18n.json +++ b/packages/i18n/src/locales/pt-BR.i18n.json @@ -2189,8 +2189,6 @@ "Importer_finishing": "Terminando a importação.", "Importer_From_Description": "Importa dados de {{from}} para o Rocket.Chat.", "Importer_From_Description_CSV": "Importa dados de CSV para o Rocket.Chat. O arquivo importado deve ser um arquivo ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Saiba que esta importação é ainda um trabalho em andamento; informe quaisquer erros que ocorrerem no GitHub:", - "Importer_HipChatEnterprise_Information": "O arquivo carregado deve ser um tar.gz descriptografado; leia a documentação para obter mais informações:", "Importer_import_cancelled": "Importação cancelada.", "Importer_import_failed": "Ocorreu um erro durante a execução da importação.", "Importer_importing_channels": "Importando os canais.", diff --git a/packages/i18n/src/locales/pt.i18n.json b/packages/i18n/src/locales/pt.i18n.json index c3bf9d739b21..dce6b7a84ab0 100644 --- a/packages/i18n/src/locales/pt.i18n.json +++ b/packages/i18n/src/locales/pt.i18n.json @@ -1516,8 +1516,6 @@ "Importer_ExternalUrl_Description": "Você também pode usar um URL para um arquivo acessível publicamente:", "Importer_finishing": "A terminar importação.", "Importer_From_Description": "Importar dados de {{from}} para o Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Lembre-se de que esta importação ainda é um trabalho em andamento, informe quaisquer erros que ocorram no GitHub:", - "Importer_HipChatEnterprise_Information": "O arquivo carregado deve ser um tar.gz descienciado, leia a documentação para obter mais informações:", "Importer_import_cancelled": "Importação cancelada.", "Importer_import_failed": "Ocorreu um erro durante a execução da importação.", "Importer_importing_channels": "A importar os canais.", diff --git a/packages/i18n/src/locales/ro.i18n.json b/packages/i18n/src/locales/ro.i18n.json index 8f6974fde123..1682d381eba6 100644 --- a/packages/i18n/src/locales/ro.i18n.json +++ b/packages/i18n/src/locales/ro.i18n.json @@ -1271,8 +1271,6 @@ "Importer_done": "Import complet!", "Importer_finishing": "Se finalizează import.", "Importer_From_Description": "Importuri {{from}} 's date în Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Rețineți că acest import este încă o operațiune în curs, vă rugăm să raportați orice erori apărute în GitHub:", - "Importer_HipChatEnterprise_Information": "Fișierul încărcat trebuie să fie un tar.gz decriptat, citiți documentația pentru mai multe informații:", "Importer_import_cancelled": "Import anulat.", "Importer_import_failed": "A Apărut o eroare în timpul importului.", "Importer_importing_channels": "Se importă canalele.", diff --git a/packages/i18n/src/locales/ru.i18n.json b/packages/i18n/src/locales/ru.i18n.json index 577fcd3eaf49..b71382186315 100644 --- a/packages/i18n/src/locales/ru.i18n.json +++ b/packages/i18n/src/locales/ru.i18n.json @@ -2280,8 +2280,6 @@ "Importer_finishing": "Завершить импорт данных.", "Importer_From_Description": "Импортировать данные из {{from}} в Rocket.Chat.", "Importer_From_Description_CSV": "Импортирует данные файла CSV в Rocket.Chat. Загруженный файл должен быть в формате ZIP.", - "Importer_HipChatEnterprise_BetaWarning": "Имейте в виду, что импорт всё ещё продолжается. Пожалуйста, сообщите о любых возникающих ошибках на GitHub:", - "Importer_HipChatEnterprise_Information": "Загруженный файл должен быть расшифрованным tar.gz, пожалуйста, прочитайте документацию для получения дополнительной информации:", "Importer_import_cancelled": "Импорт данных отменен.", "Importer_import_failed": "Во время импорта данных возникла ошибка.", "Importer_importing_channels": "Импортировать каналы.", diff --git a/packages/i18n/src/locales/sk-SK.i18n.json b/packages/i18n/src/locales/sk-SK.i18n.json index 27100c086c67..8f8c70d6f72a 100644 --- a/packages/i18n/src/locales/sk-SK.i18n.json +++ b/packages/i18n/src/locales/sk-SK.i18n.json @@ -1282,8 +1282,6 @@ "Importer_done": "Import je dokončený!", "Importer_finishing": "Dokončenie importu.", "Importer_From_Description": "Importuje {{from}} dáta do Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Majte na pamäti, že tento import je stále prebiehajúcim procesom, nahláste všetky chyby, ktoré sa vyskytli v GitHub:", - "Importer_HipChatEnterprise_Information": "Nahraný súbor musí byť dešifrovaný tar.gz, prečítajte si prosím dokumentáciu pre ďalšie informácie:", "Importer_import_cancelled": "Import bol zrušený.", "Importer_import_failed": "Počas spúšťania importu sa vyskytla chyba.", "Importer_importing_channels": "Importovanie kanálov.", diff --git a/packages/i18n/src/locales/sl-SI.i18n.json b/packages/i18n/src/locales/sl-SI.i18n.json index a3630f6ce6c6..9bbec55b124f 100644 --- a/packages/i18n/src/locales/sl-SI.i18n.json +++ b/packages/i18n/src/locales/sl-SI.i18n.json @@ -1263,8 +1263,6 @@ "Importer_done": "Uvoz končan!", "Importer_finishing": "Končujem uvoz. ", "Importer_From_Description": "Uvozi {{from}} podatki v Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Upoštevajte, da uvoz še kar poteka, prijavite napake, ki so se zgodile v GitHub:", - "Importer_HipChatEnterprise_Information": "Naložena datoteka mora biti dešifrirana tar.gz, za več informacij preberite navodila. ", "Importer_import_cancelled": "Uvoz preklican. ", "Importer_import_failed": "Napaka med uvozom.", "Importer_importing_channels": "Uvažanje kanalov. ", diff --git a/packages/i18n/src/locales/sq.i18n.json b/packages/i18n/src/locales/sq.i18n.json index 73e0ca0a56ed..92dd5cf8bb9f 100644 --- a/packages/i18n/src/locales/sq.i18n.json +++ b/packages/i18n/src/locales/sq.i18n.json @@ -1271,8 +1271,6 @@ "Importer_done": "Importimi i plotë!", "Importer_finishing": "Përfunduar importin.", "Importer_From_Description": "Importet {{from}} dhënat's në Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Ju lutemi, kini parasysh se ky import ende është një punë në vazhdim, ju lutem raportoni çdo gabim që ndodh në GitHub:", - "Importer_HipChatEnterprise_Information": "Skedari i ngarkuar duhet të jetë tar.gz i dekriptuar, ju lutem lexoni dokumentacionin për informacione të mëtejshme:", "Importer_import_cancelled": "Import anuluar.", "Importer_import_failed": "Ndodhi një gabim gjatë drejtimin e importit.", "Importer_importing_channels": "Importimin e kanaleve.", diff --git a/packages/i18n/src/locales/sr.i18n.json b/packages/i18n/src/locales/sr.i18n.json index 4a741a750d4f..2de1204a86e3 100644 --- a/packages/i18n/src/locales/sr.i18n.json +++ b/packages/i18n/src/locales/sr.i18n.json @@ -1153,8 +1153,6 @@ "Importer_CSV_Information": "ЦСВ увознику је потребан одређени формат, молимо прочитајте документацију како структурирати своју зип датотеку:", "Importer_done": "Увоз завршен!", "Importer_finishing": "Завршавање увоза.", - "Importer_HipChatEnterprise_BetaWarning": "Имајте на уму да је овај увоз и даље посао у току, пријавите грешке које се јављају у ГитХуб-у:", - "Importer_HipChatEnterprise_Information": "Датотека која је отпремљена мора бити дешифрована тар.гз, прочитајте документацију за додатне информације:", "Importer_import_cancelled": "Увоз отказан.", "Importer_import_failed": "Дошло је до грешке приликом увоза.", "Importer_importing_channels": "Увожење канала.", diff --git a/packages/i18n/src/locales/sv.i18n.json b/packages/i18n/src/locales/sv.i18n.json index 843e70fbaa38..064581ae07ca 100644 --- a/packages/i18n/src/locales/sv.i18n.json +++ b/packages/i18n/src/locales/sv.i18n.json @@ -2432,8 +2432,6 @@ "Importer_finishing": "Avslutar importen.", "Importer_From_Description": "Importera {{from}}s data till Rocket.Chat.", "Importer_From_Description_CSV": "Importerar CSV-data till Rocket.Chat. Den uppladdade filen måste vara en zip-fil.", - "Importer_HipChatEnterprise_BetaWarning": "Var medveten om att denna import fortfarande är ett pågående arbete, var god rapportera eventuella fel som uppstår i GitHub:", - "Importer_HipChatEnterprise_Information": "Den uppladdade filen måste vara en dekrypterad tar.gz, läs dokumentationen för ytterligare information:", "Importer_import_cancelled": "Import avbruten.", "Importer_import_failed": "Ett fel uppstod under importen.", "Importer_importing_channels": "Importerar kanalerna.", diff --git a/packages/i18n/src/locales/ta-IN.i18n.json b/packages/i18n/src/locales/ta-IN.i18n.json index 7ae4d9a96653..54ac84c6552b 100644 --- a/packages/i18n/src/locales/ta-IN.i18n.json +++ b/packages/i18n/src/locales/ta-IN.i18n.json @@ -1271,8 +1271,6 @@ "Importer_done": "முழுமையான இறக்குமதி!", "Importer_finishing": "இறக்குமதி முடிக்கிறது.", "Importer_From_Description": "இறக்குமதி Rocket.Chat ஒரு 'கள் தரவு {{from}}.", - "Importer_HipChatEnterprise_BetaWarning": "இந்த இறக்குமதி இன்னமும் முன்னேற்றம் அடைந்ததை நினைவில் கொள்ளுங்கள், தயவுசெய்து GitHub இல் ஏற்படும் எந்த பிழைகளையும் தெரிவிக்கவும்:", - "Importer_HipChatEnterprise_Information": "பதிவேற்றிய கோப்பு ஒரு குறியாக்கப்பட்ட tar.gz ஆக இருக்க வேண்டும், மேலும் தகவலுக்கு ஆவணங்களைப் படிக்கவும்:", "Importer_import_cancelled": "இறக்குமதி ரத்துசெய்யப்பட்டது.", "Importer_import_failed": "இறக்குமதி இயங்கும் போது ஒரு பிழை ஏற்பட்டது.", "Importer_importing_channels": "சேனல்கள் இறக்குமதி.", diff --git a/packages/i18n/src/locales/th-TH.i18n.json b/packages/i18n/src/locales/th-TH.i18n.json index e9f3705b559f..c3120a791770 100644 --- a/packages/i18n/src/locales/th-TH.i18n.json +++ b/packages/i18n/src/locales/th-TH.i18n.json @@ -1266,8 +1266,6 @@ "Importer_CSV_Information": "ตัวนำเข้า CSV ต้องการรูปแบบเฉพาะโปรดอ่านเอกสารสำหรับวิธีจัดโครงสร้างไฟล์ซิปของคุณ:", "Importer_done": "การนำเข้าเสร็จสมบูรณ์!", "Importer_finishing": "เสร็จสิ้นการนำเข้า", - "Importer_HipChatEnterprise_BetaWarning": "โปรดทราบว่าการนำเข้านี้ยังคงเป็นงานระหว่างดำเนินการโปรดรายงานข้อผิดพลาดที่เกิดขึ้นใน GitHub:", - "Importer_HipChatEnterprise_Information": "ไฟล์ที่อัปโหลดต้องเป็น tar.gad ถอดรหัสลับโปรดอ่านเอกสารประกอบสำหรับข้อมูลเพิ่มเติม:", "Importer_import_cancelled": "ยกเลิกการนำเข้าแล้ว", "Importer_import_failed": "เกิดข้อผิดพลาดขณะเรียกใช้งานนำเข้า", "Importer_importing_channels": "การนำเข้าช่อง", diff --git a/packages/i18n/src/locales/tr.i18n.json b/packages/i18n/src/locales/tr.i18n.json index fbfe4c1a1d8c..023058c4a346 100644 --- a/packages/i18n/src/locales/tr.i18n.json +++ b/packages/i18n/src/locales/tr.i18n.json @@ -1540,8 +1540,6 @@ "Importer_ExternalUrl_Description": "Herkesin erişebileceği dosya için bir URL de kullanabilirsiniz:", "Importer_finishing": "İçe aktarım tamamlanıyor.", "Importer_From_Description": "{{from}} verisini Rocket.Chat'e aktarır.", - "Importer_HipChatEnterprise_BetaWarning": "Bu içe aktarma işlemi halen devam etmekte olan bir çalışma olduğuna dikkat edin, lütfen GitHub'ta oluşan hataları bildirin:", - "Importer_HipChatEnterprise_Information": "Yüklenen dosya, şifresi çözülmüş bir tar.gz olmalıdır; daha fazla bilgi için lütfen belgeleri okuyun:", "Importer_import_cancelled": "İçe aktarım iptal edildi.", "Importer_import_failed": "İçe aktarım sırasında bir hata oluştu.", "Importer_importing_channels": "Kanallar içe aktarılıyor.", diff --git a/packages/i18n/src/locales/uk.i18n.json b/packages/i18n/src/locales/uk.i18n.json index 6ae5a028387f..4478bf77a7e8 100644 --- a/packages/i18n/src/locales/uk.i18n.json +++ b/packages/i18n/src/locales/uk.i18n.json @@ -1685,8 +1685,6 @@ "Importer_ExternalUrl_Description": "Ви також можете використовувати URL-адресу для загальнодоступного файлу:", "Importer_finishing": "Завершення імпорту.", "Importer_From_Description": "Imports {{from}} data в Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Будь ласка, пам'ятайте, що цей імпорт все ще працює, повідомте про всі помилки, які виникають в GitHub:", - "Importer_HipChatEnterprise_Information": "Завантажений файл повинен бути розшифрованим tar.gz, будь ласка, ознайомтеся з документацією для отримання додаткової інформації:", "Importer_import_cancelled": "Імпорт скасований.", "Importer_import_failed": "Сталася помилка під час виконання імпорту.", "Importer_importing_channels": "Імпорт каналів.", diff --git a/packages/i18n/src/locales/vi-VN.i18n.json b/packages/i18n/src/locales/vi-VN.i18n.json index 21fc37f11f01..3ab142c2e056 100644 --- a/packages/i18n/src/locales/vi-VN.i18n.json +++ b/packages/i18n/src/locales/vi-VN.i18n.json @@ -1365,8 +1365,6 @@ "Importer_done": "Nhập đầy đủ!", "Importer_finishing": "Hoàn thành việc nhập dữ liệu.", "Importer_From_Description": "Nhập dữ liệu {{from}} vào Rocket.Chat.", - "Importer_HipChatEnterprise_BetaWarning": "Xin lưu ý rằng phần nhập dữ liệu này vẫn đang trong quá trình hoàn thiện, hãy báo cáo bất kỳ lỗi nào xảy ra tại GitHub:", - "Importer_HipChatEnterprise_Information": "Tệp được tải lên phải là tệp được giải mã tar.gz, vui lòng đọc tài liệu để biết thêm thông tin:", "Importer_import_cancelled": "Nhập dữ liệu bị hủy.", "Importer_import_failed": "Đã xảy ra lỗi khi chạy.", "Importer_importing_channels": "Nhập các kênh.", diff --git a/packages/i18n/src/locales/zh-HK.i18n.json b/packages/i18n/src/locales/zh-HK.i18n.json index fa44a7fed369..4a658c74e957 100644 --- a/packages/i18n/src/locales/zh-HK.i18n.json +++ b/packages/i18n/src/locales/zh-HK.i18n.json @@ -1292,8 +1292,6 @@ "Importer_done": "导入完成!", "Importer_finishing": "完成进口。", "Importer_From_Description": "将{{from}}数据导入Rocket.Chat。", - "Importer_HipChatEnterprise_BetaWarning": "请注意,此导入仍在进行中,请报告GitHub中发生的任何错误:", - "Importer_HipChatEnterprise_Information": "上传的文件必须是解密的tar.gz,请阅读文档以获取更多信息:", "Importer_import_cancelled": "导入已取消。", "Importer_import_failed": "运行导入时发生错误。", "Importer_importing_channels": "导入频道。", diff --git a/packages/i18n/src/locales/zh-TW.i18n.json b/packages/i18n/src/locales/zh-TW.i18n.json index d15e7739f226..9a7f1990fb3f 100644 --- a/packages/i18n/src/locales/zh-TW.i18n.json +++ b/packages/i18n/src/locales/zh-TW.i18n.json @@ -2084,8 +2084,6 @@ "Importer_finishing": "完成了匯入。", "Importer_From_Description": "匯入{{from}}的資料轉換成Rocket.Chat。", "Importer_From_Description_CSV": "匯入 CSV 資料到 Rocket.Chat。上傳的檔案必須為 ZIP 檔。", - "Importer_HipChatEnterprise_BetaWarning": "請注意,此匯入仍在進行中,請報告GitHub中發生的任何錯誤:", - "Importer_HipChatEnterprise_Information": "上傳的文件必須是解密的tar.gz,請閱讀文件以獲取更多訊息:", "Importer_import_cancelled": "匯入已取消。", "Importer_import_failed": "在執行匯入時出錯。", "Importer_importing_channels": "匯入頻道。", diff --git a/packages/i18n/src/locales/zh.i18n.json b/packages/i18n/src/locales/zh.i18n.json index b5a972637d81..d656c787a1df 100644 --- a/packages/i18n/src/locales/zh.i18n.json +++ b/packages/i18n/src/locales/zh.i18n.json @@ -1901,8 +1901,6 @@ "Importer_ExternalUrl_Description": "您还可以将URL用于可公开访问的文件:", "Importer_finishing": "导入即将完成。", "Importer_From_Description": "将 {{from}} 数据导入 Rocket.Chat。", - "Importer_HipChatEnterprise_BetaWarning": "请注意,导入功能尚处于开发阶段,如有错误发生请在 GitHub 向我们反馈:", - "Importer_HipChatEnterprise_Information": "上传的文件必须为未加密的 tar.gz 文件,请查阅文档进一步了解相关信息:", "Importer_import_cancelled": "已取消导入。", "Importer_import_failed": "导入过程中发生错误!", "Importer_importing_channels": "正在导入频道。", diff --git a/packages/model-typings/src/models/IImportDataModel.ts b/packages/model-typings/src/models/IImportDataModel.ts index 160eaaf604a0..95eaa8a4ce0d 100644 --- a/packages/model-typings/src/models/IImportDataModel.ts +++ b/packages/model-typings/src/models/IImportDataModel.ts @@ -12,5 +12,4 @@ export interface IImportDataModel extends IBaseModel { checkIfDirectMessagesExists(): Promise; countMessages(): Promise; findChannelImportIdByNameOrImportId(channelIdentifier: string): Promise; - findDMForImportedUsers(...users: Array): Promise; } diff --git a/yarn.lock b/yarn.lock index c50d89ed887a..5f7149075360 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9511,7 +9511,6 @@ __metadata: supports-color: ~7.2.0 suretype: ~2.4.1 swiper: ^9.3.2 - tar-stream: ^1.6.2 template-file: ^6.0.1 textarea-caret: ^3.1.0 tinykeys: ^1.4.0 @@ -39463,7 +39462,7 @@ __metadata: languageName: node linkType: hard -"tar-stream@npm:^1.5.2, tar-stream@npm:^1.6.2": +"tar-stream@npm:^1.5.2": version: 1.6.2 resolution: "tar-stream@npm:1.6.2" dependencies: From 405da2a0d6f64961664a49ceda145fb46a55a4e1 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Thu, 11 Apr 2024 23:57:14 -0300 Subject: [PATCH 10/18] chore!: Removed Mongo 4.4. support and added 7.0 (#32162) Co-authored-by: Diego Sampaio --- .changeset/fair-seahorses-laugh.md | 13 +++++++++++++ .changeset/fluffy-knives-count.md | 5 +++++ .github/workflows/ci-test-e2e.yml | 6 +++--- .github/workflows/ci.yml | 8 ++++---- apps/meteor/server/startup/serverRunning.js | 10 +++++----- docker-compose-local.yml | 8 ++++---- 6 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 .changeset/fair-seahorses-laugh.md create mode 100644 .changeset/fluffy-knives-count.md diff --git a/.changeset/fair-seahorses-laugh.md b/.changeset/fair-seahorses-laugh.md new file mode 100644 index 000000000000..8f93695a8e17 --- /dev/null +++ b/.changeset/fair-seahorses-laugh.md @@ -0,0 +1,13 @@ +--- +'@rocket.chat/meteor': major +--- + +As per MongoDB Lifecycle Schedules ([mongodb.com/legal/support-policy/lifecycles](https://www.mongodb.com/legal/support-policy/lifecycles)) we're removing official support to MongoDB version 4.4 that has reached end of life in February 2024. + +We recommend upgrading to at least MongoDB 6.0+, though 5.0 is still a supported version. + +Here are official docs on how to upgrade to some of the supported versions: + +- [mongodb.com/docs/manual/release-notes/5.0-upgrade-replica-set](https://www.mongodb.com/docs/manual/release-notes/5.0-upgrade-replica-set/) +- [mongodb.com/docs/manual/release-notes/6.0-upgrade-replica-set](https://www.mongodb.com/docs/manual/release-notes/6.0-upgrade-replica-set/) +- [mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/) diff --git a/.changeset/fluffy-knives-count.md b/.changeset/fluffy-knives-count.md new file mode 100644 index 000000000000..4e4e8aad3631 --- /dev/null +++ b/.changeset/fluffy-knives-count.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": major +--- + +Added MongoDB 7.0 support diff --git a/.github/workflows/ci-test-e2e.yml b/.github/workflows/ci-test-e2e.yml index a7a6f3f367e2..11d0a1e4262a 100644 --- a/.github/workflows/ci-test-e2e.yml +++ b/.github/workflows/ci-test-e2e.yml @@ -29,7 +29,7 @@ on: transporter: type: string mongodb-version: - default: "['4.4', '6.0']" + default: "['5.0', '7.0']" required: false type: string release: @@ -74,8 +74,8 @@ jobs: test: runs-on: ubuntu-20.04 env: - RC_DOCKERFILE: ${{ matrix.mongodb-version == '6.0' && inputs.rc-dockerfile-alpine || inputs.rc-dockerfile }} - RC_DOCKER_TAG: ${{ matrix.mongodb-version == '6.0' && inputs.rc-docker-tag-alpine || inputs.rc-docker-tag }} + RC_DOCKERFILE: ${{ matrix.mongodb-version == '7.0' && inputs.rc-dockerfile-alpine || inputs.rc-dockerfile }} + RC_DOCKER_TAG: ${{ matrix.mongodb-version == '7.0' && inputs.rc-docker-tag-alpine || inputs.rc-docker-tag }} strategy: fail-fast: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 51e034505a85..5a3dfbf87d87 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,7 +117,7 @@ jobs: fi; curl -H "Content-Type: application/json" -H "X-Update-Token: $UPDATE_TOKEN" -d \ - "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"4.4\", \"5.0\", \"6.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"draft\", \"draftAs\": \"$RC_RELEASE\"}" \ + "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"5.0\", \"6.0\", \"7.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"draft\", \"draftAs\": \"$RC_RELEASE\"}" \ https://releases.rocket.chat/update packages-build: @@ -348,7 +348,7 @@ jobs: release: ee transporter: 'nats://nats:4222' enterprise-license: ${{ needs.release-versions.outputs.enterprise-license }} - mongodb-version: "['4.4']" + mongodb-version: "['5.0']" node-version: ${{ needs.release-versions.outputs.node-version }} lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} rc-dockerfile: ${{ needs.release-versions.outputs.rc-dockerfile }} @@ -372,7 +372,7 @@ jobs: enterprise-license: ${{ needs.release-versions.outputs.enterprise-license }} shard: '[1, 2, 3, 4, 5]' total-shard: 5 - mongodb-version: "['4.4']" + mongodb-version: "['5.0']" node-version: ${{ needs.release-versions.outputs.node-version }} lowercase-repo: ${{ needs.release-versions.outputs.lowercase-repo }} rc-dockerfile: ${{ needs.release-versions.outputs.rc-dockerfile }} @@ -720,7 +720,7 @@ jobs: fi; curl -H "Content-Type: application/json" -H "X-Update-Token: $UPDATE_TOKEN" -d \ - "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"4.4\", \"5.0\", \"6.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"$RC_RELEASE\"}" \ + "{\"nodeVersion\": \"${{ needs.release-versions.outputs.node-version }}\", \"compatibleMongoVersions\": [\"5.0\", \"6.0\", \"7.0\"], \"commit\": \"$GITHUB_SHA\", \"tag\": \"$RC_VERSION\", \"branch\": \"$GIT_BRANCH\", \"artifactName\": \"$ARTIFACT_NAME\", \"releaseType\": \"$RC_RELEASE\"}" \ https://releases.rocket.chat/update # Makes build fail if the release isn't there diff --git a/apps/meteor/server/startup/serverRunning.js b/apps/meteor/server/startup/serverRunning.js index 8d572036f16a..d642c006c4d2 100644 --- a/apps/meteor/server/startup/serverRunning.js +++ b/apps/meteor/server/startup/serverRunning.js @@ -78,8 +78,8 @@ Meteor.startup(async () => { exitIfNotBypassed(process.env.BYPASS_NODEJS_VALIDATION); } - if (!semver.satisfies(semver.coerce(mongoVersion), '>=4.4.0')) { - msg += ['', '', 'YOUR CURRENT MONGODB VERSION IS NOT SUPPORTED,', 'PLEASE UPGRADE TO VERSION 4.4 OR LATER'].join('\n'); + if (semver.satisfies(semver.coerce(mongoVersion), '<5.0.0')) { + msg += ['', '', 'YOUR CURRENT MONGODB VERSION IS NOT SUPPORTED,', 'PLEASE UPGRADE TO VERSION 5.0 OR LATER'].join('\n'); showErrorBox('SERVER ERROR', msg); exitIfNotBypassed(process.env.BYPASS_MONGO_VALIDATION); @@ -88,11 +88,11 @@ Meteor.startup(async () => { showSuccessBox('SERVER RUNNING', msg); // Deprecation - if (!skipMongoDbDeprecationCheck && !semver.satisfies(semver.coerce(mongoVersion), '>=5.0.0')) { + if (!skipMongoDbDeprecationCheck && semver.satisfies(semver.coerce(mongoVersion), '<6.0.0')) { msg = [ `YOUR CURRENT MONGODB VERSION (${mongoVersion}) IS DEPRECATED.`, - 'IT WILL NOT BE SUPPORTED ON ROCKET.CHAT VERSION 7.0.0 AND GREATER,', - 'PLEASE UPGRADE MONGODB TO VERSION 5.0 OR GREATER', + 'IT WILL NOT BE SUPPORTED ON ROCKET.CHAT VERSION 8.0.0 AND GREATER,', + 'PLEASE UPGRADE MONGODB TO VERSION 6.0 OR GREATER', ].join('\n'); showWarningBox('DEPRECATION', msg); diff --git a/docker-compose-local.yml b/docker-compose-local.yml index 16c64187461a..812899c7d946 100644 --- a/docker-compose-local.yml +++ b/docker-compose-local.yml @@ -112,7 +112,7 @@ services: - 'host.docker.internal:host-gateway' depends_on: - nats - + queue-worker-service: platform: linux/amd64 build: @@ -128,7 +128,7 @@ services: - 'host.docker.internal:host-gateway' depends_on: - nats - + omnichannel-transcript-service: platform: linux/amd64 build: @@ -144,9 +144,9 @@ services: - 'host.docker.internal:host-gateway' depends_on: - nats - + mongo: - image: docker.io/bitnami/mongodb:4.4 + image: docker.io/bitnami/mongodb:7.0 restart: on-failure environment: MONGODB_REPLICA_SET_MODE: primary From ce31b9d4fe96818976f900ab5beef96f31168f27 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Wed, 24 Apr 2024 09:47:33 -0300 Subject: [PATCH 11/18] rebase with mongo --- .github/workflows/ci-test-e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-test-e2e.yml b/.github/workflows/ci-test-e2e.yml index 11d0a1e4262a..c68789ff46fd 100644 --- a/.github/workflows/ci-test-e2e.yml +++ b/.github/workflows/ci-test-e2e.yml @@ -83,7 +83,7 @@ jobs: mongodb-version: ${{ fromJSON(inputs.mongodb-version) }} shard: ${{ fromJSON(inputs.shard) }} - name: MongoDB ${{ matrix.mongodb-version }} (${{ matrix.shard }}/${{ inputs.total-shard }})${{ matrix.mongodb-version == '6.0' && ' - Alpine' || '' }} + name: MongoDB ${{ matrix.mongodb-version }} (${{ matrix.shard }}/${{ inputs.total-shard }})${{ matrix.mongodb-version == '7.0' && ' - Alpine' || '' }} steps: - name: Login to GitHub Container Registry From 1c13d06fd682abbb207ad189236e4919fc72a4c8 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 3 May 2024 10:30:41 -0300 Subject: [PATCH 12/18] chore!: Improve permissions check on channels endpoints (#32330) * chore: Improve permission check on channels endpoints --- apps/meteor/app/api/server/v1/channels.ts | 41 ++- .../tests/end-to-end/api/02-channels.js | 279 +++++++++++++----- 2 files changed, 217 insertions(+), 103 deletions(-) diff --git a/apps/meteor/app/api/server/v1/channels.ts b/apps/meteor/app/api/server/v1/channels.ts index 931cf4be2019..a713bfd29ac6 100644 --- a/apps/meteor/app/api/server/v1/channels.ts +++ b/apps/meteor/app/api/server/v1/channels.ts @@ -27,7 +27,7 @@ import { findUsersOfRoom } from '../../../../server/lib/findUsersOfRoom'; import { hideRoomMethod } from '../../../../server/methods/hideRoom'; import { removeUserFromRoomMethod } from '../../../../server/methods/removeUserFromRoom'; import { canAccessRoomAsync } from '../../../authorization/server'; -import { hasPermissionAsync, hasAtLeastOnePermissionAsync } from '../../../authorization/server/functions/hasPermission'; +import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; import { saveRoomSettings } from '../../../channel-settings/server/methods/saveRoomSettings'; import { mountIntegrationQueryBasedOnPermissions } from '../../../integrations/server/lib/mountQueriesBasedOnPermission'; import { addUsersToRoomMethod } from '../../../lib/server/methods/addUsersToRoom'; @@ -272,6 +272,7 @@ API.v1.addRoute( { authRequired: true, validateParams: isChannelsMessagesProps, + permissionsRequired: ['view-c-room'], }, { async get() { @@ -292,9 +293,6 @@ API.v1.addRoute( ) { return API.v1.unauthorized(); } - if (!(await hasPermissionAsync(this.userId, 'view-c-room'))) { - return API.v1.unauthorized(); - } const { cursor, totalCount } = await Messages.findPaginated(ourQuery, { sort: sort || { ts: -1 }, @@ -477,13 +475,10 @@ API.v1.addRoute( { authRequired: true, validateParams: isChannelsConvertToTeamProps, + permissionsRequired: ['create-team'], }, { async post() { - if (!(await hasPermissionAsync(this.userId, 'create-team'))) { - return API.v1.unauthorized(); - } - const { channelId, channelName } = this.bodyParams; if (!channelId && !channelName) { @@ -855,20 +850,22 @@ API.v1.addRoute( API.v1.addRoute( 'channels.getIntegrations', - { authRequired: true }, { - async get() { - if ( - !(await hasAtLeastOnePermissionAsync(this.userId, [ + authRequired: true, + permissionsRequired: { + GET: { + permissions: [ 'manage-outgoing-integrations', 'manage-own-outgoing-integrations', 'manage-incoming-integrations', 'manage-own-incoming-integrations', - ])) - ) { - return API.v1.unauthorized(); - } - + ], + operation: 'hasAny', + }, + }, + }, + { + async get() { const findResult = await findChannelByIdOrName({ params: this.queryParams, checkedArchived: false, @@ -954,7 +951,12 @@ API.v1.addRoute( API.v1.addRoute( 'channels.list', - { authRequired: true }, + { + authRequired: true, + permissionsRequired: { + GET: { permissions: ['view-c-room', 'view-joined-room'], operation: 'hasAny' }, + }, + }, { async get() { const { offset, count } = await getPaginationItems(this.queryParams); @@ -964,9 +966,6 @@ API.v1.addRoute( const ourQuery: Record = { ...query, t: 'c' }; if (!hasPermissionToSeeAllPublicChannels) { - if (!(await hasPermissionAsync(this.userId, 'view-joined-room'))) { - return API.v1.unauthorized(); - } const roomIds = ( await Subscriptions.findByUserIdAndType(this.userId, 'c', { projection: { rid: 1 }, 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 5291b3621b43..fe59e6bba01d 100644 --- a/apps/meteor/tests/end-to-end/api/02-channels.js +++ b/apps/meteor/tests/end-to-end/api/02-channels.js @@ -337,21 +337,98 @@ describe('[Channels]', function () { .end(done); }); - it('/channels.list', (done) => { - request - .get(api('channels.list')) - .set(credentials) - .query({ - roomId: channel._id, - }) - .expect('Content-Type', 'application/json') - .expect(200) - .expect((res) => { - expect(res.body).to.have.property('success', true); - expect(res.body).to.have.property('count'); - expect(res.body).to.have.property('total'); - }) - .end(done); + describe('/channels.list', () => { + let testChannel; + before(async () => { + await updatePermission('view-c-room', ['admin', 'user', 'bot', 'app', 'anonymous']); + await updatePermission('view-joined-room', ['guest', 'bot', 'app', 'anonymous']); + testChannel = (await createRoom({ type: 'c', name: `channels.messages.test.${Date.now()}` })).body.channel; + }); + + after(async () => { + await updatePermission('view-c-room', ['admin', 'user', 'bot', 'app', 'anonymous']); + await updatePermission('view-joined-room', ['guest', 'bot', 'app', 'anonymous']); + await deleteRoom({ type: 'c', roomId: testChannel._id }); + }); + + it('should succesfully return a list of channels', async () => { + await request + .get(api('channels.list')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('channels').that.is.an('array'); + expect(res.body).to.have.property('count'); + expect(res.body).to.have.property('total'); + }); + }); + + it('should correctly filter channel by id', async () => { + await request + .get(api('channels.list')) + .set(credentials) + .query({ + query: JSON.stringify({ + _id: testChannel._id, + }), + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('channels').that.is.an('array').of.length(1); + expect(res.body).to.have.property('count', 1); + expect(res.body).to.have.property('total'); + }); + }); + + it('should not be succesful when user does NOT have the permission to view channels or joined rooms', async () => { + await updatePermission('view-c-room', []); + await updatePermission('view-joined-room', []); + await request + .get(api('channels.list')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); + }); + }); + + it('should be succesful when user does NOT have the permission to view channels, but can view joined rooms', async () => { + await updatePermission('view-c-room', []); + await updatePermission('view-joined-room', ['admin']); + await request + .get(api('channels.list')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('channels').that.is.an('array'); + expect(res.body).to.have.property('count'); + expect(res.body).to.have.property('total'); + }); + }); + + it('should be succesful when user does NOT have the permission to view joined rooms, but can view channels', async () => { + await updatePermission('view-c-room', ['admin']); + await updatePermission('view-joined-room', []); + await request + .get(api('channels.list')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('channels').that.is.an('array'); + expect(res.body).to.have.property('count'); + expect(res.body).to.have.property('total'); + }); + }); }); it('/channels.list.joined', (done) => { @@ -1395,77 +1472,69 @@ describe('[Channels]', function () { ]); }); - it('should return the list of integrations of created channel and it should contain the integration created by user when the admin DOES have the permission', (done) => { - updatePermission('manage-incoming-integrations', ['admin']).then(() => { - request - .get(api('channels.getIntegrations')) - .set(credentials) - .query({ - roomId: createdChannel._id, - }) - .expect('Content-Type', 'application/json') - .expect(200) - .expect((res) => { - expect(res.body).to.have.property('success', true); - const integrationCreated = res.body.integrations.find( - (createdIntegration) => createdIntegration._id === integrationCreatedByAnUser._id, - ); - expect(integrationCreated).to.be.an('object'); - expect(integrationCreated._id).to.be.equal(integrationCreatedByAnUser._id); - expect(res.body).to.have.property('offset'); - expect(res.body).to.have.property('total'); - }) - .end(done); - }); + it('should return the list of integrations of created channel and it should contain the integration created by user when the admin DOES have the permission', async () => { + await updatePermission('manage-incoming-integrations', ['admin']); + await request + .get(api('channels.getIntegrations')) + .set(credentials) + .query({ + roomId: createdChannel._id, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + const integrationCreated = res.body.integrations.find( + (createdIntegration) => createdIntegration._id === integrationCreatedByAnUser._id, + ); + expect(integrationCreated).to.be.an('object'); + expect(integrationCreated._id).to.be.equal(integrationCreatedByAnUser._id); + expect(res.body).to.have.property('offset'); + expect(res.body).to.have.property('total'); + }); }); - it('should return the list of integrations created by the user only', (done) => { - updatePermission('manage-own-incoming-integrations', ['admin']).then(() => { - updatePermission('manage-incoming-integrations', []).then(() => { - request - .get(api('channels.getIntegrations')) - .set(credentials) - .query({ - roomId: createdChannel._id, - }) - .expect('Content-Type', 'application/json') - .expect(200) - .expect((res) => { - expect(res.body).to.have.property('success', true); - const integrationCreated = res.body.integrations.find( - (createdIntegration) => createdIntegration._id === integrationCreatedByAnUser._id, - ); - expect(integrationCreated).to.be.equal(undefined); - expect(res.body).to.have.property('offset'); - expect(res.body).to.have.property('total'); - }) - .end(done); + it('should return the list of integrations created by the user only', async () => { + await updatePermission('manage-own-incoming-integrations', ['admin']); + await updatePermission('manage-incoming-integrations', []); + await request + .get(api('channels.getIntegrations')) + .set(credentials) + .query({ + roomId: createdChannel._id, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + const integrationCreated = res.body.integrations.find( + (createdIntegration) => createdIntegration._id === integrationCreatedByAnUser._id, + ); + expect(integrationCreated).to.be.equal(undefined); + expect(res.body).to.have.property('offset'); + expect(res.body).to.have.property('total'); }); - }); }); - it('should return unauthorized error when the user does not have any integrations permissions', (done) => { - updatePermission('manage-incoming-integrations', []).then(() => { - updatePermission('manage-own-incoming-integrations', []).then(() => { - updatePermission('manage-outgoing-integrations', []).then(() => { - updatePermission('manage-own-outgoing-integrations', []).then(() => { - request - .get(api('channels.getIntegrations')) - .set(credentials) - .query({ - roomId: createdChannel._id, - }) - .expect('Content-Type', 'application/json') - .expect(403) - .expect((res) => { - expect(res.body).to.have.property('success', false); - expect(res.body).to.have.property('error', 'unauthorized'); - }) - .end(done); - }); - }); + it('should return unauthorized error when the user does not have any integrations permissions', async () => { + await Promise.all([ + updatePermission('manage-incoming-integrations', []), + updatePermission('manage-own-incoming-integrations', []), + updatePermission('manage-outgoing-integrations', []), + updatePermission('manage-own-outgoing-integrations', []), + ]); + await request + .get(api('channels.getIntegrations')) + .set(credentials) + .query({ + roomId: createdChannel._id, + }) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); }); - }); }); }); @@ -2040,7 +2109,7 @@ describe('[Channels]', function () { ]); }); - it('should fail to convert channel if lacking edit-room permission', async () => { + it('should fail to convert channel if lacking create-team permission', async () => { await updatePermission('create-team', []); await updatePermission('edit-room', ['admin']); @@ -2054,7 +2123,7 @@ describe('[Channels]', function () { }); }); - it('should fail to convert channel if lacking create-team permission', async () => { + it('should fail to convert channel if lacking edit-room permission', async () => { await updatePermission('create-team', ['admin']); await updatePermission('edit-room', []); @@ -2235,4 +2304,50 @@ describe('[Channels]', function () { }); }); }); + + describe('[/channels.messages]', () => { + let testChannel; + before(async () => { + await updatePermission('view-c-room', ['admin', 'user', 'bot', 'app', 'anonymous']); + testChannel = (await createRoom({ type: 'c', name: `channels.messages.test.${Date.now()}` })).body.channel; + }); + + after(async () => { + await updatePermission('view-c-room', ['admin', 'user', 'bot', 'app', 'anonymous']); + await deleteRoom({ type: 'c', roomId: testChannel._id }); + }); + + it('should return an empty array of messages when inspecting a new room', async () => { + await request + .get(api('channels.messages')) + .set(credentials) + .query({ + roomId: testChannel._id, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('messages').and.to.be.an('array').that.is.empty; + expect(res.body).to.have.property('count', 0); + expect(res.body).to.have.property('total', 0); + }); + }); + + it('should not return message when the user does NOT have the necessary permission', async () => { + await updatePermission('view-c-room', []); + await request + .get(api('channels.messages')) + .set(credentials) + .query({ + roomId: testChannel._id, + }) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); + }); + }); + }); }); From 8f456475e34c48cad3bb5a5b1a7bfc3b9c35ace5 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 3 May 2024 16:50:47 -0300 Subject: [PATCH 13/18] chore: Improve permissions check on cloud endpoints (#32331) --- apps/meteor/app/api/server/v1/cloud.ts | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/apps/meteor/app/api/server/v1/cloud.ts b/apps/meteor/app/api/server/v1/cloud.ts index 257612628bff..c0694deef4fa 100644 --- a/apps/meteor/app/api/server/v1/cloud.ts +++ b/apps/meteor/app/api/server/v1/cloud.ts @@ -2,7 +2,6 @@ import { check } from 'meteor/check'; import { CloudWorkspaceRegistrationError } from '../../../../lib/errors/CloudWorkspaceRegistrationError'; import { SystemLogger } from '../../../../server/lib/logger/system'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; import { hasRoleAsync } from '../../../authorization/server/functions/hasRole'; import { getCheckoutUrl } from '../../../cloud/server/functions/getCheckoutUrl'; import { getConfirmationPoll } from '../../../cloud/server/functions/getConfirmationPoll'; @@ -20,17 +19,13 @@ import { API } from '../api'; API.v1.addRoute( 'cloud.manualRegister', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['register-on-cloud'] }, { async post() { check(this.bodyParams, { cloudBlob: String, }); - if (!(await hasPermissionAsync(this.userId, 'register-on-cloud'))) { - return API.v1.unauthorized(); - } - const registrationInfo = await retrieveRegistrationStatus(); if (registrationInfo.workspaceRegistered) { @@ -48,7 +43,7 @@ API.v1.addRoute( API.v1.addRoute( 'cloud.createRegistrationIntent', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['manage-cloud'] }, { async post() { check(this.bodyParams, { @@ -56,10 +51,6 @@ API.v1.addRoute( email: String, }); - if (!(await hasPermissionAsync(this.userId, 'manage-cloud'))) { - return API.v1.unauthorized(); - } - const intentData = await startRegisterWorkspaceSetupWizard(this.bodyParams.resend, this.bodyParams.email); if (intentData) { @@ -73,13 +64,9 @@ API.v1.addRoute( API.v1.addRoute( 'cloud.registerPreIntent', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['manage-cloud'] }, { async post() { - if (!(await hasPermissionAsync(this.userId, 'manage-cloud'))) { - return API.v1.unauthorized(); - } - return API.v1.success({ offline: !(await registerPreIntentWorkspaceWizard()) }); }, }, @@ -87,7 +74,7 @@ API.v1.addRoute( API.v1.addRoute( 'cloud.confirmationPoll', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['manage-cloud'] }, { async get() { const { deviceCode } = this.queryParams; @@ -95,10 +82,6 @@ API.v1.addRoute( deviceCode: String, }); - if (!(await hasPermissionAsync(this.userId, 'manage-cloud'))) { - return API.v1.unauthorized(); - } - if (!deviceCode) { return API.v1.failure('Invalid query'); } From ecaa003578ee0290403c6c5a9650d67a76f08978 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 3 May 2024 17:05:32 -0300 Subject: [PATCH 14/18] chore: Improve permissions check on instances endpoints (#32334) --- apps/meteor/app/api/server/v1/instances.ts | 7 +------ apps/meteor/tests/end-to-end/api/00-miscellaneous.js | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/meteor/app/api/server/v1/instances.ts b/apps/meteor/app/api/server/v1/instances.ts index e5404ab3e53c..47f98c856f44 100644 --- a/apps/meteor/app/api/server/v1/instances.ts +++ b/apps/meteor/app/api/server/v1/instances.ts @@ -1,7 +1,6 @@ import { InstanceStatus } from '@rocket.chat/models'; import { isRunningMs } from '../../../../server/lib/isRunningMs'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; import { API } from '../api'; import { getInstanceList } from '../helpers/getInstanceList'; @@ -15,13 +14,9 @@ const getConnections = (() => { API.v1.addRoute( 'instances.get', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['view-statistics'] }, { async get() { - if (!(await hasPermissionAsync(this.userId, 'view-statistics'))) { - return API.v1.unauthorized(); - } - const instanceRecords = await InstanceStatus.find().toArray(); const connections = await getConnections(); diff --git a/apps/meteor/tests/end-to-end/api/00-miscellaneous.js b/apps/meteor/tests/end-to-end/api/00-miscellaneous.js index d545441c1b7c..a96865aa8419 100644 --- a/apps/meteor/tests/end-to-end/api/00-miscellaneous.js +++ b/apps/meteor/tests/end-to-end/api/00-miscellaneous.js @@ -536,7 +536,7 @@ describe('miscellaneous', function () { .expect(403) .expect((res) => { expect(res.body).to.have.property('success', false); - expect(res.body).to.have.property('error', 'unauthorized'); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); }) .end(done); }); From 5ee72d7c4e959a3124b4384e8b10ee3e50237dbf Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 3 May 2024 17:29:50 -0300 Subject: [PATCH 15/18] chore: Improve permissions check on LDAP endpoints (#32335) --- apps/meteor/app/api/server/v1/ldap.ts | 13 +----- apps/meteor/tests/end-to-end/api/26-LDAP.ts | 52 ++++++++++++++++++++- 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/apps/meteor/app/api/server/v1/ldap.ts b/apps/meteor/app/api/server/v1/ldap.ts index 9a057c9b0afc..4b112cfbf335 100644 --- a/apps/meteor/app/api/server/v1/ldap.ts +++ b/apps/meteor/app/api/server/v1/ldap.ts @@ -2,23 +2,18 @@ import { LDAP } from '@rocket.chat/core-services'; import { Match, check } from 'meteor/check'; import { SystemLogger } from '../../../../server/lib/logger/system'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; import { settings } from '../../../settings/server'; import { API } from '../api'; API.v1.addRoute( 'ldap.testConnection', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['test-admin-options'] }, { async post() { if (!this.userId) { throw new Error('error-invalid-user'); } - if (!(await hasPermissionAsync(this.userId, 'test-admin-options'))) { - throw new Error('error-not-authorized'); - } - if (settings.get('LDAP_Enable') !== true) { throw new Error('LDAP_disabled'); } @@ -39,7 +34,7 @@ API.v1.addRoute( API.v1.addRoute( 'ldap.testSearch', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['test-admin-options'] }, { async post() { check( @@ -53,10 +48,6 @@ API.v1.addRoute( throw new Error('error-invalid-user'); } - if (!(await hasPermissionAsync(this.userId, 'test-admin-options'))) { - throw new Error('error-not-authorized'); - } - if (settings.get('LDAP_Enable') !== true) { throw new Error('LDAP_disabled'); } diff --git a/apps/meteor/tests/end-to-end/api/26-LDAP.ts b/apps/meteor/tests/end-to-end/api/26-LDAP.ts index b4bb796b1e52..c5740a1178db 100644 --- a/apps/meteor/tests/end-to-end/api/26-LDAP.ts +++ b/apps/meteor/tests/end-to-end/api/26-LDAP.ts @@ -1,8 +1,9 @@ import { expect } from 'chai'; -import { before, describe, it } from 'mocha'; +import { before, after, describe, it } from 'mocha'; import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../data/api-data.js'; +import { updatePermission } from '../../data/permissions.helper'; describe('LDAP', function () { this.retries(0); @@ -44,4 +45,53 @@ describe('LDAP', function () { }); }); }); + + describe('[/ldap.testSearch]', () => { + before(async () => { + return updatePermission('test-admin-options', ['admin']); + }); + + after(async () => { + return updatePermission('test-admin-options', ['admin']); + }); + + it('should not allow testing LDAP search if user does NOT have the test-admin-options permission', async () => { + await updatePermission('test-admin-options', []); + await request + .post(api('ldap.testSearch')) + .set(credentials) + .send({ + username: 'test-search', + }) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res: Response) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); + }); + }); + }); + + describe('[/ldap.testConnection]', () => { + before(async () => { + return updatePermission('test-admin-options', ['admin']); + }); + + after(async () => { + return updatePermission('test-admin-options', ['admin']); + }); + + it('should not allow testing LDAP connection if user does NOT have the test-admin-options permission', async () => { + await updatePermission('test-admin-options', []); + await request + .post(api('ldap.testConnection')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res: Response) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); + }); + }); + }); }); From cb2fa7f8030fc3b55ea77e0ee7ab320dd472b334 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Fri, 3 May 2024 17:30:48 -0300 Subject: [PATCH 16/18] chore!: Improve permissions check on mailer endpoints (#32336) --- apps/meteor/app/api/server/v1/mailer.ts | 6 +--- .../end-to-end/api/livechat/12-mailer.ts | 32 +++++++++++++++++-- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/apps/meteor/app/api/server/v1/mailer.ts b/apps/meteor/app/api/server/v1/mailer.ts index 767868090b91..56229e26dc31 100644 --- a/apps/meteor/app/api/server/v1/mailer.ts +++ b/apps/meteor/app/api/server/v1/mailer.ts @@ -1,6 +1,5 @@ import { isMailerProps, isMailerUnsubscribeProps } from '@rocket.chat/rest-typings'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; import { API } from '../api'; API.v1.addRoute( @@ -8,13 +7,10 @@ API.v1.addRoute( { authRequired: true, validateParams: isMailerProps, + permissionsRequired: ['send-mail'], }, { async post() { - if (!(await hasPermissionAsync(this.userId, 'send-mail'))) { - throw new Error('error-not-allowed'); - } - const { from, subject, body, dryrun, query } = this.bodyParams; const result = await Meteor.callAsync('Mailer.sendMail', from, subject, body, Boolean(dryrun), query); diff --git a/apps/meteor/tests/end-to-end/api/livechat/12-mailer.ts b/apps/meteor/tests/end-to-end/api/livechat/12-mailer.ts index 01a47594620d..c9bdaa613985 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/12-mailer.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/12-mailer.ts @@ -1,13 +1,22 @@ import { expect } from 'chai'; -import { before, describe, it } from 'mocha'; +import { before, after, describe, it } from 'mocha'; import type { Response } from 'supertest'; import { api, request, credentials, getCredentials } from '../../../data/api-data'; +import { updatePermission } from '../../../data/permissions.helper'; describe('Mailer', () => { before((done) => getCredentials(done)); - describe('POST mailer', () => { + describe('POST mailer', async () => { + before(async () => { + return updatePermission('send-mail', ['admin']); + }); + + after(async () => { + return updatePermission('send-mail', ['admin']); + }); + it('should send an email if the payload is correct', async () => { await request .post(api('mailer')) @@ -58,6 +67,25 @@ describe('Mailer', () => { expect(res.body).to.have.property('success', false); }); }); + it('should throw an error if user does NOT have the send-mail permission', async () => { + await updatePermission('send-mail', []); + await request + .post(api('mailer')) + .set(credentials) + .send({ + from: 'test-mail@test.com', + subject: 'Test email subject', + body: 'Test email body', + dryrun: true, + query: '', + }) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res: Response) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); + }); + }); }); }); From c42eef9b8b68d3f89ba770429a1b587b6cc19f22 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Mon, 6 May 2024 21:24:13 -0300 Subject: [PATCH 17/18] chore: Improve permissions check on users endpoints (#32353) --- apps/meteor/app/api/server/v1/users.ts | 38 ++++++-------------- apps/meteor/tests/end-to-end/api/01-users.js | 11 +++--- 2 files changed, 18 insertions(+), 31 deletions(-) diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts index ccca23f8ea82..2fd9030690d6 100644 --- a/apps/meteor/app/api/server/v1/users.ts +++ b/apps/meteor/app/api/server/v1/users.ts @@ -308,13 +308,9 @@ API.v1.addRoute( API.v1.addRoute( 'users.delete', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['delete-user'] }, { async post() { - if (!(await hasPermissionAsync(this.userId, 'delete-user'))) { - return API.v1.unauthorized(); - } - const user = await getUserFromParams(this.bodyParams); const { confirmRelinquish = false } = this.bodyParams; @@ -349,16 +345,15 @@ API.v1.addRoute( API.v1.addRoute( 'users.setActiveStatus', - { authRequired: true, validateParams: isUserSetActiveStatusParamsPOST }, + { + authRequired: true, + validateParams: isUserSetActiveStatusParamsPOST, + permissionsRequired: { + POST: { permissions: ['edit-other-user-active-status', 'manage-moderation-actions'], operation: 'hasAny' }, + }, + }, { async post() { - if ( - !(await hasPermissionAsync(this.userId, 'edit-other-user-active-status')) && - !(await hasPermissionAsync(this.userId, 'manage-moderation-actions')) - ) { - return API.v1.unauthorized(); - } - const { userId, activeStatus, confirmRelinquish = false } = this.bodyParams; await Meteor.callAsync('setUserActiveStatus', userId, activeStatus, confirmRelinquish); @@ -375,13 +370,9 @@ API.v1.addRoute( API.v1.addRoute( 'users.deactivateIdle', - { authRequired: true, validateParams: isUserDeactivateIdleParamsPOST }, + { authRequired: true, validateParams: isUserDeactivateIdleParamsPOST, permissionsRequired: ['edit-other-user-active-status'] }, { async post() { - if (!(await hasPermissionAsync(this.userId, 'edit-other-user-active-status'))) { - return API.v1.unauthorized(); - } - const { daysIdle, role = 'user' } = this.bodyParams; const lastLoggedIn = new Date(); @@ -452,13 +443,10 @@ API.v1.addRoute( { authRequired: true, queryOperations: ['$or', '$and'], + permissionsRequired: ['view-d-room'], }, { async get() { - if (!(await hasPermissionAsync(this.userId, 'view-d-room'))) { - return API.v1.unauthorized(); - } - if ( settings.get('API_Apply_permission_view-outside-room_on_users-list') && !(await hasPermissionAsync(this.userId, 'view-outside-room')) @@ -804,13 +792,9 @@ API.v1.addRoute( API.v1.addRoute( 'users.getPersonalAccessTokens', - { authRequired: true }, + { authRequired: true, permissionsRequired: ['create-personal-access-tokens'] }, { async get() { - if (!(await hasPermissionAsync(this.userId, 'create-personal-access-tokens'))) { - throw new Meteor.Error('not-authorized', 'Not Authorized'); - } - const user = (await Users.getLoginTokensByUserId(this.userId).toArray())[0] as unknown as IUser | undefined; const isPersonalAccessToken = (loginToken: ILoginToken | IPersonalAccessToken): loginToken is IPersonalAccessToken => diff --git a/apps/meteor/tests/end-to-end/api/01-users.js b/apps/meteor/tests/end-to-end/api/01-users.js index d973f1bd3ff0..a16cf30f7843 100644 --- a/apps/meteor/tests/end-to-end/api/01-users.js +++ b/apps/meteor/tests/end-to-end/api/01-users.js @@ -2616,7 +2616,7 @@ describe('[Users]', function () { .expect(403) .expect((res) => { expect(res.body).to.have.property('success', false); - expect(res.body).to.have.property('error', 'unauthorized'); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); }); }); @@ -2879,10 +2879,10 @@ describe('[Users]', function () { .get(api('users.getPersonalAccessTokens')) .set(credentials) .expect('Content-Type', 'application/json') - .expect(400) + .expect(403) .expect((res) => { expect(res.body).to.have.property('success', false); - expect(res.body.errorType).to.be.equal('not-authorized'); + expect(res.body.error).to.be.equal('User does not have the permissions required for this action [error-unauthorized]'); }) .end(done); }); @@ -3003,6 +3003,7 @@ describe('[Users]', function () { .expect(403) .expect((res) => { expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); }) .end(done); }); @@ -3019,6 +3020,7 @@ describe('[Users]', function () { .expect(403) .expect((res) => { expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); }) .end(done); }); @@ -3035,6 +3037,7 @@ describe('[Users]', function () { .expect(403) .expect((res) => { expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); }) .end(done); }); @@ -3249,7 +3252,7 @@ describe('[Users]', function () { .expect(403) .expect((res) => { expect(res.body).to.have.property('success', false); - expect(res.body).to.have.property('error', 'unauthorized'); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); }) .end(done); }); From e696d53fafdfac82b8e3916f4b21ad49c8f2ab12 Mon Sep 17 00:00:00 2001 From: matheusbsilva137 Date: Fri, 10 May 2024 17:59:57 -0300 Subject: [PATCH 18/18] test: add one more test case --- .../tests/end-to-end/api/04-direct-message.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/meteor/tests/end-to-end/api/04-direct-message.js b/apps/meteor/tests/end-to-end/api/04-direct-message.js index c5c2a80d4691..c20b454a9051 100644 --- a/apps/meteor/tests/end-to-end/api/04-direct-message.js +++ b/apps/meteor/tests/end-to-end/api/04-direct-message.js @@ -377,7 +377,7 @@ describe('[Direct Messages]', function () { }); describe('/im.messages.others', () => { - it('should fail when the endpoint is disabled', async () => { + it('should fail when the endpoint is disabled and the user has permissions', async () => { await updateSetting('API_Enable_Direct_Message_History_EndPoint', false); await request .get(api('im.messages.others')) @@ -392,6 +392,22 @@ describe('[Direct Messages]', function () { expect(res.body).to.have.property('errorType', 'error-endpoint-disabled'); }); }); + it('should fail when the endpoint is disabled and the user doesnt have permission', async () => { + await updateSetting('API_Enable_Direct_Message_History_EndPoint', false); + await updatePermission('view-room-administration', ['admin']); + await request + .get(api('im.messages.others')) + .set(credentials) + .query({ + roomId: directMessage._id, + }) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'User does not have the permissions required for this action [error-unauthorized]'); + }); + }); it('should fail when the endpoint is enabled but the user doesnt have permission', async () => { await updateSetting('API_Enable_Direct_Message_History_EndPoint', true); await updatePermission('view-room-administration', []);