From 22671a9e18d537bfc60449e93207a78cd4aa9fc9 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 14 Feb 2023 01:02:45 -0300 Subject: [PATCH] Bump version to 5.4.3 --- .github/history-manual.json | 7 +++ HISTORY.md | 12 +++++ apps/meteor/.docker/Dockerfile.rhel | 2 +- apps/meteor/app/2fa/server/loginHandler.ts | 6 ++- apps/meteor/app/2fa/server/methods/enable.ts | 8 +++ .../authentication/server/startup/index.js | 5 +- .../server/methods/listEmojiCustom.js | 22 ++++++++ .../app/lib/server/methods/sendMessage.js | 2 +- .../app/lib/server/methods/updateMessage.js | 12 ++++- apps/meteor/app/markdown/lib/markdown.js | 5 +- .../app/slashcommands-kick/server/server.ts | 15 +----- .../app/slashcommands-mute/server/mute.ts | 16 +----- .../app/slashcommands-mute/server/unmute.ts | 14 +---- .../app/ui-utils/lib/MessageProperties.js | 6 --- apps/meteor/app/ui/client/lib/ChatMessages.ts | 2 +- apps/meteor/app/ui/client/lib/accounts.js | 5 +- apps/meteor/app/utils/rocketchat.info | 2 +- .../TwoFactorModal/TwoFactorModal.tsx | 13 +++-- .../client/lib/utils/renderMessageBody.ts | 8 +-- .../views/account/security/TwoFactorTOTP.tsx | 7 ++- apps/meteor/lib/utils/safeHtmlDots.ts | 5 ++ apps/meteor/package.json | 3 +- .../rocketchat-i18n/i18n/af.i18n.json | 1 - .../rocketchat-i18n/i18n/ar.i18n.json | 1 - .../rocketchat-i18n/i18n/az.i18n.json | 1 - .../rocketchat-i18n/i18n/be-BY.i18n.json | 1 - .../rocketchat-i18n/i18n/bg.i18n.json | 1 - .../rocketchat-i18n/i18n/bs.i18n.json | 1 - .../rocketchat-i18n/i18n/ca.i18n.json | 1 - .../rocketchat-i18n/i18n/cs.i18n.json | 1 - .../rocketchat-i18n/i18n/cy.i18n.json | 1 - .../rocketchat-i18n/i18n/da.i18n.json | 1 - .../rocketchat-i18n/i18n/de-AT.i18n.json | 1 - .../rocketchat-i18n/i18n/de-IN.i18n.json | 1 - .../rocketchat-i18n/i18n/de.i18n.json | 3 +- .../rocketchat-i18n/i18n/el.i18n.json | 1 - .../rocketchat-i18n/i18n/en.i18n.json | 1 - .../rocketchat-i18n/i18n/eo.i18n.json | 1 - .../rocketchat-i18n/i18n/es.i18n.json | 1 - .../rocketchat-i18n/i18n/fa.i18n.json | 1 - .../rocketchat-i18n/i18n/fi.i18n.json | 1 - .../rocketchat-i18n/i18n/fr.i18n.json | 1 - .../rocketchat-i18n/i18n/he.i18n.json | 1 - .../rocketchat-i18n/i18n/hr.i18n.json | 1 - .../rocketchat-i18n/i18n/hu.i18n.json | 1 - .../rocketchat-i18n/i18n/id.i18n.json | 1 - .../rocketchat-i18n/i18n/it.i18n.json | 1 - .../rocketchat-i18n/i18n/ja.i18n.json | 1 - .../rocketchat-i18n/i18n/ka-GE.i18n.json | 1 - .../rocketchat-i18n/i18n/km.i18n.json | 1 - .../rocketchat-i18n/i18n/ko.i18n.json | 1 - .../rocketchat-i18n/i18n/ku.i18n.json | 1 - .../rocketchat-i18n/i18n/lo.i18n.json | 1 - .../rocketchat-i18n/i18n/lt.i18n.json | 1 - .../rocketchat-i18n/i18n/lv.i18n.json | 1 - .../rocketchat-i18n/i18n/mn.i18n.json | 1 - .../rocketchat-i18n/i18n/ms-MY.i18n.json | 1 - .../rocketchat-i18n/i18n/nl.i18n.json | 1 - .../rocketchat-i18n/i18n/no.i18n.json | 1 - .../rocketchat-i18n/i18n/pl.i18n.json | 1 - .../rocketchat-i18n/i18n/pt-BR.i18n.json | 1 - .../rocketchat-i18n/i18n/pt.i18n.json | 1 - .../rocketchat-i18n/i18n/ro.i18n.json | 1 - .../rocketchat-i18n/i18n/ru.i18n.json | 1 - .../rocketchat-i18n/i18n/sk-SK.i18n.json | 1 - .../rocketchat-i18n/i18n/sl-SI.i18n.json | 1 - .../rocketchat-i18n/i18n/sq.i18n.json | 1 - .../rocketchat-i18n/i18n/sr.i18n.json | 1 - .../rocketchat-i18n/i18n/sv.i18n.json | 5 +- .../rocketchat-i18n/i18n/ta-IN.i18n.json | 1 - .../rocketchat-i18n/i18n/th-TH.i18n.json | 1 - .../rocketchat-i18n/i18n/tr.i18n.json | 1 - .../rocketchat-i18n/i18n/ug.i18n.json | 1 - .../rocketchat-i18n/i18n/uk.i18n.json | 1 - .../rocketchat-i18n/i18n/vi-VN.i18n.json | 1 - .../rocketchat-i18n/i18n/zh-HK.i18n.json | 1 - .../rocketchat-i18n/i18n/zh-TW.i18n.json | 1 - .../rocketchat-i18n/i18n/zh.i18n.json | 1 - .../meteor/tests/end-to-end/api/24-methods.js | 52 +++++++++++++++++++ .../tests/unit/app/ui-utils/server.tests.js | 11 +--- package.json | 2 +- .../model-typings/src/models/IUsersModel.ts | 1 + yarn.lock | 1 - 83 files changed, 165 insertions(+), 141 deletions(-) create mode 100644 apps/meteor/lib/utils/safeHtmlDots.ts diff --git a/.github/history-manual.json b/.github/history-manual.json index 67e891757f7..3089a4beec3 100644 --- a/.github/history-manual.json +++ b/.github/history-manual.json @@ -210,5 +210,12 @@ "contributors": [ "ggazzo" ] + }], + "5.4.3": [{ + "title": "[FIX] Security Hotfix (https://docs.rocket.chat/guides/security/security-updates)", + "userLogin": "ggazzo", + "contributors": [ + "ggazzo" + ] }] } diff --git a/HISTORY.md b/HISTORY.md index 38e50fee447..0d2c69fa79b 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,4 +1,16 @@ +# 5.4.3 +`2023-02-14 · 1 🐛 · 1 👩‍💻👨‍💻` + +### 🐛 Bug fixes + + +- Security Hotfix (https://docs.rocket.chat/guides/security/security-updates) + +### 👩‍💻👨‍💻 Core Team 🤓 + +- [@ggazzo](https://github.com/ggazzo) + # 5.4.2 `2023-01-24 · 1 🚀 · 5 🐛 · 6 👩‍💻👨‍💻` diff --git a/apps/meteor/.docker/Dockerfile.rhel b/apps/meteor/.docker/Dockerfile.rhel index 657f7a55da7..4b42b8a7c10 100644 --- a/apps/meteor/.docker/Dockerfile.rhel +++ b/apps/meteor/.docker/Dockerfile.rhel @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi8/nodejs-12 -ENV RC_VERSION 5.4.2 +ENV RC_VERSION 5.4.3 MAINTAINER buildmaster@rocket.chat diff --git a/apps/meteor/app/2fa/server/loginHandler.ts b/apps/meteor/app/2fa/server/loginHandler.ts index 8535dfa4f3d..ebce387299c 100644 --- a/apps/meteor/app/2fa/server/loginHandler.ts +++ b/apps/meteor/app/2fa/server/loginHandler.ts @@ -26,7 +26,11 @@ Accounts.registerLoginHandler('totp', function (options) { callbacks.add( 'onValidateLogin', (login) => { - if (login.type === 'resume' || login.type === 'proxy' || login.methodName === 'verifyEmail') { + if (login.methodName === 'verifyEmail') { + throw new Meteor.Error('verify-email', 'E-mail verified'); + } + + if (login.type === 'resume' || login.type === 'proxy') { return login; } // CAS login doesn't yet support 2FA. diff --git a/apps/meteor/app/2fa/server/methods/enable.ts b/apps/meteor/app/2fa/server/methods/enable.ts index 3c26effb380..ba0cbfc2080 100644 --- a/apps/meteor/app/2fa/server/methods/enable.ts +++ b/apps/meteor/app/2fa/server/methods/enable.ts @@ -18,6 +18,14 @@ Meteor.methods({ }); } + const hasUnverifiedEmail = user.emails?.some((email) => !email.verified); + + if (hasUnverifiedEmail) { + throw new Meteor.Error('error-invalid-user', 'You need to verify your emails before setting up 2FA', { + method: '2fa:enable', + }); + } + const secret = TOTP.generateSecret(); Users.disable2FAAndSetTempSecretByUserId(userId, secret.base32); diff --git a/apps/meteor/app/authentication/server/startup/index.js b/apps/meteor/app/authentication/server/startup/index.js index 8996da4f334..ba9da586ed0 100644 --- a/apps/meteor/app/authentication/server/startup/index.js +++ b/apps/meteor/app/authentication/server/startup/index.js @@ -19,6 +19,7 @@ import { getClientAddress } from '../../../../server/lib/getClientAddress'; import { getNewUserRoles } from '../../../../server/services/user/lib/getNewUserRoles'; import { AppEvents, Apps } from '../../../apps/server/orchestrator'; import { safeGetMeteorUser } from '../../../utils/server/functions/safeGetMeteorUser'; +import { safeHtmlDots } from '/lib/utils/safeHtmlDots'; Accounts.config({ forbidClientAccountCreation: true, @@ -91,7 +92,9 @@ Meteor.startup(() => { }); Accounts.emailTemplates.verifyEmail.html = function (userModel, url) { - return Mailer.replace(verifyEmailTemplate, { Verification_Url: url, name: userModel.name }); + const name = safeHtmlDots(userModel.name); + + return Mailer.replace(verifyEmailTemplate, { Verification_Url: url, name }); }; Accounts.emailTemplates.verifyEmail.subject = function () { diff --git a/apps/meteor/app/emoji-custom/server/methods/listEmojiCustom.js b/apps/meteor/app/emoji-custom/server/methods/listEmojiCustom.js index a4fd124abe9..b553e5b398e 100644 --- a/apps/meteor/app/emoji-custom/server/methods/listEmojiCustom.js +++ b/apps/meteor/app/emoji-custom/server/methods/listEmojiCustom.js @@ -1,8 +1,30 @@ import { Meteor } from 'meteor/meteor'; import { EmojiCustom } from '@rocket.chat/models'; +import { check, Match } from 'meteor/check'; + +import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; + +/** + * @deprecated Will be removed in future versions. + */ Meteor.methods({ async listEmojiCustom(options = {}) { + methodDeprecationLogger.warn('listEmojiCustom will be removed in future versions of Rocket.Chat'); + + const user = Meteor.user(); + + if (!user) { + throw new Meteor.Error('error-invalid-user', 'Invalid user', { + method: 'listEmojiCustom', + }); + } + + check(options, { + name: Match.Optional(String), + aliases: Match.Optional([String]), + }); + return EmojiCustom.find(options).toArray(); }, }); diff --git a/apps/meteor/app/lib/server/methods/sendMessage.js b/apps/meteor/app/lib/server/methods/sendMessage.js index f9a19d23e8d..d075ff8ccc2 100644 --- a/apps/meteor/app/lib/server/methods/sendMessage.js +++ b/apps/meteor/app/lib/server/methods/sendMessage.js @@ -45,7 +45,7 @@ export function executeSendMessage(uid, message) { if (message.msg) { const adjustedMessage = messageProperties.messageWithoutEmojiShortnames(message.msg); - if (messageProperties.length(adjustedMessage) > settings.get('Message_MaxAllowedSize')) { + if (adjustedMessage.length > settings.get('Message_MaxAllowedSize')) { throw new Meteor.Error('error-message-size-exceeded', 'Message size exceeds Message_MaxAllowedSize', { method: 'sendMessage', }); diff --git a/apps/meteor/app/lib/server/methods/updateMessage.js b/apps/meteor/app/lib/server/methods/updateMessage.js index d3c11f06e53..25137a369b0 100644 --- a/apps/meteor/app/lib/server/methods/updateMessage.js +++ b/apps/meteor/app/lib/server/methods/updateMessage.js @@ -7,6 +7,8 @@ import { settings } from '../../../settings/server'; import { hasPermission, canSendMessage } from '../../../authorization/server'; import { updateMessage } from '../functions'; +const allowedEditedFields = ['tshow', 'alias', 'attachments', 'avatar', 'emoji', 'msg']; + Meteor.methods({ updateMessage(message) { check(message, Match.ObjectIncluding({ _id: String })); @@ -16,13 +18,19 @@ Meteor.methods({ } const originalMessage = Messages.findOneById(message._id); - if (!originalMessage || !originalMessage._id) { return; } - const msgText = originalMessage?.attachments?.[0]?.description ?? originalMessage.msg; + Object.entries(message).forEach(([key, value]) => { + if (!allowedEditedFields.includes(key) && value !== originalMessage[key]) { + throw new Meteor.Error('error-invalid-update-key', `Cannot update the message ${key}`, { + method: 'updateMessage', + }); + } + }); + const msgText = originalMessage?.attachments?.[0]?.description ?? originalMessage.msg; if (msgText === message.msg) { return; } diff --git a/apps/meteor/app/markdown/lib/markdown.js b/apps/meteor/app/markdown/lib/markdown.js index 7ee511d403e..4798f8bdd09 100644 --- a/apps/meteor/app/markdown/lib/markdown.js +++ b/apps/meteor/app/markdown/lib/markdown.js @@ -107,13 +107,14 @@ export const createMarkdownMessageRenderer = ({ parser, ...options }) => { } const parse = typeof parsers[parser] === 'function' ? parsers[parser] : parsers.original; + const markedParser = parsers.marked; - return (message) => { + return (message, useMarkedPaser = false) => { if (!message?.html?.trim()) { return message; } - return parse(message, options); + return useMarkedPaser ? markedParser(message, options) : parse(message, options); }; }; diff --git a/apps/meteor/app/slashcommands-kick/server/server.ts b/apps/meteor/app/slashcommands-kick/server/server.ts index f385269cc4d..d19f898e959 100644 --- a/apps/meteor/app/slashcommands-kick/server/server.ts +++ b/apps/meteor/app/slashcommands-kick/server/server.ts @@ -2,7 +2,7 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { Users, Subscriptions } from '../../models/server'; +import { Users } from '../../models/server'; import { settings } from '../../settings/server'; import { slashCommands } from '../../utils/lib/slashCommand'; import { api } from '../../../server/sdk/api'; @@ -31,19 +31,6 @@ slashCommands.add({ return; } - const subscription = Subscriptions.findOneByRoomIdAndUserId(item.rid, userId, { - fields: { _id: 1 }, - }); - if (!subscription) { - api.broadcast('notify.ephemeralMessage', userId, item.rid, { - msg: TAPi18n.__('Username_is_not_in_this_room', { - postProcess: 'sprintf', - sprintf: [username], - lng, - }), - }); - return; - } const { rid } = item; Meteor.call('removeUserFromRoom', { rid, username }); }, diff --git a/apps/meteor/app/slashcommands-mute/server/mute.ts b/apps/meteor/app/slashcommands-mute/server/mute.ts index 5f9ab47c611..fa85f9b3075 100644 --- a/apps/meteor/app/slashcommands-mute/server/mute.ts +++ b/apps/meteor/app/slashcommands-mute/server/mute.ts @@ -3,7 +3,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { slashCommands } from '../../utils/lib/slashCommand'; import { settings } from '../../settings/server'; -import { Users, Subscriptions } from '../../models/server'; +import { Users } from '../../models/server'; import { api } from '../../../server/sdk/api'; /* @@ -29,19 +29,7 @@ slashCommands.add({ }), }); } - const subscription = Subscriptions.findOneByRoomIdAndUserId(item.rid, mutedUser._id, { - fields: { _id: 1 }, - }); - if (!subscription) { - api.broadcast('notify.ephemeralMessage', userId, item.rid, { - msg: TAPi18n.__('Username_is_not_in_this_room', { - postProcess: 'sprintf', - sprintf: [username], - lng: settings.get('Language') || 'en', - }), - }); - return; - } + Meteor.call('muteUserInRoom', { rid: item.rid, username, diff --git a/apps/meteor/app/slashcommands-mute/server/unmute.ts b/apps/meteor/app/slashcommands-mute/server/unmute.ts index 602268da65f..30c1c8801bb 100644 --- a/apps/meteor/app/slashcommands-mute/server/unmute.ts +++ b/apps/meteor/app/slashcommands-mute/server/unmute.ts @@ -2,7 +2,7 @@ import { Meteor } from 'meteor/meteor'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; import { slashCommands } from '../../utils/lib/slashCommand'; -import { Users, Subscriptions } from '../../models/server'; +import { Users } from '../../models/server'; import { settings } from '../../settings/server'; import { api } from '../../../server/sdk/api'; @@ -29,18 +29,6 @@ slashCommands.add({ }); } - const subscription = Subscriptions.findOneByRoomIdAndUserId(item.rid, unmutedUser._id, { - fields: { _id: 1 }, - }); - if (!subscription) { - return api.broadcast('notify.ephemeralMessage', userId, item.rid, { - msg: TAPi18n.__('Username_is_not_in_this_room', { - postProcess: 'sprintf', - sprintf: [username], - lng: settings.get('Language') || 'en', - }), - }); - } Meteor.call('unmuteUserInRoom', { rid: item.rid, username, diff --git a/apps/meteor/app/ui-utils/lib/MessageProperties.js b/apps/meteor/app/ui-utils/lib/MessageProperties.js index 358a259754d..094a6379a98 100644 --- a/apps/meteor/app/ui-utils/lib/MessageProperties.js +++ b/apps/meteor/app/ui-utils/lib/MessageProperties.js @@ -1,12 +1,6 @@ -import GraphemeSplitter from 'grapheme-splitter'; - import { emoji } from '../../emoji'; -const splitter = new GraphemeSplitter(); - export const messageProperties = { - length: (message) => splitter.countGraphemes(message), - messageWithoutEmojiShortnames: (message) => message.replace(/:\w+:/gm, (match) => { if (emoji.list[match] !== undefined) { diff --git a/apps/meteor/app/ui/client/lib/ChatMessages.ts b/apps/meteor/app/ui/client/lib/ChatMessages.ts index 329717af30f..6af39f3b83b 100644 --- a/apps/meteor/app/ui/client/lib/ChatMessages.ts +++ b/apps/meteor/app/ui/client/lib/ChatMessages.ts @@ -463,7 +463,7 @@ export class ChatMessages { private async processTooLongMessage({ msg, rid, tmid }: Pick) { const adjustedMessage = messageProperties.messageWithoutEmojiShortnames(msg); - if (messageProperties.length(adjustedMessage) <= settings.get('Message_MaxAllowedSize') && msg) { + if (adjustedMessage.length <= settings.get('Message_MaxAllowedSize') && msg) { return false; } diff --git a/apps/meteor/app/ui/client/lib/accounts.js b/apps/meteor/app/ui/client/lib/accounts.js index ecb719bc7c5..7ec6fbdb838 100644 --- a/apps/meteor/app/ui/client/lib/accounts.js +++ b/apps/meteor/app/ui/client/lib/accounts.js @@ -4,14 +4,13 @@ import { Accounts } from 'meteor/accounts-base'; import { t } from '../../../utils'; import { dispatchToastMessage } from '../../../../client/lib/toast'; -Accounts.onEmailVerificationLink(function (token, done) { +Accounts.onEmailVerificationLink(function (token) { Accounts.verifyEmail(token, function (error) { - if (error == null) { + if (error.error === 'verify-email') { dispatchToastMessage({ type: 'success', message: t('Email_verified') }); Meteor.call('afterVerifyEmail'); } else { dispatchToastMessage({ type: 'error', message: error.message }); } - return done(); }); }); diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index be99289107c..1020c646f59 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "5.4.2" + "version": "5.4.3" } diff --git a/apps/meteor/client/components/TwoFactorModal/TwoFactorModal.tsx b/apps/meteor/client/components/TwoFactorModal/TwoFactorModal.tsx index f2a0750fa10..c14a7aba585 100644 --- a/apps/meteor/client/components/TwoFactorModal/TwoFactorModal.tsx +++ b/apps/meteor/client/components/TwoFactorModal/TwoFactorModal.tsx @@ -1,3 +1,4 @@ +import { useEndpoint } from '@rocket.chat/ui-contexts'; import React, { ReactElement } from 'react'; import TwoFactorEmail from './TwoFactorEmailModal'; @@ -26,18 +27,24 @@ type TwoFactorModalProps = { ); const TwoFactorModal = ({ onConfirm, onClose, ...props }: TwoFactorModalProps): ReactElement => { + const logoutOtherSessions = useEndpoint('POST', '/v1/users.logoutOtherClients'); + + const confirm = (code: any, method: Method): void => { + onConfirm(code, method); + logoutOtherSessions(); + }; if (props.method === Method.TOTP) { - return ; + return ; } if (props.method === Method.EMAIL) { const { emailOrUsername } = props; - return ; + return ; } if (props.method === Method.PASSWORD) { - return ; + return ; } throw new Error('Invalid Two Factor method'); diff --git a/apps/meteor/client/lib/utils/renderMessageBody.ts b/apps/meteor/client/lib/utils/renderMessageBody.ts index be0a29f6a45..70f9c1c7a01 100644 --- a/apps/meteor/client/lib/utils/renderMessageBody.ts +++ b/apps/meteor/client/lib/utils/renderMessageBody.ts @@ -3,12 +3,14 @@ import { escapeHTML } from '@rocket.chat/string-helpers'; import { callbacks } from '../../../lib/callbacks'; -export const renderMessageBody = & { tokens?: { token: string; text: string }[]; html?: string }>( +export const renderMessageBody = < + T extends Partial & { tokens?: { token: string; text: string }[]; html?: string; actionContext?: string }, +>( message: T, ): string => { message.html = message.msg?.trim() ? escapeHTML(message.msg.trim()) : ''; - - const { tokens, html } = callbacks.run('renderMessage', message); + const isSearchMessage = message?.actionContext === 'search'; + const { tokens, html } = callbacks.run('renderMessage', message, isSearchMessage); return (Array.isArray(tokens) ? tokens.reverse() : []).reduce((html, { token, text }) => html.replace(token, () => text), html ?? ''); }; diff --git a/apps/meteor/client/views/account/security/TwoFactorTOTP.tsx b/apps/meteor/client/views/account/security/TwoFactorTOTP.tsx index d9286052ea2..75c5dff1261 100644 --- a/apps/meteor/client/views/account/security/TwoFactorTOTP.tsx +++ b/apps/meteor/client/views/account/security/TwoFactorTOTP.tsx @@ -1,6 +1,6 @@ import { Box, Button, TextInput, Margins } from '@rocket.chat/fuselage'; import { useSafely } from '@rocket.chat/fuselage-hooks'; -import { useSetModal, useToastMessageDispatch, useUser, useMethod, useTranslation } from '@rocket.chat/ui-contexts'; +import { useSetModal, useToastMessageDispatch, useUser, useMethod, useTranslation, useEndpoint } from '@rocket.chat/ui-contexts'; import React, { useState, useCallback, useEffect, ReactElement, ComponentProps } from 'react'; import qrcode from 'yaqrcode'; @@ -15,6 +15,7 @@ const TwoFactorTOTP = (props: ComponentProps): ReactElement => { const user = useUser(); const setModal = useSetModal(); + const logoutOtherSessions = useEndpoint('POST', '/v1/users.logoutOtherClients'); const enableTotpFn = useMethod('2fa:enable'); const disableTotpFn = useMethod('2fa:disable'); const verifyCodeFn = useMethod('2fa:validateTempToken'); @@ -85,11 +86,13 @@ const TwoFactorTOTP = (props: ComponentProps): ReactElement => { if (!result) { return dispatchToastMessage({ type: 'error', message: t('Invalid_two_factor_code') }); } + + logoutOtherSessions(); setModal(); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } - }, [authCode, closeModal, dispatchToastMessage, setModal, t, verifyCodeFn]); + }, [authCode, closeModal, dispatchToastMessage, logoutOtherSessions, setModal, t, verifyCodeFn]); const handleRegenerateCodes = useCallback(() => { const onRegenerate = async (authCode: string): Promise => { diff --git a/apps/meteor/lib/utils/safeHtmlDots.ts b/apps/meteor/lib/utils/safeHtmlDots.ts new file mode 100644 index 00000000000..fd6425197b8 --- /dev/null +++ b/apps/meteor/lib/utils/safeHtmlDots.ts @@ -0,0 +1,5 @@ +// default email engines - like gmail - will render texts with dots as an anchor tag. +// If we can, we should avoid that. +export const safeHtmlDots = (text: string): string => { + return text.replace(/\./g, '․'); +} diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 077542b4ac2..50fe535c912 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": "5.4.2", + "version": "5.4.3", "private": true, "author": { "name": "Rocket.Chat", @@ -296,7 +296,6 @@ "filesize": "9.0.11", "google-libphonenumber": "^3.2.28", "googleapis": "^104.0.0", - "grapheme-splitter": "^1.0.4", "he": "^1.2.0", "highlight.js": "^11.6.0", "hljs9": "npm:highlight.js@^9.18.5", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/af.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/af.i18n.json index 64a0c54e892..b4e8fe546e2 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/af.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/af.i18n.json @@ -2652,7 +2652,6 @@ "Username_ended_the_OTR_session": "__username__ het die OTR-sessie geëindig", "Username_invalid": "%s is nie 'n geldige gebruikersnaam nie,
gebruik slegs letters, syfers, kolletjies, koppeltekens en onderstreeptekens", "Username_is_already_in_here": "`@%s` is reeds hier.", - "Username_is_not_in_this_room": "Die gebruiker `#%s` is nie in hierdie kamer nie.", "Username_Placeholder": "Voer asseblief gebruikers name in ...", "Username_title": "Registreer gebruikersnaam", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ wil OTR begin. Wil jy aanvaar?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json index db340d21c4f..a672dfd8509 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json @@ -4613,7 +4613,6 @@ "Username_ended_the_OTR_session": "__username__ أنهى جلسة المراسلة خارج نطاق السجل (OTR)", "Username_invalid": "%s ليس اسم مستخدم صالحًا،
استخدم فقط الأحرف والأرقام والنقاط والواصلات والشرطات السفلية", "Username_is_already_in_here": "سبق وجود `‎@%s` هنا.", - "Username_is_not_in_this_room": "المستخدم \"#%s\" غير موجود في هذه الغرفة", "Username_Placeholder": "يرجى إدخال أسماء المستخدمين...", "Username_title": "تسجيل اسم المستخدم", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ يريد بدء مراسلة خارج نطاق السجل (OTR). هل توافق؟", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/az.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/az.i18n.json index c2d090921d3..c78c463ac0b 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/az.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/az.i18n.json @@ -2652,7 +2652,6 @@ "Username_ended_the_OTR_session": "__username__ OTR seansını sonlandırdı", "Username_invalid": "%s düzgün bir istifadəçi adı deyil,
yalnız məktublar, nömrələr, nöqtələr, tirelər və altlıqları istifadə edin", "Username_is_already_in_here": "'@%s` artıq buradadır.", - "Username_is_not_in_this_room": "'#%s` istifadəçisi bu otaqda deyil.", "Username_Placeholder": "İstifadəçi adlarını daxil edin ...", "Username_title": "İstifadəçi adını qeyd edin", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ OTR başlamağı istəyir. Qəbul etmək istəyirsinizmi?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/be-BY.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/be-BY.i18n.json index 7e5e3a7b28b..756013de398 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/be-BY.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/be-BY.i18n.json @@ -2670,7 +2670,6 @@ "Username_ended_the_OTR_session": "__username__ завяршыў сесію OTR", "Username_invalid": "%sне з'яўляецца дапушчальным імем карыстальніка,
выкарыстоўваць толькі літары, лічбы, кропкі, злучок і падкрэсліванне", "Username_is_already_in_here": "`@%s` ўжо тут.", - "Username_is_not_in_this_room": "Карыстальнік `#%s` не ў гэтым пакоі.", "Username_Placeholder": "Калі ласка, увядзіце імёны карыстальнікаў ...", "Username_title": "рэгістрацыя карыстальніка", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ хоча пачаць OTR. Ці вы хочаце прыняць?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/bg.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/bg.i18n.json index 888051e15e6..65898f597a9 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/bg.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/bg.i18n.json @@ -2648,7 +2648,6 @@ "Username_ended_the_OTR_session": "__username__ завърши сесията OTR", "Username_invalid": "%sне е валидно потребителско име,
използва само букви, цифри, точки, тирета и долни черти", "Username_is_already_in_here": "`@%s` вече е тук.", - "Username_is_not_in_this_room": "Потребителят \"#%s\" не е в тази стая.", "Username_Placeholder": "Моля, въведете потребителски имена ...", "Username_title": "Регистрирайте потребителското име", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ иска да започне OTR. Искате ли да приемете?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/bs.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/bs.i18n.json index a51136215b4..3f6c00d6e99 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/bs.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/bs.i18n.json @@ -2644,7 +2644,6 @@ "Username_ended_the_OTR_session": "__username__ je završio SP razgovor", "Username_invalid": "%s nije valjano korisničko ime,
 koristite samo slova, brojeve, točke, crtice i podvlake", "Username_is_already_in_here": "`@%s` je već ovdje.", - "Username_is_not_in_this_room": "Korisnik `#%s` nije u ovoj sobi.", "Username_Placeholder": "Unesite korisnička imena ...", "Username_title": "Registriraj korisničko ime", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ želi započeti SP. Želite li prihvatiti?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ca.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ca.i18n.json index 602a6ab6770..72573113dde 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ca.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ca.i18n.json @@ -4531,7 +4531,6 @@ "Username_ended_the_OTR_session": "L'usuari __username__ ha finalitzat la sessió OTR.", "Username_invalid": "%s no és un nom d'usuari vàlid,
feu servir només lletres, números, punts, guions i guions baixos", "Username_is_already_in_here": "`@%s` ja hi és.", - "Username_is_not_in_this_room": "L'usuari `#%s` no és en aquesta sala.", "Username_Placeholder": "Sisplau, entra noms d'usuari...", "Username_title": "Tria un nom d'usuari", "Username_wants_to_start_otr_Do_you_want_to_accept": "L'usuari __username__ vol iniciar una conversa OTR. L'acceptes?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/cs.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/cs.i18n.json index 7c61c6d05c9..8f034c32b85 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/cs.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/cs.i18n.json @@ -3811,7 +3811,6 @@ "Username_ended_the_OTR_session": "__username__ ukončil/a relaci OTR", "Username_invalid": "%s není platné uživatelské jméno,
použijte pouze písmena, číslice, tečky, pomlčky a podtržítka", "Username_is_already_in_here": "`@%s` už je zde.", - "Username_is_not_in_this_room": "Uživatel `#%s` není v této místnosti.", "Username_Placeholder": "Zadejte uživatelská jména...", "Username_title": "Registrovat uživatelské jméno", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ chce spustit OTR (konverzaci mimo záznam). Chcete ji přijmout?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/cy.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/cy.i18n.json index 92cb4c75c14..91907524fca 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/cy.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/cy.i18n.json @@ -2646,7 +2646,6 @@ "Username_ended_the_OTR_session": "__username__ daeth y sesiwn OTR i ben", "Username_invalid": "Nid yw %s yn enw defnyddiwr dilys,
defnyddiwch lythyrau yn unig, rhifau, dotiau, cysylltnodau ac islaw", "Username_is_already_in_here": "Mae `@%s` eisoes yma.", - "Username_is_not_in_this_room": "Nid yw'r defnyddiwr `#%s` yn yr ystafell hon.", "Username_Placeholder": "Rhowch enwau defnyddwyr ...", "Username_title": "Cofrestrwch enw defnyddiwr", "Username_wants_to_start_otr_Do_you_want_to_accept": "Mae __username__ eisiau cychwyn OTR. Ydych chi am dderbyn?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/da.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/da.i18n.json index 52833c62412..081ced90841 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/da.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/da.i18n.json @@ -3833,7 +3833,6 @@ "Username_ended_the_OTR_session": "__username__ afsluttede OTR-sessionen", "Username_invalid": "%s er ikke et gyldigt brugernavn,
Brug kun bogstaver, tal, prikker, bindestreger og understreger", "Username_is_already_in_here": "'@%s' er allerede herinde.", - "Username_is_not_in_this_room": "Brugeren '#%s' er ikke i dette rum.", "Username_Placeholder": "Indtast venligst brugernavne ...", "Username_title": "Tilmeld brugernavn", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ ønsker at starte OTR. Vil du acceptere?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/de-AT.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/de-AT.i18n.json index 1d06d5301bd..3a059423bba 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/de-AT.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/de-AT.i18n.json @@ -2653,7 +2653,6 @@ "Username_ended_the_OTR_session": "__username__ hat die OTR-Session beendet.", "Username_invalid": "%s ist kein zulässiger Benutzername.
Verwenden Sie nur Buchstaben, Zahlen, Punkte oder Binde- und Unterstriche.", "Username_is_already_in_here": "`@%s` wurde bereits hinzugefügt.", - "Username_is_not_in_this_room": "Der Benutzer `#%s` ist nicht in diesem Raum.", "Username_Placeholder": "Bitte geben Sie Benutzernamen ein ...", "Username_title": "Benutzernamen festlegen", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ möchte ein OTR-Gespräch starten. Möchten Sie annehmen?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/de-IN.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/de-IN.i18n.json index 418f554fe43..ab14ac1084e 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/de-IN.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/de-IN.i18n.json @@ -3022,7 +3022,6 @@ "Username_ended_the_OTR_session": "__username__ hat die OTR-Session beendet", "Username_invalid": "%s ist kein gültiger Benutzername.
Verwende nur Buchstaben, Zahlen, Punkte oder Binde- und Unterstriche.", "Username_is_already_in_here": "`@%s` wurde bereits hinzugefügt", - "Username_is_not_in_this_room": "Benutzer `#%s` ist nicht in diesem Raum", "Username_Placeholder": "Bitte gib Benutzernamen ein...", "Username_title": "Benutzernamen festlegen", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ möchte ein OTR-Gespräch starten. Möchtest Du es annehmen?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json index 41e3c7f5158..e777da7620f 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json @@ -5016,7 +5016,6 @@ "Username_ended_the_OTR_session": "__username__ hat die OTR-Session beendet", "Username_invalid": "%s ist kein gültiger Benutzername.
Verwende nur Buchstaben, Zahlen, Punkte oder Binde- und Unterstriche.", "Username_is_already_in_here": "`@%s` wurde bereits hinzugefügt", - "Username_is_not_in_this_room": "Benutzer `#%s` ist nicht in diesem Raum", "Username_Placeholder": "Bitte Benutzernamen eingeben...", "Username_title": "Benutzernamen regisitrieren", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ möchte ein OTR-Gespräch starten. Möchten Sie es annehmen?", @@ -5469,4 +5468,4 @@ "Toolbox_room_actions": "Primäre Room-Aktionen", "Theme_light": "Hell", "Theme_dark": "Dunkel" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/el.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/el.i18n.json index 656d7c4ccff..c27cdd025fd 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/el.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/el.i18n.json @@ -2659,7 +2659,6 @@ "Username_ended_the_OTR_session": "χρήστη __username__ έληξε η συνεδρίαση OTR", "Username_invalid": "%s δεν είναι έγκυρο όνομα χρήστη,
χρησιμοποιείστε μόνο γράμματα, αριθμούς, τελείες και παύλες", "Username_is_already_in_here": "`@%s` είναι ήδη εδώ.", - "Username_is_not_in_this_room": "Ο χρήστης `#%s` δεν είναι σε αυτό το δωμάτιο.", "Username_Placeholder": "Εισαγάγετε τα ονόματα χρήστη ...", "Username_title": "Εγγραφή ονόματος χρήστη", "Username_wants_to_start_otr_Do_you_want_to_accept": "χρήστη __username__ θέλει να ξεκινήσει OTR. Θέλετε να δεχτεί;", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index 88172e660b0..ef0ab90e418 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -5071,7 +5071,6 @@ "Username_ended_the_OTR_session": "__username__ ended the OTR session", "Username_invalid": "%s is not a valid username,
use only letters, numbers, dots, hyphens and underscores", "Username_is_already_in_here": "`@%s` is already in here.", - "Username_is_not_in_this_room": "The user `#%s` is not in this room.", "Username_Placeholder": "Please enter usernames...", "Username_title": "Register username", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ wants to start OTR. Do you want to accept?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/eo.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/eo.i18n.json index 61cfe8d721d..5cfe4efda25 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/eo.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/eo.i18n.json @@ -2652,7 +2652,6 @@ "Username_ended_the_OTR_session": "__username__ finis la OTR-sesion", "Username_invalid": "%s ne estas valida uzantnomo,
uzu nur literojn, numerojn, punktojn, makzelojn kaj substrekojn", "Username_is_already_in_here": "`@%s` jam estas ĉi tie.", - "Username_is_not_in_this_room": "La uzanto `#%s` ne estas en ĉi tiu ĉambro.", "Username_Placeholder": "Bonvolu enmeti domnilojn ...", "Username_title": "Registru salutnomon", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ volas komenci OTR. Ĉu vi volas akcepti?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json index ef86c4f6c56..8eb7c012a8c 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json @@ -4564,7 +4564,6 @@ "Username_ended_the_OTR_session": "__username__ ha finalizado la sesión OTR", "Username_invalid": "%s no es un nombre de usuario válido.
Usa solo letras, números, puntos y guiones.", "Username_is_already_in_here": "\"@%s\" ya está aquí.", - "Username_is_not_in_this_room": "El usuario \"#%s\" no está en esta sala.", "Username_Placeholder": "Introduce nombres de usuario...", "Username_title": "Registrar nombre de usuario", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ quiere iniciar una sesión OTR. ¿Quieres aceptar?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fa.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fa.i18n.json index 67a5853db28..8460e758087 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fa.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fa.i18n.json @@ -2983,7 +2983,6 @@ "Username_ended_the_OTR_session": "__username__ نشست OTR را بست", "Username_invalid": "%s است یک نام کاربری معتبر نیست،
استفاده از تنها حروف، اعداد، نقطه، خط فاصله و زیرین", "Username_is_already_in_here": "`@%s` در حال حاضر اینجاست.", - "Username_is_not_in_this_room": "`#%s` در این اتاق نیست.", "Username_Placeholder": "لطفا نام کاربران را وارد کنید...", "Username_title": "ثبت نام نام کاربری", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ درخواست OTR می دهد. آیا قبل می کنید؟", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json index e88da2f75f3..b89461a4869 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json @@ -5025,7 +5025,6 @@ "Username_ended_the_OTR_session": "__username__ lopetti epävirallisen keskusteluistunnon", "Username_invalid": "%s ei ole kelvollinen käyttäjänimi,
 käytä vain kirjaimia, numeroita, pisteitä, yhdysviivoja ja alaviivoja", "Username_is_already_in_here": "`@%s` on jo täällä.", - "Username_is_not_in_this_room": "Käyttäjä `#%s` ei ole tässä huoneessa.", "Username_Placeholder": "Syötä käyttäjätunnukset..", "Username_title": "Rekisteröi käyttäjätunnus", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ haluaa aloittaa Epävirallinen Keskustelu-keskustelun. Haluatko hyväksyä?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json index 3eb467c0f04..5700fe0af4e 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json @@ -4586,7 +4586,6 @@ "Username_ended_the_OTR_session": "__username__ a mis fin à la session OTR", "Username_invalid": "%s n'est pas un nom d'utilisateur valide,
utilisez uniquement des lettres, des chiffres, des points et des tirets (milieu et bas)", "Username_is_already_in_here": "`@%s` est déjà présent.", - "Username_is_not_in_this_room": "L'utilisateur `#%s` n'est pas dans ce salon.", "Username_Placeholder": "Entrez les noms des utilisateurs...", "Username_title": "Enregistrer un nom d'utilisateur", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ veut démarrer une conversation OTR. Acceptez-vous ?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/he.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/he.i18n.json index 5a60d971ab5..391334053cf 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/he.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/he.i18n.json @@ -1457,7 +1457,6 @@ "Username_ended_the_OTR_session": "__username__ סיים את פגישת ה- OTR", "Username_invalid": "השם %s אינו שם משתמש תקין,
יש להשתמש רק באותיות, מספרים נקודות ומקפים.", "Username_is_already_in_here": "`@%s` כבר נמצא כאן.", - "Username_is_not_in_this_room": "S` המשתמשים `#% הוא לא בחדר הזה.", "Username_Placeholder": "הכנס רשימת משתמשים", "Username_title": "רישום שם משתמש", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ רוצה להתחיל OTR. האם אתה רוצה לקבל?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/hr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/hr.i18n.json index 9efa6afc384..75ca8e0b7a4 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/hr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/hr.i18n.json @@ -2787,7 +2787,6 @@ "Username_ended_the_OTR_session": "__username__ je završio SP razgovor", "Username_invalid": "%s nije valjano korisničko ime,
 koristite samo slova, brojeve, točke, crtice i podvlake", "Username_is_already_in_here": "`@%s` je već ovdje.", - "Username_is_not_in_this_room": "Korisnik `#%s` nije u ovoj sobi.", "Username_Placeholder": "Unesite korisnička imena ...", "Username_title": "Registriraj korisničko ime", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ želi započeti SP. Želite li prihvatiti?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json index f61cdbcc87b..72b1c09b209 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json @@ -3642,7 +3642,6 @@ "Username_ended_the_OTR_session": "__username__ kilépett az OTR beszélgetésből", "Username_invalid": "%s felhasználónév nem érvényes,
kérlek csak betűket, számokat, pontokat vagy kötőjeleket használj", "Username_is_already_in_here": "`@%s` már itt van.", - "Username_is_not_in_this_room": "A felhasználó `#%s` nem ebben a szobában.", "Username_Placeholder": "Írja be a felhasználóneveket...", "Username_title": "Felhasználónév regisztrálása", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ OTR beszélgetést akar kezdeményezni. El akarod fogadni?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/id.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/id.i18n.json index 841e002f203..b12b6b40508 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/id.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/id.i18n.json @@ -2660,7 +2660,6 @@ "Username_ended_the_OTR_session": "__username__ mengakhiri sesi OTR", "Username_invalid": "%s bukan merupakan nama pengguna yang valid,
anda hanya dapat menggunakan huruf, angka, titik, garis bawah dan tanda hubung.", "Username_is_already_in_here": "`@%s` sudah berada di sini.", - "Username_is_not_in_this_room": "Pengguna `#%s` tidak di ruangan ini.", "Username_Placeholder": "Harap masukkan nama pengguna ...", "Username_title": "Daftarkan nama pengguna", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ ingin memulai OTR. Apakah Anda ingin menerima?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/it.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/it.i18n.json index b5608eb3b5a..3cfe862c759 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/it.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/it.i18n.json @@ -2748,7 +2748,6 @@ "Username_ended_the_OTR_session": "__username__ chiude la sessione OTR", "Username_invalid": "%s non è un nome utente valido,
usa solo lettere, numeri, punti, trattini e underscore.", "Username_is_already_in_here": "`@%s` è già qui.", - "Username_is_not_in_this_room": "L'utente `#%s` non è in questo canale", "Username_Placeholder": "Si prega di inserire nomi utente ...", "Username_title": "Registra nome utente", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ vuole iniziare OTR. Vuoi accettare?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json index 926b7e5f222..d83e198904f 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json @@ -4566,7 +4566,6 @@ "Username_ended_the_OTR_session": "__username__がオフレコセッションを終了しました", "Username_invalid": "%sは有効なユーザー名ではありません。
利用できるのは、英数字、ドット、ハイフン、アンダースコアだけです", "Username_is_already_in_here": "「@%s」は、すでにここにあります。", - "Username_is_not_in_this_room": "ユーザー「#%s」は、このルームにいません。", "Username_Placeholder": "ユーザー名を入力してください...", "Username_title": "ユーザー名を登録", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__がオフレコの開始を希望しています。受け入れますか?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ka-GE.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ka-GE.i18n.json index 5dcb96523f1..2fec8d6e6b5 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ka-GE.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ka-GE.i18n.json @@ -3536,7 +3536,6 @@ "Username_ended_the_OTR_session": "__username__-მა დაასრულა OTR სესია", "Username_invalid": "%s არ არის სწორი სახელი,
გამოიყენეთ მხოლოდ ასოები, რიცხვები, წერტილები, ტირეები და ქვედა ხაზები", "Username_is_already_in_here": "`@%s` უკვე აქ არის.", - "Username_is_not_in_this_room": "მომხმარებელი `#%s` არ არის ამ ოთახში.", "Username_Placeholder": "გთხოვთ, შეიყვანოთ მომხმარებლის სახელი ...", "Username_title": "მომხმარებლის სახელის რეგისტრაცია", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ სურს OTR-ის დაწყება. გსურთ მიიღოთ?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/km.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/km.i18n.json index 01156f60f52..e5e59119e38 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/km.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/km.i18n.json @@ -2999,7 +2999,6 @@ "Username_ended_the_OTR_session": "__username__ បាន​​បញ្ចប់សម័យប្រជុំប្រវត្តិ", "Username_invalid": "%s គឺ​ជា​ឈ្មោះ​សម្ងាត់​មិន​ត្រឹម​ត្រូវ,
ព្រោះ​អ្នក​អាច​ប្រើបាន​តែ​តួរ​អក្សរ, លេខ, ចុច និង ដក", "Username_is_already_in_here": "`@%s` គឺមាននៅទីនេះរួចទៅហើយ។", - "Username_is_not_in_this_room": "អ្នកប្រើ `#%s` គឺមិននៅក្នុងបន្ទប់នេះ។", "Username_Placeholder": "សូមបញ្ចូលឈ្មោះអ្នកប្រើ ...", "Username_title": "ចុះ​ឈ្មោះ​សម្ងាត់", "Username_wants_to_start_otr_Do_you_want_to_accept": "ការចាប់ផ្តើមចង់ធ្វើឱ្យ __username__ ប្រវត្តិ។ តើអ្នកចង់ទទួលយក?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ko.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ko.i18n.json index 8db9f0c5206..a04e951164d 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ko.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ko.i18n.json @@ -3874,7 +3874,6 @@ "Username_ended_the_OTR_session": "__username__님이 비밀 대화를 종료했습니다.", "Username_invalid": "&s는 알맞은 사용자명이 아닙니다,
영문자, 숫자, 마침표와 밑줄만 사용하십시오.", "Username_is_already_in_here": "`@%s` 사용자 이름이 이미 있습니다.", - "Username_is_not_in_this_room": "`#%s`님은 대화방에 없습니다.", "Username_Placeholder": "사용자 이름을 입력하세요.", "Username_title": "사용자명 등록", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ 님이 비밀 대화를 시작하려고 합니다. 수락 하시겠습니까?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ku.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ku.i18n.json index 6165d476138..54eb10bb40b 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ku.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ku.i18n.json @@ -2644,7 +2644,6 @@ "Username_ended_the_OTR_session": "__username__ dawî rûniştina OTR", "Username_invalid": "%s e a navê bikarhêner ne derbasdar e,
bi kar tînin tenê tîp, hejmar, zanyarîyan de, cîwan û xêzikên", "Username_is_already_in_here": "`@%s` e, jixwe li vê derê.", - "Username_is_not_in_this_room": "The user `#%s` e di vê odeyê ne.", "Username_Placeholder": "Ji kerema xwe bikarhênerên xwe binivîse ...", "Username_title": "Register navê bikarhêner", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ dixwaze dest bi OTR. Ma tu dixwazî ​​ku qebûl bike?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/lo.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/lo.i18n.json index 8c184030105..c476922c16f 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/lo.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/lo.i18n.json @@ -2687,7 +2687,6 @@ "Username_ended_the_OTR_session": "__username__ ສິ້ນສຸດລົງໃນກອງປະຊຸມ OTR", "Username_invalid": "%s ບໍ່ແມ່ນຊື່ຜູ້ໃຊ້ທີ່ຖືກຕ້ອງ,
ນໍາໃຊ້ພຽງແຕ່ຕົວອັກສອນ, ຈໍານວນ, ຈຸດ, ເຄື່ອງຫມາຍແລະຂີດ", "Username_is_already_in_here": "`@%s` ແມ່ນແລ້ວໃນທີ່ນີ້.", - "Username_is_not_in_this_room": "ຜູ້ໃຊ້ `#%s` ບໍ່ແມ່ນໃນຫ້ອງນີ້.", "Username_Placeholder": "ກະລຸນາໃສ່ຊື່ຜູ້ໃຊ້ ...", "Username_title": "ລົງທະບຽນຊື່ຜູ້ໃຊ້", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ ຕ້ອງການເພື່ອເລີ່ມຕົ້ນການ OTR. ທ່ານຕ້ອງການທີ່ຈະຍອມຮັບ?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/lt.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/lt.i18n.json index a4ade757b12..f5f858a8eb4 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/lt.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/lt.i18n.json @@ -2707,7 +2707,6 @@ "Username_ended_the_OTR_session": "__username__ baigė OTR sesiją", "Username_invalid": "%s nėra tinkamas naudotojo vardas,
naudokite tik raidę, skaičių, taškus, brūkšnelius ir pabraukimus", "Username_is_already_in_here": "`@%s 'jau yra čia.", - "Username_is_not_in_this_room": "Vartotojas \"#%s\" nėra šiame kambaryje.", "Username_Placeholder": "Prašome įvesti naudotojo vardus ...", "Username_title": "Užsiregistruokite vartotojo vardą", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ nori pradėti OTR. Ar norite priimti?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/lv.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/lv.i18n.json index 080e6b5a07b..abd36c9d203 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/lv.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/lv.i18n.json @@ -2651,7 +2651,6 @@ "Username_doesnt_exist": "Lietotājvārds `%s` neeksistē.", "Username_invalid": "%s nav derīgs lietotājvārds,
lietojiet tikai burtus, ciparus, punktus, pārnesumzmes un pasvītras", "Username_is_already_in_here": "`@%s` jau ir šeit.", - "Username_is_not_in_this_room": "Lietotājs #%s nav šajā istabā.", "Username_Placeholder": "Lūdzu, ievadiet lietotājvārdus ...", "Username_title": "Reģistrēt lietotājvārdu", "Users": "Lietotāji", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/mn.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/mn.i18n.json index e216b0435df..748d3d1c213 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/mn.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/mn.i18n.json @@ -2643,7 +2643,6 @@ "Username_doesnt_exist": "Хэрэглэгчийн нэр `%s` байхгүй байна.", "Username_invalid": "%sнь зөв хэрэглэгчийн нэр биш,
зөвхөн үсэг, тоо, цэг, товч болон доогуур зураастай", "Username_is_already_in_here": "`@%s` аль хэдийн энд байна.", - "Username_is_not_in_this_room": "Хэрэглэгчийн `#%s` энэ өрөөнд байхгүй байна.", "Username_Placeholder": "Хэрэглэгчийн нэрийг оруулна уу ...", "Username_title": "Хэрэглэгчийн нэрийг бүртгүүлэх", "Users": "Хэрэглэгчид", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ms-MY.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ms-MY.i18n.json index ded02ad641b..792ec80d838 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ms-MY.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ms-MY.i18n.json @@ -2657,7 +2657,6 @@ "Username_ended_the_OTR_session": "__username__ mengakhiri sesi OTR yang", "Username_invalid": "%s bukan nama pengguna yang sah,
guna hanya huruf, nombor, titik dan pemisah", "Username_is_already_in_here": "`@%s` sudah berada di sini.", - "Username_is_not_in_this_room": "Pengguna `#%s` tidak ada di dalam bilik ini.", "Username_Placeholder": "Sila masukkan nama pengguna ...", "Username_title": "Daftar nama pengguna", "Users": "Pengguna", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json index f210634feda..c8debc93a61 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json @@ -4586,7 +4586,6 @@ "Username_ended_the_OTR_session": "__username__ eindigde de OTR-sessie", "Username_invalid": "%s is geen geldige gebruikersnaam,
gebruik uitsluitend letters, cijfers, punten, koppeltekens en underscores", "Username_is_already_in_here": "`@%s` is al hier.", - "Username_is_not_in_this_room": "De gebruiker `#%s` bevindt zich niet in deze kamer.", "Username_Placeholder": "Voer gebruikersnamen in...", "Username_title": "Registreer gebruikersnaam", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ wil OTR starten. Wilt u accepteren?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/no.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/no.i18n.json index 9d3207509e1..09b37aa1b50 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/no.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/no.i18n.json @@ -2752,7 +2752,6 @@ "Username_ended_the_OTR_session": "__username__ endte OTR-sesjonen", "Username_invalid": "%s er ikke et gyldig brukernavn,
bruker bare bokstaver, tall, prikker, bindestreker og understreker", "Username_is_already_in_here": "`@%s` er allerede her inne.", - "Username_is_not_in_this_room": "Brukeren `#%s` er ikke i dette rommet.", "Username_Placeholder": "Vennligst skriv inn brukernavn ...", "Username_title": "Registrer brukernavn", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ vil starte OTR. Ønsker du å godta?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json index 6b55c35acb6..23283d2aaa6 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json @@ -4949,7 +4949,6 @@ "Username_ended_the_OTR_session": "__username__ zakończył sesję OTR", "Username_invalid": "%s nie jest prawidłową nazwą użytkownika,
dozwolone są jedynie litery, cyfry, kropki i kreski", "Username_is_already_in_here": "`@%s` już tutaj jest.", - "Username_is_not_in_this_room": "Użytkownik `#%s` nie jest w tym pokoju.", "Username_Placeholder": "Wprowadź nazwy użytkowników ...", "Username_title": "Utwórz nazwę użytkownika", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ chce rozpocząć OTR. Czy chcesz zaakceptować?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index c42e90527a6..e1e9be8d653 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -4628,7 +4628,6 @@ "Username_ended_the_OTR_session": "__username__ terminou a sessão OTR", "Username_invalid": "%s não é um nome de usuário válido,
use somente letras, números, pontos, hifens e travessão.", "Username_is_already_in_here": "`@%s` já está aqui.", - "Username_is_not_in_this_room": "O usuário `%s` não está nesta sala.", "Username_Placeholder": "Digite os nomes de usuário...", "Username_title": "Cadastre um nome de usuário", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ quer começar OTR. Você aceita?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pt.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pt.i18n.json index cd34e6967d1..e5294a9bc53 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pt.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pt.i18n.json @@ -3056,7 +3056,6 @@ "Username_ended_the_OTR_session": "__username__ terminou a sessão OTR", "Username_invalid": "%s não é um nome de utilizador válido,
usar somente letras, números, pontos, hífens e underscores", "Username_is_already_in_here": "`@%s` já se encontra aqui.", - "Username_is_not_in_this_room": "O utilizador `%s` não está nesta sala.", "Username_Placeholder": "Digite os nomes de utilizador ...", "Username_title": "Registe um nome de utilizador", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ quer começar OTR. Você aceita?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ro.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ro.i18n.json index fd16168b46d..17acdc68a91 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ro.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ro.i18n.json @@ -2649,7 +2649,6 @@ "Username_ended_the_OTR_session": "__username__ a incheiat sesiunea OTR", "Username_invalid": "%s nu e un nume de utilizator valid,
folosiți doar litere, cifre și cratime", "Username_is_already_in_here": "`@%s` este deja aici.", - "Username_is_not_in_this_room": "Utilizatorul `#%s` nu este în această cameră.", "Username_Placeholder": "Introduceți numele de utilizator ...", "Username_title": "Înregistrează nume de utilizator", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ vrea să înceapă OTR. Doriți să acceptați?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json index d7a9a347cd6..3f17b2f7448 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json @@ -4730,7 +4730,6 @@ "Username_ended_the_OTR_session": "__username__ завершил конфиденциальную беседу", "Username_invalid": "%s недопустимое имя пользователя,
> используйте только буквы, цифры, точки, дефисы и подчеркивания", "Username_is_already_in_here": "\"@%s\" уже здесь.", - "Username_is_not_in_this_room": "Пользователь \"#%s\" не в этой комнате.", "Username_Placeholder": "Пожалуйста, введите логин...", "Username_title": "Зарегистрировать логин", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ хочет начать конфиденциальную беседу. Принять?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sk-SK.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sk-SK.i18n.json index a1879d21e43..6f340011e0d 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sk-SK.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sk-SK.i18n.json @@ -2660,7 +2660,6 @@ "Username_ended_the_OTR_session": "__username__ ukončil reláciu OTR", "Username_invalid": "%s nie je platné používateľské meno,
použite len písmená, čísla, bodky, pomlčky a podčiarkovníky", "Username_is_already_in_here": "`@%s` je už tu.", - "Username_is_not_in_this_room": "Používateľ `#%s` nie je v tejto miestnosti.", "Username_Placeholder": "Zadajte používateľské mená ...", "Username_title": "Registrovať používateľské meno", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ chce začať OTR. Chcete prijať?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sl-SI.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sl-SI.i18n.json index 11dbb7631ad..91159c9a589 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sl-SI.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sl-SI.i18n.json @@ -2640,7 +2640,6 @@ "Username_ended_the_OTR_session": "__username__ je končal sejo OTR", "Username_invalid": "%s ni veljavno uporabniško ime,
uporablja samo črke, številke, pike, vezaje in podčrtaje", "Username_is_already_in_here": "`@%s` je že tukaj.", - "Username_is_not_in_this_room": "Uporabnika `#%s` ni v tej sobi.", "Username_Placeholder": "Prosimo, vnesite uporabniška imena ...", "Username_title": "Registrirajte uporabniško ime", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ želi začeti OTR. Želite sprejeti?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sq.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sq.i18n.json index c665620b369..18f293a55eb 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sq.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sq.i18n.json @@ -2650,7 +2650,6 @@ "Username_ended_the_OTR_session": "__username__ përfundoi seancën OTR", "Username_invalid": "%s nuk është një emër përdoruesi të vlefshme,
përdorni vetëm shkronja, numra, pika, hyphens dhe nënvizon", "Username_is_already_in_here": "`@%s` është tashmë këtu.", - "Username_is_not_in_this_room": "Përdoruesi `#%s` nuk është në këtë dhomë.", "Username_Placeholder": "Futu emrat e përdoruesve ...", "Username_title": "Regjistrohu emrin", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ dëshiron të fillojë OTR. A doni të pranoni?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sr.i18n.json index 146d087ba39..889d1716c68 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sr.i18n.json @@ -2449,7 +2449,6 @@ "Username_ended_the_OTR_session": "__username__ завршио ОТР сесију", "Username_invalid": "%s није исправно корисничко име,
користите само слова, бројеве, тачке и повлаке", "Username_is_already_in_here": "`@%s` је већ овде.", - "Username_is_not_in_this_room": "Корисник `#%s` није у овој соби.", "Username_Placeholder": "Молимо унесите корисничка имена ...", "Username_title": "Направите корисничко име", "Users": "усерс", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json index c7af2b347a2..5695309a7f7 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json @@ -4860,8 +4860,7 @@ "Username_ended_the_OTR_session": "__username__ avslutade OTR-session", "Username_invalid": "%s är inte ett giltigt användarnamn,
använd bara bokstäver, siffror, punkter och bindestreck", "Username_is_already_in_here": "`@%s` är redan här inne.", - "Username_is_not_in_this_room": "Användaren `#%s` är inte i rummet.", - "Username_Placeholder": "Ange användarnamn ...", + "Username_Placeholder": "Vänligen ange användarnamn ...", "Username_title": "Registrera användarnamn", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ vill starta OTR. Vill du acceptera?", "Users": "Användare", @@ -5237,4 +5236,4 @@ "Toolbox_room_actions": "Primära åtgärder i rum", "Theme_light": "Ljus", "Theme_dark": "Mörk" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ta-IN.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ta-IN.i18n.json index ba1006565d0..a3c4bbf086d 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ta-IN.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ta-IN.i18n.json @@ -2651,7 +2651,6 @@ "Username_ended_the_OTR_session": "__username__ OTR அமர்வு முடிவடைந்த", "Username_invalid": "%s தவறானது பயனர் பெயர்,
பயன்படுத்த எழுத்துகள், எண்கள், புள்ளிகளும் கோடுகளும்", "Username_is_already_in_here": "`@%s` இங்கே ஏற்கனவே உள்ளது.", - "Username_is_not_in_this_room": "பயனர் `#%s` இந்த அறையில் இல்லை.", "Username_Placeholder": "தயவுசெய்து பயனர்பெயர்களை உள்ளிடவும் ...", "Username_title": "பயனர் பெயரை பதிவுசெய்", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ OTR தொடங்க விரும்புகிறது. நீங்கள் ஏற்க விரும்புகிறீர்களா?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/th-TH.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/th-TH.i18n.json index 47bb56ff94c..48ff82840da 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/th-TH.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/th-TH.i18n.json @@ -2638,7 +2638,6 @@ "Username_ended_the_OTR_session": "__username__ สิ้นสุดเซสชัน OTR", "Username_invalid": "%sไม่ใช่ชื่อผู้ใช้ที่ถูกต้อง
ใช้เฉพาะตัวอักษรจุดจุดยัติภังค์และเครื่องหมายขีดล่าง", "Username_is_already_in_here": "`@%s` มีอยู่แล้วที่นี่", - "Username_is_not_in_this_room": "ผู้ใช้ `#%s` ไม่อยู่ในห้องนี้", "Username_Placeholder": "โปรดป้อนชื่อผู้ใช้ ...", "Username_title": "ลงทะเบียนชื่อผู้ใช้", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ ต้องการเริ่มต้น OTR คุณต้องการยอมรับหรือไม่?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/tr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/tr.i18n.json index 00faae66328..53b76abea96 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/tr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/tr.i18n.json @@ -3140,7 +3140,6 @@ "Username_ended_the_OTR_session": "__username__ Kayıt Dışı oturumu sonlandırdı", "Username_invalid": "%s geçerli bir kullanıcı adı değil,
Kullanıcı adınızı seçerken yalnızca harfler, sayılar, noktalar, tireler ve alt çizgiler kullanın", "Username_is_already_in_here": "`@%s` zaten burada.", - "Username_is_not_in_this_room": "`#%s` adlı kullanıcı bu odada değil.", "Username_Placeholder": "Lütfen kullanıcı adlarını giriniz...", "Username_title": "Kullanıcı adını kaydet", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ Kayıt Dışı başlatmak istiyor. Kabul etmek istiyor musunuz?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ug.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ug.i18n.json index f9aaf19a126..6f89931fd27 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ug.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ug.i18n.json @@ -1166,7 +1166,6 @@ "Username_ended_the_OTR_session": "خاتىرىسىز دىيالوگنى ئاياغلاشتۇردى __username__", "Username_invalid": "پەقەت ئىنگلىزچە ھەرپ ، ، سان ،ئۇلانما ھەرپ -بەلگە ۋە ئاستى سىزىقچە ئىشلىتىدۇ.
بىر ئىناۋەتلىك ئەزا ئىسمى ئەمەس، %s", "Username_is_already_in_here": "ئاللىبۇرۇن بار `@%s`", - "Username_is_not_in_this_room": "بۇ ئۆيدە ئەمەس`#%s` ئەزا", "Username_title": "ئەزا ئىسمىنى تىزىملىتىش", "Username_wants_to_start_otr_Do_you_want_to_accept": "سىز بىلەن خاتىرىسىز دىيالوگ ئېلىپ بارماقچى ، سىز قوبۇل قىلامسىز ؟__username__", "Users": "ئەزا", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/uk.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/uk.i18n.json index a14a6bd212d..cfca0a7bee6 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/uk.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/uk.i18n.json @@ -3229,7 +3229,6 @@ "Username_ended_the_OTR_session": "__username__ закінчив сеанс OTR", "Username_invalid": "%s не дійсне ім'я користувача,
використовувати тільки букви, цифри, крапки і тире", "Username_is_already_in_here": "`@%s` вже тут.", - "Username_is_not_in_this_room": "Користувач `#%s` не в цій кімнаті.", "Username_Placeholder": "Будь ласка, введіть імена користувачів ...", "Username_title": "Зареєструйте ім’я користувача", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ хоче почати OTR. Ви хочете прийняти?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/vi-VN.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/vi-VN.i18n.json index a4a849ffb4b..12338ff21e1 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/vi-VN.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/vi-VN.i18n.json @@ -2750,7 +2750,6 @@ "Username_doesnt_exist": "Tên người dùng `%s` không tồn tại.", "Username_invalid": "%s không phải là tên người dùng hợp lệ,
chỉ sử dụng chữ cái, số, dấu chấm, dấu nối và dấu gạch dưới", "Username_is_already_in_here": "`@%s` đã có ở đây.", - "Username_is_not_in_this_room": "Người dùng `#%s` không ở trong phòng này.", "Username_Placeholder": "Vui lòng nhập tên người dùng ...", "Username_title": "Đăng ký tên người dùng", "Users": "Người dùng", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/zh-HK.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/zh-HK.i18n.json index 9df57ff023c..95d0710515a 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/zh-HK.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/zh-HK.i18n.json @@ -2668,7 +2668,6 @@ "Username_ended_the_OTR_session": "__username__结束了OTR会话", "Username_invalid": "%s不是一个有效的用户名,
只能使用字母,数字,.和_", "Username_is_already_in_here": "`@%s`已经在这里了。", - "Username_is_not_in_this_room": "用户`#%s`不在这个房间里。", "Username_Placeholder": "请输入用户名...", "Username_title": "注册用户名", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__想要启动OTR。你想接受吗?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json index 08ea10a1518..3c307c08345 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json @@ -4333,7 +4333,6 @@ "Username_ended_the_OTR_session": "__username__結束了不公開會議", "Username_invalid": "%s不是一個合法的使用者名稱,
只能使用字母,數字,.和_", "Username_is_already_in_here": "`@%s`已經在這裡了。", - "Username_is_not_in_this_room": "使用者 `#%s` 並不在這個頻道", "Username_Placeholder": "請輸入使用者名稱...", "Username_title": "註冊使用者名稱", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__想要啟動不公開。你想接受嗎?", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/zh.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/zh.i18n.json index 876d2da86bb..11ac8571ca1 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/zh.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/zh.i18n.json @@ -3972,7 +3972,6 @@ "Username_ended_the_OTR_session": "__username__ 结束了无记录对话", "Username_invalid": "%s 不是一个有效的用户名,
只能使用字母、数字、连字符和下划线", "Username_is_already_in_here": "`@%s` 已存在于此。", - "Username_is_not_in_this_room": "用户 `#%s` 不在该聊天室中。", "Username_Placeholder": "请输入用户名...", "Username_title": "注册用户名", "Username_wants_to_start_otr_Do_you_want_to_accept": "__username__ 要与您进行无记录对话,您是否接受?", diff --git a/apps/meteor/tests/end-to-end/api/24-methods.js b/apps/meteor/tests/end-to-end/api/24-methods.js index 67d8f8253c8..c26dcacbd2a 100644 --- a/apps/meteor/tests/end-to-end/api/24-methods.js +++ b/apps/meteor/tests/end-to-end/api/24-methods.js @@ -1665,6 +1665,58 @@ describe('Meteor.methods', function () { .end(done); }); }); + + ['tshow', 'alias', 'attachments', 'avatar', 'emoji', 'msg'].forEach((prop) => { + it(`should allow to update a message changing property '${prop}'`, (done) => { + request + .post(methodCall('updateMessage')) + .set(credentials) + .send({ + message: JSON.stringify({ + method: 'updateMessage', + params: [{ _id: messageId, rid, msg: 'Message updated', [prop]: 'valid' }], + id: 'id', + msg: 'method', + }), + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('message').that.is.a('string'); + const data = JSON.parse(res.body.message); + expect(data).to.have.a.property('msg').that.is.a('string'); + }) + .end(done); + }); + }); + + ['tmid', '_hidden', 'rid'].forEach((prop) => { + it(`should fail to update a message changing invalid property '${prop}'`, (done) => { + request + .post(methodCall('updateMessage')) + .set(credentials) + .send({ + message: JSON.stringify({ + method: 'updateMessage', + params: [{ _id: messageId, rid, msg: 'Message updated invalid', [prop]: 'invalid' }], + id: 'id', + msg: 'method', + }), + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('message').that.is.a('string'); + + const data = JSON.parse(res.body.message); + expect(data).to.have.a.property('error').that.is.an('object'); + expect(data.error).to.have.a.property('error', 'error-invalid-update-key'); + }) + .end(done); + }); + }); }); describe('[@setUserActiveStatus]', () => { diff --git a/apps/meteor/tests/unit/app/ui-utils/server.tests.js b/apps/meteor/tests/unit/app/ui-utils/server.tests.js index c4170f9afc8..e259816ac25 100644 --- a/apps/meteor/tests/unit/app/ui-utils/server.tests.js +++ b/apps/meteor/tests/unit/app/ui-utils/server.tests.js @@ -1,14 +1,5 @@ -import proxyquire from 'proxyquire'; import { expect } from 'chai'; -const { messageProperties } = proxyquire.noCallThru().load('../../../../app/ui-utils/lib/MessageProperties', { - '../../emoji': { - emoji: { - list: {}, - }, - }, -}); - const messages = { 'Sample Message': 14, 'Sample 1 ⛳': 10, @@ -20,7 +11,7 @@ describe('Message Properties', () => { describe('Check Message Length', () => { Object.keys(messages).forEach((objectKey) => { it('should treat emojis as single characters', () => { - expect(messageProperties.length(objectKey)).to.be.equal(messages[objectKey]); + expect(objectKey.length).to.be.equal(messages[objectKey]); }); }); }); diff --git a/package.json b/package.json index 8bb1cf25135..0892efe0190 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "5.4.2", + "version": "5.4.3", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, diff --git a/packages/model-typings/src/models/IUsersModel.ts b/packages/model-typings/src/models/IUsersModel.ts index fabdddc340f..ee1a9f6ccc7 100644 --- a/packages/model-typings/src/models/IUsersModel.ts +++ b/packages/model-typings/src/models/IUsersModel.ts @@ -138,6 +138,7 @@ export interface IUsersModel extends IBaseModel { resetTOTPById(userId: any): any; unsetLoginTokens(userId: any): any; + unsetOneLoginToken(userId: IUser['_id'], token: string): Promise; removeNonPATLoginTokensExcept(userId: any, authToken: any): any; diff --git a/yarn.lock b/yarn.lock index b0c23be701e..c3d7358fb6b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6182,7 +6182,6 @@ __metadata: filesize: 9.0.11 google-libphonenumber: ^3.2.28 googleapis: ^104.0.0 - grapheme-splitter: ^1.0.4 he: ^1.2.0 highlight.js: ^11.6.0 hljs9: "npm:highlight.js@^9.18.5"