diff --git a/.github/actions/meteor-build/action.yml b/.github/actions/meteor-build/action.yml
index 13fe7da5b302a..9466a172cebf7 100644
--- a/.github/actions/meteor-build/action.yml
+++ b/.github/actions/meteor-build/action.yml
@@ -170,7 +170,7 @@ runs:
"meteor/babel-compiler/node_modules/@meteorjs/swc-core/.swc/node_modules/@swc/core-linux-x64-musl" # Removes 58M
"meteor/babel-compiler/node_modules/@meteorjs/swc-core/.swc/node_modules/@swc/core-linux-arm64-musl" # Removes 44M
"meteor/babel-compiler/node_modules/typescript" # Removes 31M
- "meteor/babel-compiler/node_modules/@babel" # Removes 14M
+ # "meteor/babel-compiler/node_modules/@babel" # Removes 14M
"@rocket.chat/i18n/src" # Removes 16M
"typescript" # Removes 19M
diff --git a/apps/meteor/.mocharc.js b/apps/meteor/.mocharc.js
index f9f780024f964..010d7f720f677 100644
--- a/apps/meteor/.mocharc.js
+++ b/apps/meteor/.mocharc.js
@@ -28,5 +28,8 @@ module.exports = {
'tests/unit/server/**/*.spec.ts',
'app/api/server/lib/**/*.spec.ts',
'app/file-upload/server/**/*.spec.ts',
+ 'app/statistics/server/**/*.spec.ts',
+ 'app/livechat/server/lib/**/*.spec.ts',
+ 'app/utils/server/**/*.spec.ts',
],
};
diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md
index 9b703b40fbdd1..6090774e263be 100644
--- a/apps/meteor/CHANGELOG.md
+++ b/apps/meteor/CHANGELOG.md
@@ -1,5 +1,52 @@
# @rocket.chat/meteor
+## 8.0.2
+
+### Patch Changes
+
+- ([#38351](https://github.com/RocketChat/Rocket.Chat/pull/38351) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes integration saving error because of missing babel dependencies inside the docker container
+
+- Bump @rocket.chat/meteor version.
+
+- Bump @rocket.chat/meteor version.
+
+- ([#38787](https://github.com/RocketChat/Rocket.Chat/pull/38787) by [@dionisio-bot](https://github.com/dionisio-bot)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/abac@0.1.2
+ - @rocket.chat/federation-matrix@0.0.11
+ - @rocket.chat/license@1.1.9
+ - @rocket.chat/media-calls@0.2.2
+ - @rocket.chat/omnichannel-services@0.3.46
+ - @rocket.chat/pdf-worker@0.3.28
+ - @rocket.chat/presence@0.2.49
+ - @rocket.chat/api-client@0.2.49
+ - @rocket.chat/apps@0.6.2
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/cron@0.1.49
+ - @rocket.chat/fuselage-ui-kit@26.0.2
+ - @rocket.chat/gazzodown@26.0.2
+ - @rocket.chat/http-router@7.9.16
+ - @rocket.chat/message-types@0.1.0
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/ui-avatar@22.0.2
+ - @rocket.chat/ui-client@26.0.2
+ - @rocket.chat/ui-contexts@26.0.2
+ - @rocket.chat/ui-voip@16.0.2
+ - @rocket.chat/web-ui-registration@26.0.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/server-cloud-communication@0.0.2
+ - @rocket.chat/network-broker@0.2.28
+ - @rocket.chat/omni-core-ee@0.0.14
+ - @rocket.chat/ui-theming@0.4.4
+ - @rocket.chat/ui-video-conf@26.0.2
+ - @rocket.chat/instance-status@0.1.49
+ - @rocket.chat/omni-core@0.0.14
+
+
## 8.0.1
### Patch Changes
diff --git a/apps/meteor/app/api/server/helpers/getUserInfo.spec.ts b/apps/meteor/app/api/server/helpers/getUserInfo.spec.ts
index d7f2dadd5af2d..eaf6122fb99c4 100644
--- a/apps/meteor/app/api/server/helpers/getUserInfo.spec.ts
+++ b/apps/meteor/app/api/server/helpers/getUserInfo.spec.ts
@@ -71,6 +71,11 @@ describe('getUserInfo', () => {
);
});
+ it("should NOT return user preferences when 'pullPreferences' param is false", async () => {
+ const userInfo = await getUserInfo(user, false);
+ expect(userInfo.settings).not.toHaveProperty('preferences');
+ });
+
describe('email handling', () => {
it('should not include email if no emails are present', async () => {
user.emails = [];
diff --git a/apps/meteor/app/api/server/helpers/getUserInfo.ts b/apps/meteor/app/api/server/helpers/getUserInfo.ts
index 4918aaf3fee22..beed975452c7a 100644
--- a/apps/meteor/app/api/server/helpers/getUserInfo.ts
+++ b/apps/meteor/app/api/server/helpers/getUserInfo.ts
@@ -65,7 +65,10 @@ const getUserCalendar = (email: false | IUserEmail | undefined): IUserCalendar =
return calendarSettings;
};
-export async function getUserInfo(me: IUser): Promise<
+export async function getUserInfo(
+ me: IUser,
+ pullPreferences = true,
+): Promise<
IUser & {
email?: string;
avatarUrl: string;
@@ -80,10 +83,7 @@ export async function getUserInfo(me: IUser): Promise<
email: verifiedEmail ? verifiedEmail.address : undefined,
settings: {
profile: {},
- preferences: {
- ...(await getUserPreferences(me)),
- ...userPreferences,
- },
+ ...(pullPreferences && { preferences: { ...(await getUserPreferences(me)), ...userPreferences } }),
calendar: getUserCalendar(verifiedEmail),
},
avatarUrl: getURL(`/avatar/${me.username}`, { cdn: false, full: true }),
diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts
index e567970508438..3041b7d6a1282 100644
--- a/apps/meteor/app/api/server/v1/users.ts
+++ b/apps/meteor/app/api/server/v1/users.ts
@@ -74,6 +74,7 @@ import type { ExtractRoutesFromAPI } from '../ApiClass';
import { API } from '../api';
import { getPaginationItems } from '../helpers/getPaginationItems';
import { getUserFromParams } from '../helpers/getUserFromParams';
+import { getUserInfo } from '../helpers/getUserInfo';
import { isUserFromParams } from '../helpers/isUserFromParams';
import { getUploadFormData } from '../lib/getUploadFormData';
import { isValidQuery } from '../lib/isValidQuery';
@@ -189,7 +190,7 @@ API.v1.addRoute(
);
return API.v1.success({
- user: await Users.findOneById(this.userId, { projection: API.v1.defaultFieldsToExclude }),
+ user: await getUserInfo((await Users.findOneById(this.userId, { projection: API.v1.defaultFieldsToExclude })) as IUser, false),
});
},
},
diff --git a/apps/meteor/app/file-upload/server/lib/FileUpload.spec.ts b/apps/meteor/app/file-upload/server/lib/FileUpload.spec.ts
index 73249fea904a0..21a81b4564086 100644
--- a/apps/meteor/app/file-upload/server/lib/FileUpload.spec.ts
+++ b/apps/meteor/app/file-upload/server/lib/FileUpload.spec.ts
@@ -11,10 +11,25 @@ const settingsGetMap = new Map();
const messagesModelStub = {
find: sinon.stub(),
};
+const usersModelStub = {
+ findOneByIdAndLoginToken: sinon.stub(),
+};
+const subscriptionsModelStub = {
+ findOneByRoomIdAndUserId: sinon.stub(),
+};
+const validateAndDecodeJWTStub = sinon.stub();
+const systemLoggerStub = {
+ error: sinon.stub(),
+};
+const roomCoordinatorStub = {
+ getRoomDirectives: sinon.stub(),
+};
const { FileUpload, FileUploadClass } = proxyquire.noCallThru().load('./FileUpload', {
'@rocket.chat/models': {
Messages: messagesModelStub,
+ Users: usersModelStub,
+ Subscriptions: subscriptionsModelStub,
},
'meteor/check': sinon.stub(),
'meteor/meteor': sinon.stub(),
@@ -23,14 +38,19 @@ const { FileUpload, FileUploadClass } = proxyquire.noCallThru().load('./FileUplo
'stream-buffers': sinon.stub(),
'./streamToBuffer': sinon.stub(),
'../../../../server/lib/i18n': sinon.stub(),
- '../../../../server/lib/logger/system': sinon.stub(),
- '../../../../server/lib/rooms/roomCoordinator': sinon.stub(),
+ '../../../../server/lib/logger/system': { SystemLogger: systemLoggerStub },
+ '../../../../server/lib/rooms/roomCoordinator': { roomCoordinator: roomCoordinatorStub },
'../../../../server/ufs': sinon.stub(),
'../../../../server/ufs/ufs-methods': sinon.stub(),
'../../../settings/server': { settings: settingsStub },
'../../../utils/lib/mimeTypes': sinon.stub(),
- '../../../utils/server/lib/JWTHelper': sinon.stub(),
+ '../../../utils/server/lib/JWTHelper': {
+ validateAndDecodeJWT: validateAndDecodeJWTStub,
+ generateJWT: sinon.stub(),
+ },
'../../../utils/server/restrictions': sinon.stub(),
+ '../../../api/server/lib/MultipartUploadHandler': sinon.stub(),
+ '@rocket.chat/account-utils': { hashLoginToken: sinon.stub().callsFake((token) => `hashed_${token}`) },
});
describe('FileUpload', () => {
@@ -44,6 +64,13 @@ describe('FileUpload', () => {
messagesModelStub.find.reset();
fakeStorageModel.findOneById.reset();
fakeStorageModel.deleteFile.reset();
+ usersModelStub.findOneByIdAndLoginToken.reset();
+ subscriptionsModelStub.findOneByRoomIdAndUserId.reset();
+ validateAndDecodeJWTStub.reset();
+ systemLoggerStub.error.reset();
+ roomCoordinatorStub.getRoomDirectives.reset();
+ settingsGetMap.clear();
+ settingsGetMap.set('FileUpload_Storage_Type', 'fakeStorage');
});
it('should not remove any file if no room id is provided', async () => {
@@ -100,4 +127,165 @@ describe('FileUpload', () => {
expect(fakeStorageModel.deleteFile.calledWith('file-id')).to.be.true;
expect(fakeStorageModel.deleteFile.calledWith('thumbnail-id')).to.be.true;
});
+
+ describe('requestCanAccessFiles', () => {
+ it('should allow access if FileUpload_ProtectFiles is false', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', false);
+
+ const request = {
+ headers: {},
+ url: '/file-upload/test-file-id/test-file.png',
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request);
+ expect(result).to.be.true;
+ });
+
+ it('should allow access if no url is provided', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', true);
+
+ const request = {
+ headers: {},
+ url: undefined,
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request);
+ expect(result).to.be.true;
+ });
+
+ it('should deny access if FileUpload_Enable_json_web_token_for_files is true but no token is provided', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', true);
+ settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true);
+
+ const request = {
+ headers: {},
+ url: '/file-upload/test-file-id/test-file.png',
+ } as any;
+
+ const file = {
+ _id: 'test-file-id',
+ rid: 'test-room-id',
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request, file);
+ expect(result).to.be.false;
+ });
+
+ it('should deny access if FileUpload_json_web_token_secret_for_files is not configured', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', true);
+ settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true);
+ settingsGetMap.set('FileUpload_json_web_token_secret_for_files', '');
+
+ const request = {
+ headers: {},
+ url: '/file-upload/test-file-id/test-file.png?token=some-token',
+ } as any;
+
+ const file = {
+ _id: 'test-file-id',
+ rid: 'test-room-id',
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request, file);
+ expect(result).to.be.false;
+ expect(systemLoggerStub.error.calledOnce).to.be.true;
+ });
+
+ it('should deny access if an invalid token is provided', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', true);
+ settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true);
+ settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret');
+ validateAndDecodeJWTStub.returns(null);
+
+ const request = {
+ headers: {},
+ url: '/file-upload/test-file-id/test-file.png?token=invalid-token',
+ } as any;
+
+ const file = {
+ _id: 'test-file-id',
+ rid: 'test-room-id',
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request, file);
+ expect(result).to.be.false;
+ expect(validateAndDecodeJWTStub.calledOnce).to.be.true;
+ });
+
+ it('should deny access if token is invalid or payload cannot be decoded', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', true);
+ settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true);
+ settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret');
+ validateAndDecodeJWTStub.returns(null);
+
+ const request = {
+ headers: {},
+ url: '/file-upload/test-file-id/test-file.png?token=valid-token',
+ } as any;
+
+ const file = {
+ _id: 'test-file-id',
+ rid: 'test-room-id',
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request, file);
+ expect(result).to.be.false;
+ });
+
+ it('should deny access if the fileId and rid in the token do not match the requested file', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', true);
+ settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true);
+ settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret');
+ validateAndDecodeJWTStub.returns({ fileId: 'different-file-id', rid: 'different-room-id', userId: 'test-user-id' });
+
+ const request = {
+ headers: {},
+ url: '/file-upload/test-file-id/test-file.png?token=valid-token',
+ } as any;
+
+ const file = {
+ _id: 'test-file-id',
+ rid: 'test-room-id',
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request, file);
+ expect(result).to.be.false;
+ });
+
+ it('should deny access if file object is not provided when using JWT', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', true);
+ settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true);
+ settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret');
+ validateAndDecodeJWTStub.returns({ fileId: 'test-file-id', rid: 'test-room-id', userId: 'test-user-id' });
+
+ const request = {
+ headers: {},
+ url: '/file-upload/test-file-id/test-file.png?token=valid-token',
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request, undefined);
+ expect(result).to.be.false;
+ });
+
+ it('should allow access when everything is valid: token is valid, secret configured, and file/room match', async () => {
+ settingsGetMap.set('FileUpload_ProtectFiles', true);
+ settingsGetMap.set('FileUpload_Enable_json_web_token_for_files', true);
+ settingsGetMap.set('FileUpload_json_web_token_secret_for_files', 'test-secret');
+ validateAndDecodeJWTStub.returns({ fileId: 'test-file-id', rid: 'test-room-id', userId: 'test-user-id' });
+
+ const request = {
+ headers: {},
+ url: '/file-upload/test-file-id/test-file.png?token=valid-token',
+ } as any;
+
+ const file = {
+ _id: 'test-file-id',
+ rid: 'test-room-id',
+ } as any;
+
+ const result = await FileUpload.requestCanAccessFiles(request, file);
+ expect(result).to.be.true;
+ expect(validateAndDecodeJWTStub.calledOnceWith('valid-token', 'test-secret')).to.be.true;
+ });
+ });
});
diff --git a/apps/meteor/app/file-upload/server/lib/FileUpload.ts b/apps/meteor/app/file-upload/server/lib/FileUpload.ts
index 73f67fb473744..45ec00fccde4b 100644
--- a/apps/meteor/app/file-upload/server/lib/FileUpload.ts
+++ b/apps/meteor/app/file-upload/server/lib/FileUpload.ts
@@ -32,7 +32,7 @@ import type { Store, StoreOptions } from '../../../../server/ufs/ufs-store';
import { canAccessRoomAsync, canAccessRoomIdAsync } from '../../../authorization/server/functions/canAccessRoom';
import { settings } from '../../../settings/server';
import { mime } from '../../../utils/lib/mimeTypes';
-import { isValidJWT, generateJWT } from '../../../utils/server/lib/JWTHelper';
+import { validateAndDecodeJWT, generateJWT } from '../../../utils/server/lib/JWTHelper';
import { fileUploadIsValidContentType } from '../../../utils/server/restrictions';
const cookie = new Cookies();
@@ -458,12 +458,36 @@ export const FileUpload = {
.getRoomDirectives(rc_room_type)
.canAccessUploadedFile({ rc_uid: rc_uid || '', rc_rid: rc_rid || '', rc_token: rc_token || '' });
- const isAuthorizedByJWT = () =>
- settings.get('FileUpload_Enable_json_web_token_for_files') &&
- token &&
- isValidJWT(token as string, settings.get('FileUpload_json_web_token_secret_for_files'));
+ const isAuthorizedByJWT: () => boolean = () => {
+ if (!token || typeof token !== 'string' || !settings.get('FileUpload_Enable_json_web_token_for_files')) {
+ return false;
+ }
+
+ if (!settings.get('FileUpload_json_web_token_secret_for_files')) {
+ SystemLogger.error('FileUpload_json_web_token_secret_for_files is not configured. Cannot validate JWT for file access.');
+ return false;
+ }
+
+ const payload = validateAndDecodeJWT(token, settings.get('FileUpload_json_web_token_secret_for_files'));
+
+ if (!payload) {
+ return false;
+ }
+
+ const { fileId, rid } = payload as { fileId: string; rid: string };
+
+ if (!fileId || !rid) {
+ return false;
+ }
+
+ if (fileId !== file?._id || rid !== file?.rid) {
+ return false;
+ }
+
+ return true;
+ };
- if ((await isAuthorizedByRoom()) || isAuthorizedByJWT()) {
+ if (isAuthorizedByJWT() || (await isAuthorizedByRoom())) {
return true;
}
@@ -641,7 +665,11 @@ export const FileUpload = {
},
generateJWTToFileUrls({ rid, userId, fileId }: { rid: string; userId: string; fileId: string }) {
- if (!settings.get('FileUpload_ProtectFiles') || !settings.get('FileUpload_Enable_json_web_token_for_files')) {
+ if (
+ !settings.get('FileUpload_ProtectFiles') ||
+ !settings.get('FileUpload_Enable_json_web_token_for_files') ||
+ !settings.get('FileUpload_json_web_token_secret_for_files')
+ ) {
return;
}
return generateJWT(
diff --git a/apps/meteor/app/file/server/file.server.ts b/apps/meteor/app/file/server/file.server.ts
index 0af01c1bfdab7..629684391bcbd 100644
--- a/apps/meteor/app/file/server/file.server.ts
+++ b/apps/meteor/app/file/server/file.server.ts
@@ -10,6 +10,8 @@ import { NpmModuleMongodb } from 'meteor/npm-mongo';
import mime from 'mime-type/with-db';
import mkdirp from 'mkdirp';
+import { sanitizeFileName } from './functions/sanitizeFileName';
+
const { db } = MongoInternals.defaultRemoteCollectionDriver().mongo;
type IFile = {
@@ -141,7 +143,7 @@ class FileSystem implements IRocketChatFileStore {
}
createWriteStream(fileName: string) {
- const ws = fs.createWriteStream(path.join(this.absolutePath, fileName));
+ const ws = fs.createWriteStream(path.join(this.absolutePath, sanitizeFileName(fileName)));
ws.on('close', () => {
return ws.emit('end');
});
@@ -149,15 +151,15 @@ class FileSystem implements IRocketChatFileStore {
}
createReadStream(fileName: string) {
- return fs.createReadStream(path.join(this.absolutePath, fileName));
+ return fs.createReadStream(path.join(this.absolutePath, sanitizeFileName(fileName)));
}
stat(fileName: string) {
- return fsp.stat(path.join(this.absolutePath, fileName));
+ return fsp.stat(path.join(this.absolutePath, sanitizeFileName(fileName)));
}
async remove(fileName: string) {
- return fsp.unlink(path.join(this.absolutePath, fileName));
+ return fsp.unlink(path.join(this.absolutePath, sanitizeFileName(fileName)));
}
async getFileWithReadStream(fileName: string) {
diff --git a/apps/meteor/app/file/server/functions/sanitizeFileName.spec.ts b/apps/meteor/app/file/server/functions/sanitizeFileName.spec.ts
new file mode 100644
index 0000000000000..bbf09eb718747
--- /dev/null
+++ b/apps/meteor/app/file/server/functions/sanitizeFileName.spec.ts
@@ -0,0 +1,55 @@
+import { expect } from 'chai';
+import { describe, it } from 'mocha';
+
+import { sanitizeFileName } from './sanitizeFileName';
+
+describe('sanitizeFileName', () => {
+ describe('valid filenames', () => {
+ it('should allow simple filenames', () => {
+ const result = sanitizeFileName('sound.mp3');
+ expect(result).to.equal('sound.mp3');
+ });
+
+ it('should allow filenames with dashes, underscores and dots', () => {
+ const result = sanitizeFileName('alert_test-01.wav');
+ expect(result).to.equal('alert_test-01.wav');
+ });
+
+ it('should allow filenames without extension', () => {
+ const result = sanitizeFileName('beep');
+ expect(result).to.equal('beep');
+ });
+ });
+
+ describe('invalid paths', () => {
+ it('should reject path traversal using ../', () => {
+ expect(() => sanitizeFileName('../etc/passwd')).to.throw();
+ });
+
+ it('should reject path traversal using ./', () => {
+ expect(() => sanitizeFileName('./folder/sounds')).to.throw();
+ });
+
+ it('should reject nested paths', () => {
+ expect(() => sanitizeFileName('sounds/alert.mp3')).to.throw();
+ });
+
+ it('should reject absolute paths', () => {
+ expect(() => sanitizeFileName('/etc/passwd')).to.throw();
+ });
+ });
+
+ describe('invalid characters', () => {
+ it('should reject filenames with spaces', () => {
+ expect(() => sanitizeFileName('my sound.mp3')).to.throw();
+ });
+
+ it('should reject filenames with special characters', () => {
+ expect(() => sanitizeFileName('sound$.mp3')).to.throw();
+ });
+
+ it('should reject filenames with backslashes', () => {
+ expect(() => sanitizeFileName('..\\passwd')).to.throw();
+ });
+ });
+});
diff --git a/apps/meteor/app/file/server/functions/sanitizeFileName.ts b/apps/meteor/app/file/server/functions/sanitizeFileName.ts
new file mode 100644
index 0000000000000..5b9ca233cbe07
--- /dev/null
+++ b/apps/meteor/app/file/server/functions/sanitizeFileName.ts
@@ -0,0 +1,19 @@
+import path from 'path';
+
+export function sanitizeFileName(fileName: string) {
+ const base = path.basename(fileName);
+
+ if (base !== fileName) {
+ throw new Error('error-invalid-file-name');
+ }
+
+ if (base === '.' || base.startsWith('..')) {
+ throw new Error('error-invalid-file-name');
+ }
+
+ if (!/^[a-zA-Z0-9._-]+$/.test(base)) {
+ throw new Error('error-invalid-characters-in-file-name');
+ }
+
+ return base;
+}
diff --git a/apps/meteor/app/lib/server/functions/getFullUserData.ts b/apps/meteor/app/lib/server/functions/getFullUserData.ts
index f1e1be0af0499..44e62c08a600b 100644
--- a/apps/meteor/app/lib/server/functions/getFullUserData.ts
+++ b/apps/meteor/app/lib/server/functions/getFullUserData.ts
@@ -114,5 +114,9 @@ export async function getFullUserDataByIdOrUsernameOrImportId(
(user.services.password as any) = true;
}
+ delete user?.services?.passwordHistory;
+ delete user?.services?.resume;
+ delete user?.services?.email;
+
return user;
}
diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info
index dc88e4c88a63c..4d54432ce874d 100644
--- a/apps/meteor/app/utils/rocketchat.info
+++ b/apps/meteor/app/utils/rocketchat.info
@@ -1,3 +1,3 @@
{
- "version": "8.0.1"
+ "version": "8.0.2"
}
diff --git a/apps/meteor/app/utils/server/lib/JWTHelper.spec.ts b/apps/meteor/app/utils/server/lib/JWTHelper.spec.ts
new file mode 100644
index 0000000000000..ce93e8e6c8361
--- /dev/null
+++ b/apps/meteor/app/utils/server/lib/JWTHelper.spec.ts
@@ -0,0 +1,299 @@
+import { expect } from 'chai';
+import { describe, it, beforeEach } from 'mocha';
+import proxyquire from 'proxyquire';
+import sinon from 'sinon';
+
+const jsrsasignStub = {
+ KJUR: {
+ jws: {
+ IntDate: {
+ get: sinon.stub(),
+ },
+ JWS: {
+ sign: sinon.stub(),
+ verify: sinon.stub(),
+ parse: sinon.stub(),
+ },
+ },
+ },
+};
+
+const { generateJWT, validateAndDecodeJWT } = proxyquire.noCallThru().load('./JWTHelper', {
+ jsrsasign: jsrsasignStub,
+});
+
+describe('JWTHelper', () => {
+ beforeEach(() => {
+ jsrsasignStub.KJUR.jws.IntDate.get.reset();
+ jsrsasignStub.KJUR.jws.JWS.sign.reset();
+ jsrsasignStub.KJUR.jws.JWS.verify.reset();
+ jsrsasignStub.KJUR.jws.JWS.parse.reset();
+ });
+
+ describe('generateJWT', () => {
+ it('should generate a JWT with the correct payload structure', () => {
+ const now = 1609459200;
+ const expiryDuration = 3600; // 1 hour in seconds
+ const expiryTime = now + expiryDuration;
+
+ jsrsasignStub.KJUR.jws.IntDate.get.callsFake((timeStr) => {
+ if (timeStr === 'now') return now;
+ if (timeStr === 'now + 1hour') return expiryTime;
+ return now;
+ });
+ jsrsasignStub.KJUR.jws.JWS.sign.returns('mocked.jwt.token');
+
+ const payload = { userId: 'user-123', roomId: 'room-456' };
+ const secret = 'test-secret';
+
+ const result = generateJWT(payload, secret);
+
+ expect(result).to.equal('mocked.jwt.token');
+ expect(jsrsasignStub.KJUR.jws.JWS.sign.calledOnce).to.be.true;
+
+ const signArgs = jsrsasignStub.KJUR.jws.JWS.sign.firstCall.args;
+ expect(signArgs[0]).to.equal('HS256');
+ expect(signArgs[1]).to.equal(JSON.stringify({ typ: 'JWT', alg: 'HS256' }));
+
+ const tokenPayload = JSON.parse(signArgs[2]);
+ expect(tokenPayload.iat).to.equal(now);
+ expect(tokenPayload.nbf).to.equal(now);
+ expect(tokenPayload.exp).to.equal(expiryTime);
+ expect(tokenPayload.aud).to.equal('RocketChat');
+ expect(tokenPayload.context).to.deep.equal(payload);
+
+ expect(signArgs[3]).to.deep.equal({ rstr: secret });
+ });
+
+ it('should include the provided payload in the context field', () => {
+ jsrsasignStub.KJUR.jws.IntDate.get.returns(1609459200);
+ jsrsasignStub.KJUR.jws.JWS.sign.returns('mocked.jwt.token');
+
+ const payload = { fileId: 'file-123', rid: 'room-123', userId: 'user-123' };
+ const secret = 'secret-key';
+
+ generateJWT(payload, secret);
+
+ const signArgs = jsrsasignStub.KJUR.jws.JWS.sign.firstCall.args;
+ const tokenPayload = JSON.parse(signArgs[2]);
+
+ expect(tokenPayload.context).to.deep.equal(payload);
+ });
+
+ it('should generate a JWT with custom audience when provided in options', () => {
+ jsrsasignStub.KJUR.jws.IntDate.get.returns(1609459200);
+ jsrsasignStub.KJUR.jws.JWS.sign.returns('mocked.jwt.token');
+
+ const payload = { userId: 'user-123' };
+ const secret = 'test-secret';
+ const customAudience = 'CustomApp';
+
+ generateJWT(payload, secret, { aud: customAudience });
+
+ const signArgs = jsrsasignStub.KJUR.jws.JWS.sign.firstCall.args;
+ const tokenPayload = JSON.parse(signArgs[2]);
+
+ expect(tokenPayload.aud).to.equal(customAudience);
+ });
+ });
+
+ describe('validateAndDecodeJWT', () => {
+ it('should return null if jwt is empty', () => {
+ const result = validateAndDecodeJWT('', 'secret');
+ expect(result).to.be.null;
+ });
+
+ it('should return null if jwt is null', () => {
+ const result = validateAndDecodeJWT(null as any, 'secret');
+ expect(result).to.be.null;
+ });
+
+ it('should return null if secret is empty', () => {
+ const result = validateAndDecodeJWT('some.jwt.token', '');
+ expect(result).to.be.null;
+ });
+
+ it('should return null if secret is null', () => {
+ const result = validateAndDecodeJWT('some.jwt.token', null as any);
+ expect(result).to.be.null;
+ });
+
+ it('should return null if signature is invalid', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(false);
+
+ const result = validateAndDecodeJWT('invalid.jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ expect(jsrsasignStub.KJUR.jws.JWS.verify.calledOnce).to.be.true;
+ expect(jsrsasignStub.KJUR.jws.JWS.verify.calledWith('invalid.jwt.token', 'secret', ['HS256'])).to.be.true;
+ });
+
+ it('should return null if token is expired', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: {
+ exp: Math.floor(Date.now() / 1000) - 3600, // Expired 1 hour ago
+ nbf: Math.floor(Date.now() / 1000) - 7200,
+ aud: 'RocketChat',
+ context: { userId: 'user-123' },
+ },
+ });
+
+ const result = validateAndDecodeJWT('expired.jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ });
+
+ it('should return null if nbf (not before) is in the future', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: {
+ exp: Math.floor(Date.now() / 1000) + 7200,
+ nbf: Math.floor(Date.now() / 1000) + 3600, // Not valid until 1 hour from now
+ aud: 'RocketChat',
+ context: { userId: 'user-123' },
+ },
+ });
+
+ const result = validateAndDecodeJWT('future.jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ });
+
+ it('should return null if audience is not RocketChat', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: {
+ exp: Math.floor(Date.now() / 1000) + 3600,
+ nbf: Math.floor(Date.now() / 1000) - 60,
+ aud: 'WrongAudience',
+ context: { userId: 'user-123' },
+ },
+ });
+
+ const result = validateAndDecodeJWT('wrong-audience.jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ });
+
+ it('should return the context payload for a valid token with correct signature, timestamps, and audience', () => {
+ const contextPayload = { userId: 'user-123', fileId: 'file-456', rid: 'room-789' };
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: {
+ exp: Math.floor(Date.now() / 1000) + 3600, // Expires in 1 hour
+ nbf: Math.floor(Date.now() / 1000) - 60, // Valid since 1 minute ago
+ aud: 'RocketChat',
+ context: contextPayload,
+ },
+ });
+
+ const result = validateAndDecodeJWT('valid.jwt.token', 'secret');
+
+ expect(result).to.deep.equal(contextPayload);
+ expect(jsrsasignStub.KJUR.jws.JWS.verify.calledOnce).to.be.true;
+ expect(jsrsasignStub.KJUR.jws.JWS.parse.calledOnce).to.be.true;
+ });
+
+ it('should return the context payload if exp and nbf are not provided', () => {
+ const contextPayload = { userId: 'user-123' };
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: {
+ aud: 'RocketChat',
+ context: contextPayload,
+ },
+ });
+
+ const result = validateAndDecodeJWT('valid.jwt.token', 'secret');
+
+ expect(result).to.deep.equal(contextPayload);
+ });
+
+ it('should return null if token cannot be parsed', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.throws(new Error('Parse error'));
+
+ const result = validateAndDecodeJWT('malformed.jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ });
+
+ it('should return null if verification throws an error', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.throws(new Error('Verification error'));
+
+ const result = validateAndDecodeJWT('error.jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ });
+
+ it('should validate and decode token with custom audience when provided in options', () => {
+ const contextPayload = { userId: 'user-123' };
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: {
+ exp: Math.floor(Date.now() / 1000) + 3600,
+ nbf: Math.floor(Date.now() / 1000) - 60,
+ aud: 'CustomApp',
+ context: contextPayload,
+ },
+ });
+
+ const result = validateAndDecodeJWT('valid.jwt.token', 'secret', { aud: 'CustomApp' });
+
+ expect(result).to.deep.equal(contextPayload);
+ });
+
+ it('should return null if custom audience does not match token audience', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: {
+ exp: Math.floor(Date.now() / 1000) + 3600,
+ nbf: Math.floor(Date.now() / 1000) - 60,
+ aud: 'CustomApp',
+ context: { userId: 'user-123' },
+ },
+ });
+
+ const result = validateAndDecodeJWT('valid.jwt.token', 'secret', { aud: 'DifferentApp' });
+
+ expect(result).to.be.null;
+ });
+
+ it('should return null if payloadObj is null', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: null,
+ });
+
+ const result = validateAndDecodeJWT('jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ });
+
+ it('should return null if context is missing from payload', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns({
+ payloadObj: {
+ iat: 1609459200,
+ nbf: 1609459200,
+ exp: 1609462800,
+ aud: 'RocketChat',
+ },
+ });
+
+ const result = validateAndDecodeJWT('jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ });
+
+ it('should return null if parse returns undefined', () => {
+ jsrsasignStub.KJUR.jws.JWS.verify.returns(true);
+ jsrsasignStub.KJUR.jws.JWS.parse.returns(undefined);
+
+ const result = validateAndDecodeJWT('jwt.token', 'secret');
+
+ expect(result).to.be.null;
+ });
+ });
+});
diff --git a/apps/meteor/app/utils/server/lib/JWTHelper.ts b/apps/meteor/app/utils/server/lib/JWTHelper.ts
index efd016389ccc5..1ad727a7ac06e 100644
--- a/apps/meteor/app/utils/server/lib/JWTHelper.ts
+++ b/apps/meteor/app/utils/server/lib/JWTHelper.ts
@@ -5,12 +5,12 @@ const HEADER = {
alg: 'HS256',
};
-export const generateJWT = (payload: Record, secret: string): string => {
+export const generateJWT = (payload: Record, secret: string, options?: { aud?: string }): string => {
const tokenPayload = {
iat: jsr.KJUR.jws.IntDate.get('now'),
nbf: jsr.KJUR.jws.IntDate.get('now'),
exp: jsr.KJUR.jws.IntDate.get('now + 1hour'),
- aud: 'RocketChat',
+ aud: options?.aud || 'RocketChat',
context: payload,
};
@@ -19,10 +19,38 @@ export const generateJWT = (payload: Record, secret: string): strin
return jsr.KJUR.jws.JWS.sign(HEADER.alg, header, JSON.stringify(tokenPayload), { rstr: secret });
};
-export const isValidJWT = (jwt: string, secret: string): boolean => {
+export const validateAndDecodeJWT = (jwt: string, secret: string, options?: { aud?: string }): Record | null => {
+ if (!jwt || !secret) {
+ return null;
+ }
try {
- return jsr.KJUR.jws.JWS.verify(jwt, secret, [HEADER.alg]);
+ const isSignatureValid = jsr.KJUR.jws.JWS.verify(jwt, secret, [HEADER.alg]);
+ if (!isSignatureValid) {
+ return null;
+ }
+
+ const decoded = jsr.KJUR.jws.JWS.parse(jwt);
+ if (!decoded?.payloadObj) {
+ return null;
+ }
+
+ const payload = decoded.payloadObj as Record;
+
+ const now = Math.floor(Date.now() / 1000);
+ if (typeof payload.exp === 'number' && now >= payload.exp) {
+ return null;
+ }
+
+ if (typeof payload.nbf === 'number' && now < payload.nbf) {
+ return null;
+ }
+
+ if (payload.aud !== (options?.aud || 'RocketChat')) {
+ return null;
+ }
+
+ return payload.context || null;
} catch (error) {
- return false;
+ return null;
}
};
diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md
index 5db186ed9791a..d6352bb648ffa 100644
--- a/apps/meteor/ee/server/services/CHANGELOG.md
+++ b/apps/meteor/ee/server/services/CHANGELOG.md
@@ -1,5 +1,19 @@
# rocketchat-services
+## 2.0.40
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/network-broker@0.2.28
+
+
## 2.0.39
### Patch Changes
diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json
index 2001286069fd1..11ccc0e3c457f 100644
--- a/apps/meteor/ee/server/services/package.json
+++ b/apps/meteor/ee/server/services/package.json
@@ -1,7 +1,7 @@
{
"name": "rocketchat-services",
"private": true,
- "version": "2.0.39",
+ "version": "2.0.40",
"description": "Rocket.Chat Authorization service",
"main": "index.js",
"scripts": {
diff --git a/apps/meteor/package.json b/apps/meteor/package.json
index cede6244f7993..a9b3bbaab48b2 100644
--- a/apps/meteor/package.json
+++ b/apps/meteor/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/meteor",
- "version": "8.0.1",
+ "version": "8.0.2",
"private": true,
"description": "The Ultimate Open Source WebChat Platform",
"keywords": [
diff --git a/apps/meteor/server/settings/file-upload.ts b/apps/meteor/server/settings/file-upload.ts
index 90032266651c8..90e1ba0a5a085 100644
--- a/apps/meteor/server/settings/file-upload.ts
+++ b/apps/meteor/server/settings/file-upload.ts
@@ -69,6 +69,7 @@ export const createFileUploadSettings = () =>
type: 'boolean',
i18nLabel: 'FileUpload_Enable_json_web_token_for_files',
i18nDescription: 'FileUpload_Enable_json_web_token_for_files_description',
+ alert: 'FileUpload_Enable_json_web_token_for_files_Alert',
enableQuery: {
_id: 'FileUpload_ProtectFiles',
value: true,
diff --git a/apps/meteor/tests/end-to-end/api/incoming-integrations.ts b/apps/meteor/tests/end-to-end/api/incoming-integrations.ts
index bdc1691f79869..3bad5551f3cc1 100644
--- a/apps/meteor/tests/end-to-end/api/incoming-integrations.ts
+++ b/apps/meteor/tests/end-to-end/api/incoming-integrations.ts
@@ -473,6 +473,53 @@ describe('[Incoming Integrations]', () => {
await removeIntegration(withScript._id, 'incoming');
});
+
+ describe('With manage-own-incoming-integrations permission', () => {
+ let integrationId: string;
+
+ before(async () => {
+ await updatePermission('manage-own-incoming-integrations', ['admin']);
+ });
+
+ after(async () => {
+ if (integrationId) {
+ await removeIntegration(integrationId, 'incoming');
+ }
+ });
+
+ it('should return scriptCompiled and no scriptError', async () => {
+ const res = await request
+ .post(api('integrations.create'))
+ .set(credentials)
+ .send({
+ type: 'webhook-incoming',
+ name: 'Incoming test',
+ enabled: true,
+ alias: 'test',
+ username: 'rocket.cat',
+ scriptEnabled: true,
+ scriptEngine: 'isolated-vm',
+ channel: '#general',
+ script: `
+ class Script {
+ process_incoming_request({ request }) {
+ return {
+ content:{
+ text: request.content.text
+ }
+ };
+ }
+ }
+ `,
+ })
+ .expect(200);
+
+ expect(res.body.integration).to.have.property('scriptCompiled');
+ expect(res.body.integration).to.not.have.property('scriptError');
+
+ integrationId = res.body.integration._id;
+ });
+ });
});
describe('[/integrations.history]', () => {
diff --git a/apps/meteor/tests/end-to-end/api/users.ts b/apps/meteor/tests/end-to-end/api/users.ts
index f71efe50402a0..f895347b9819e 100644
--- a/apps/meteor/tests/end-to-end/api/users.ts
+++ b/apps/meteor/tests/end-to-end/api/users.ts
@@ -1092,7 +1092,6 @@ describe('[Users]', () => {
.expect((res) => {
expect(res.body).to.have.property('success', true);
expect(res.body).to.have.nested.property('user.services.password');
- expect(res.body).to.have.nested.property('user.services.resume');
})
.end(done);
});
@@ -1126,6 +1125,25 @@ describe('[Users]', () => {
await deleteUser(user);
});
+
+ it("should NOT return sensitive fields on services even though it's the same user requesting its info", (done) => {
+ void request
+ .get(api('users.info'))
+ .set(credentials)
+ .query({
+ userId: credentials['X-User-Id'],
+ })
+ .expect('Content-Type', 'application/json')
+ .expect(200)
+ .expect((res) => {
+ expect(res.body).to.have.property('success', true);
+ expect(res.body).to.have.nested.property('user.services.password').and.to.be.a('boolean');
+ expect(res.body).to.not.have.nested.property('user.services.email');
+ expect(res.body).to.not.have.nested.property('user.services.resume');
+ expect(res.body).to.not.have.nested.property('user.services.passwordHistory');
+ })
+ .end(done);
+ });
});
describe('[/users.getPresence]', () => {
it("should query a user's presence by userId", (done) => {
@@ -2747,6 +2765,27 @@ describe('[Users]', () => {
.end(done);
});
+ it("should not include sensitive data on the 'services' object from the response", (done) => {
+ void request
+ .post(api('users.updateOwnBasicInfo'))
+ .set(userCredentials)
+ .send({
+ data: {
+ username: editedUsername,
+ },
+ })
+ .expect('Content-Type', 'application/json')
+ .expect(200)
+ .expect((res) => {
+ const { user } = res.body;
+ expect(res.body).to.have.property('success', true);
+ expect(user.services).to.not.have.property('passwordHistory');
+ expect(user.services).to.not.have.property('email');
+ expect(user.services.password).to.have.property('exists').that.is.a('boolean');
+ })
+ .end(done);
+ });
+
function failUpdateUserOwnBasicInfo(name: string) {
it(`should not update an user's basic info if the new username is the reserved word ${name}`, (done) => {
void request
diff --git a/apps/uikit-playground/CHANGELOG.md b/apps/uikit-playground/CHANGELOG.md
index fe050611d29c0..342a702832f0d 100644
--- a/apps/uikit-playground/CHANGELOG.md
+++ b/apps/uikit-playground/CHANGELOG.md
@@ -1,5 +1,17 @@
# @rocket.chat/uikit-playground
+## 0.7.5
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/fuselage-ui-kit@26.0.2
+ - @rocket.chat/ui-avatar@22.0.2
+ - @rocket.chat/ui-contexts@26.0.2
+
+
## 0.7.4
### Patch Changes
diff --git a/apps/uikit-playground/package.json b/apps/uikit-playground/package.json
index 3cb32c41b78a6..ffd7efa8bebf7 100644
--- a/apps/uikit-playground/package.json
+++ b/apps/uikit-playground/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/uikit-playground",
- "version": "0.7.4",
+ "version": "0.7.5",
"private": true,
"type": "module",
"scripts": {
diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md
index 177cdf9abb522..0becb2904555e 100644
--- a/ee/apps/account-service/CHANGELOG.md
+++ b/ee/apps/account-service/CHANGELOG.md
@@ -1,5 +1,19 @@
# @rocket.chat/account-service
+## 0.4.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/network-broker@0.2.28
+
+
## 0.4.48
### Patch Changes
diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json
index 03cad9e93fc0d..3adea39f2d0e5 100644
--- a/ee/apps/account-service/package.json
+++ b/ee/apps/account-service/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/account-service",
- "version": "0.4.48",
+ "version": "0.4.49",
"private": true,
"description": "Rocket.Chat Account service",
"keywords": [
diff --git a/ee/apps/account-service/src/Account.ts b/ee/apps/account-service/src/Account.ts
index 626949cae9c47..ab95333c991f7 100644
--- a/ee/apps/account-service/src/Account.ts
+++ b/ee/apps/account-service/src/Account.ts
@@ -4,7 +4,6 @@ import { Settings } from '@rocket.chat/models';
import { getLoginExpirationInDays } from '@rocket.chat/tools';
import { loginViaResume } from './lib/loginViaResume';
-import { loginViaUsername } from './lib/loginViaUsername';
import { removeSession } from './lib/removeSession';
export class Account extends ServiceClass implements IAccount {
@@ -28,15 +27,11 @@ export class Account extends ServiceClass implements IAccount {
});
}
- async login({ resume, user, password }: { resume: string; user: { username: string }; password: string }): Promise {
+ async login({ resume }: { resume: string }): Promise {
if (resume) {
return loginViaResume(resume, this.loginExpiration);
}
- if (user && password) {
- return loginViaUsername(user, password, this.loginExpiration);
- }
-
return false;
}
diff --git a/ee/apps/account-service/src/lib/loginViaResume.ts b/ee/apps/account-service/src/lib/loginViaResume.ts
index 81a6d17764f43..dfdb21a8d8eee 100644
--- a/ee/apps/account-service/src/lib/loginViaResume.ts
+++ b/ee/apps/account-service/src/lib/loginViaResume.ts
@@ -11,6 +11,7 @@ export async function loginViaResume(resume: string, loginExpiration: number): P
const user = await Users.findOne(
{
'services.resume.loginTokens.hashedToken': hashedToken,
+ 'active': true,
},
{
projection: {
diff --git a/ee/apps/account-service/src/lib/loginViaUsername.ts b/ee/apps/account-service/src/lib/loginViaUsername.ts
deleted file mode 100644
index 57f2cbb31ec08..0000000000000
--- a/ee/apps/account-service/src/lib/loginViaUsername.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import type { ILoginResult } from '@rocket.chat/core-services';
-import type { IUser } from '@rocket.chat/core-typings';
-import { Users } from '@rocket.chat/models';
-
-import { saveSession } from './saveSession';
-import { _generateStampedLoginToken, _hashStampedToken, _tokenExpiration, validatePassword } from './utils';
-
-export async function loginViaUsername(
- { username }: { username: string },
- password: string,
- loginExpiration: number,
-): Promise {
- const user = await Users.findOne({ username }, { projection: { 'services.password.bcrypt': 1 } });
- if (!user) {
- return false;
- }
-
- const valid = user.services?.password?.bcrypt && (await validatePassword(password, user.services.password.bcrypt));
- if (!valid) {
- return false;
- }
-
- const newToken = _generateStampedLoginToken();
-
- const hashedToken = _hashStampedToken(newToken);
-
- await saveSession(user._id, hashedToken);
-
- return {
- uid: user._id,
- token: newToken.token,
- hashedToken: hashedToken.hashedToken,
- tokenExpires: _tokenExpiration(newToken.when, loginExpiration),
- type: 'password',
- };
-}
diff --git a/ee/apps/account-service/tsconfig.json b/ee/apps/account-service/tsconfig.json
index bd731186d92b0..2b1d9759d36d8 100644
--- a/ee/apps/account-service/tsconfig.json
+++ b/ee/apps/account-service/tsconfig.json
@@ -12,7 +12,8 @@
"outDir": "./dist/ee/apps/account-service/src",
},
- "files": ["./src/service.ts"],
- "include": ["../../../apps/meteor/definition/externals/meteor"],
+ "include":
+ ["./src/**/*.ts",
+ "../../../apps/meteor/definition/externals/meteor"],
"exclude": ["./dist"]
}
diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md
index 598bccf3dbe19..05c7d794c505c 100644
--- a/ee/apps/authorization-service/CHANGELOG.md
+++ b/ee/apps/authorization-service/CHANGELOG.md
@@ -1,5 +1,20 @@
# @rocket.chat/authorization-service
+## 0.5.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/abac@0.1.2
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/network-broker@0.2.28
+
+
## 0.5.1
### Patch Changes
diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json
index 2cb54776a206d..92d5e590cb756 100644
--- a/ee/apps/authorization-service/package.json
+++ b/ee/apps/authorization-service/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/authorization-service",
- "version": "0.5.1",
+ "version": "0.5.2",
"private": true,
"description": "Rocket.Chat Authorization service",
"keywords": [
diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md
index ad6087554ead0..ec5a9ab6964d8 100644
--- a/ee/apps/ddp-streamer/CHANGELOG.md
+++ b/ee/apps/ddp-streamer/CHANGELOG.md
@@ -1,5 +1,20 @@
# @rocket.chat/ddp-streamer
+## 0.3.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/network-broker@0.2.28
+ - @rocket.chat/instance-status@0.1.49
+
+
## 0.3.48
### Patch Changes
diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json
index 8c7b8f8e4689c..bd2b11410c255 100644
--- a/ee/apps/ddp-streamer/package.json
+++ b/ee/apps/ddp-streamer/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ddp-streamer",
- "version": "0.3.48",
+ "version": "0.3.49",
"private": true,
"description": "Rocket.Chat DDP-Streamer service",
"keywords": [
diff --git a/ee/apps/ddp-streamer/src/configureServer.ts b/ee/apps/ddp-streamer/src/configureServer.ts
index cbdd516b6f862..ee234250290a9 100644
--- a/ee/apps/ddp-streamer/src/configureServer.ts
+++ b/ee/apps/ddp-streamer/src/configureServer.ts
@@ -65,9 +65,9 @@ server.publish(autoUpdateCollection, function () {
});
server.methods({
- async 'login'({ resume, user, password }: { resume: string; user: { username: string }; password: string }) {
+ async 'login'({ resume }: { resume: string }) {
try {
- const result = await Account.login({ resume, user, password });
+ const result = await Account.login({ resume });
if (!result) {
throw new MeteorError(403, "You've been logged out by the server. Please log in again");
}
diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md
index 910541eb704a3..f678afca012d3 100644
--- a/ee/apps/omnichannel-transcript/CHANGELOG.md
+++ b/ee/apps/omnichannel-transcript/CHANGELOG.md
@@ -1,5 +1,20 @@
# @rocket.chat/omnichannel-transcript
+## 0.4.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/omnichannel-services@0.3.46
+ - @rocket.chat/pdf-worker@0.3.28
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/network-broker@0.2.28
+
+
## 0.4.48
### Patch Changes
diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json
index c315333fbd861..6a70d03d787b7 100644
--- a/ee/apps/omnichannel-transcript/package.json
+++ b/ee/apps/omnichannel-transcript/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/omnichannel-transcript",
- "version": "0.4.48",
+ "version": "0.4.49",
"private": true,
"description": "Rocket.Chat service",
"keywords": [
diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md
index 894bab5fb17b6..fded02d6161be 100644
--- a/ee/apps/presence-service/CHANGELOG.md
+++ b/ee/apps/presence-service/CHANGELOG.md
@@ -1,5 +1,19 @@
# @rocket.chat/presence-service
+## 0.4.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/presence@0.2.49
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/network-broker@0.2.28
+
+
## 0.4.48
### Patch Changes
diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json
index 2f9d5545b6699..354393fe36a91 100644
--- a/ee/apps/presence-service/package.json
+++ b/ee/apps/presence-service/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/presence-service",
- "version": "0.4.48",
+ "version": "0.4.49",
"private": true,
"description": "Rocket.Chat Presence service",
"keywords": [
diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md
index 38cdae66008e7..fb9c0dc5924f3 100644
--- a/ee/apps/queue-worker/CHANGELOG.md
+++ b/ee/apps/queue-worker/CHANGELOG.md
@@ -1,5 +1,19 @@
# @rocket.chat/queue-worker
+## 0.4.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/omnichannel-services@0.3.46
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/network-broker@0.2.28
+
+
## 0.4.48
### Patch Changes
diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json
index 402c0c86209f2..af7485feba0d4 100644
--- a/ee/apps/queue-worker/package.json
+++ b/ee/apps/queue-worker/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/queue-worker",
- "version": "0.4.48",
+ "version": "0.4.49",
"private": true,
"description": "Rocket.Chat service",
"keywords": [
diff --git a/ee/packages/abac/CHANGELOG.md b/ee/packages/abac/CHANGELOG.md
index 29d63634f28c0..34908b856a883 100644
--- a/ee/packages/abac/CHANGELOG.md
+++ b/ee/packages/abac/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/abac
+## 0.1.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/models@2.0.2
+
+
## 0.1.1
### Patch Changes
diff --git a/ee/packages/abac/package.json b/ee/packages/abac/package.json
index f8529a4e36b94..43b7bc53da5ce 100644
--- a/ee/packages/abac/package.json
+++ b/ee/packages/abac/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/abac",
- "version": "0.1.1",
+ "version": "0.1.2",
"private": true,
"description": "Rocket.Chat - Attribute Based Access Control (ABAC) support utilities",
"main": "./dist/index.js",
diff --git a/ee/packages/federation-matrix/CHANGELOG.md b/ee/packages/federation-matrix/CHANGELOG.md
index d010c6e1e4836..ee81133c1d15d 100644
--- a/ee/packages/federation-matrix/CHANGELOG.md
+++ b/ee/packages/federation-matrix/CHANGELOG.md
@@ -1,5 +1,20 @@
# @rocket.chat/federation-matrix
+## 0.0.11
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/license@1.1.9
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/http-router@7.9.16
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/network-broker@0.2.28
+
+
## 0.0.10
### Patch Changes
diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json
index c68b0e786d27f..d77299c9ae5b4 100644
--- a/ee/packages/federation-matrix/package.json
+++ b/ee/packages/federation-matrix/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/federation-matrix",
- "version": "0.0.10",
+ "version": "0.0.11",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/ee/packages/license/CHANGELOG.md b/ee/packages/license/CHANGELOG.md
index 7d07bb359a009..380ffa2be5adc 100644
--- a/ee/packages/license/CHANGELOG.md
+++ b/ee/packages/license/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/license
+## 1.1.9
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+
+
## 1.1.8
### Patch Changes
diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json
index 5dc99b1c296e7..572057306d0f6 100644
--- a/ee/packages/license/package.json
+++ b/ee/packages/license/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/license",
- "version": "1.1.8",
+ "version": "1.1.9",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/ee/packages/media-calls/CHANGELOG.md b/ee/packages/media-calls/CHANGELOG.md
index 9f0ad6ba42b4e..fa604ac8e59b7 100644
--- a/ee/packages/media-calls/CHANGELOG.md
+++ b/ee/packages/media-calls/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/media-calls
+## 0.2.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/models@2.0.2
+
+
## 0.2.1
### Patch Changes
diff --git a/ee/packages/media-calls/package.json b/ee/packages/media-calls/package.json
index 1cd56f6712f1c..db19fdf5d0950 100644
--- a/ee/packages/media-calls/package.json
+++ b/ee/packages/media-calls/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/media-calls",
- "version": "0.2.1",
+ "version": "0.2.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/ee/packages/network-broker/CHANGELOG.md b/ee/packages/network-broker/CHANGELOG.md
index a9816c43f95cb..623ac085f91c3 100644
--- a/ee/packages/network-broker/CHANGELOG.md
+++ b/ee/packages/network-broker/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/network-broker
+## 0.2.28
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-services@0.12.2
+
+
## 0.2.27
### Patch Changes
diff --git a/ee/packages/network-broker/package.json b/ee/packages/network-broker/package.json
index 4f06f38f97b39..0f0fc1c354b81 100644
--- a/ee/packages/network-broker/package.json
+++ b/ee/packages/network-broker/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/network-broker",
- "version": "0.2.27",
+ "version": "0.2.28",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/ee/packages/omni-core-ee/CHANGELOG.md b/ee/packages/omni-core-ee/CHANGELOG.md
index 6ab182e69cc9b..6a322046f0d36 100644
--- a/ee/packages/omni-core-ee/CHANGELOG.md
+++ b/ee/packages/omni-core-ee/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/omni-core-ee
+## 0.0.14
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/models@2.0.2
+ - @rocket.chat/omni-core@0.0.14
+
+
## 0.0.13
### Patch Changes
diff --git a/ee/packages/omni-core-ee/package.json b/ee/packages/omni-core-ee/package.json
index 122c731086bca..4cb92780ccfeb 100644
--- a/ee/packages/omni-core-ee/package.json
+++ b/ee/packages/omni-core-ee/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/omni-core-ee",
- "version": "0.0.13",
+ "version": "0.0.14",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md
index c37e4b7630b69..abf2ac99b7786 100644
--- a/ee/packages/omnichannel-services/CHANGELOG.md
+++ b/ee/packages/omnichannel-services/CHANGELOG.md
@@ -1,5 +1,20 @@
# @rocket.chat/omnichannel-services
+## 0.3.46
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/pdf-worker@0.3.28
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/message-types@0.1.0
+ - @rocket.chat/model-typings@2.0.2
+ - @rocket.chat/models@2.0.2
+
+
## 0.3.45
### Patch Changes
diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json
index 8c9a8a3c05e29..08ecff863e917 100644
--- a/ee/packages/omnichannel-services/package.json
+++ b/ee/packages/omnichannel-services/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/omnichannel-services",
- "version": "0.3.45",
+ "version": "0.3.46",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md
index 06b2a1554c91b..4a4f2d9fde0c3 100644
--- a/ee/packages/pdf-worker/CHANGELOG.md
+++ b/ee/packages/pdf-worker/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/pdf-worker
+## 0.3.28
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+
+
## 0.3.27
### Patch Changes
diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json
index c9e48b3f850f4..abfb177ad9d96 100644
--- a/ee/packages/pdf-worker/package.json
+++ b/ee/packages/pdf-worker/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/pdf-worker",
- "version": "0.3.27",
+ "version": "0.3.28",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md
index b814b7ad488a4..6a19eea4283bf 100644
--- a/ee/packages/presence/CHANGELOG.md
+++ b/ee/packages/presence/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/presence
+## 0.2.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/core-services@0.12.2
+ - @rocket.chat/models@2.0.2
+
+
## 0.2.48
### Patch Changes
diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json
index 2ecacf88a24ef..f8c93eac12b81 100644
--- a/ee/packages/presence/package.json
+++ b/ee/packages/presence/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/presence",
- "version": "0.2.48",
+ "version": "0.2.49",
"private": true,
"main": "./dist/Presence.js",
"typings": "./dist/Presence.d.ts",
diff --git a/package.json b/package.json
index 25d9be464d045..af89e9263c34d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "rocket.chat",
- "version": "8.0.1",
+ "version": "8.0.2",
"private": true,
"description": "Rocket.Chat Monorepo",
"homepage": "https://github.com/RocketChat/Rocket.Chat#readme",
diff --git a/packages/api-client/CHANGELOG.md b/packages/api-client/CHANGELOG.md
index 7efc39f4fb9e9..c6cb4cf4ef503 100644
--- a/packages/api-client/CHANGELOG.md
+++ b/packages/api-client/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/api-client
+## 0.2.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+
+
## 0.2.48
### Patch Changes
diff --git a/packages/api-client/package.json b/packages/api-client/package.json
index 59111f80772a9..94ec9278df821 100644
--- a/packages/api-client/package.json
+++ b/packages/api-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/api-client",
- "version": "0.2.48",
+ "version": "0.2.49",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"files": [
diff --git a/packages/apps/CHANGELOG.md b/packages/apps/CHANGELOG.md
index 6c610a9c85376..391d37c58a577 100644
--- a/packages/apps/CHANGELOG.md
+++ b/packages/apps/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/apps
+## 0.6.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/model-typings@2.0.2
+
+
## 0.6.1
### Patch Changes
diff --git a/packages/apps/package.json b/packages/apps/package.json
index 8bd753bed1209..28f8848cbdfaf 100644
--- a/packages/apps/package.json
+++ b/packages/apps/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/apps",
- "version": "0.6.1",
+ "version": "0.6.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md
index 7010daa460611..d78e071707fdf 100644
--- a/packages/core-services/CHANGELOG.md
+++ b/packages/core-services/CHANGELOG.md
@@ -1,5 +1,17 @@
# @rocket.chat/core-services
+## 0.12.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/http-router@7.9.16
+ - @rocket.chat/models@2.0.2
+
+
## 0.12.1
### Patch Changes
diff --git a/packages/core-services/package.json b/packages/core-services/package.json
index c341cba95e2b0..f3fcd679d2f1d 100644
--- a/packages/core-services/package.json
+++ b/packages/core-services/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/core-services",
- "version": "0.12.1",
+ "version": "0.12.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/core-services/src/types/IAccount.ts b/packages/core-services/src/types/IAccount.ts
index 4242c4d39c2bb..bb6e5feec2a78 100644
--- a/packages/core-services/src/types/IAccount.ts
+++ b/packages/core-services/src/types/IAccount.ts
@@ -5,10 +5,10 @@ export interface ILoginResult {
token: string;
hashedToken: string;
tokenExpires?: Date;
- type: 'resume' | 'password';
+ type: 'resume';
}
export interface IAccount extends IServiceClass {
- login({ resume, user, password }: { resume: string; user: { username: string }; password: string }): Promise;
+ login({ resume }: { resume: string }): Promise;
logout({ userId, token }: { userId: string; token: string }): Promise;
}
diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md
index 406ffd20e0caf..60b23305db8b6 100644
--- a/packages/core-typings/CHANGELOG.md
+++ b/packages/core-typings/CHANGELOG.md
@@ -1,5 +1,7 @@
# @rocket.chat/core-typings
+## 8.0.2
+
## 8.0.1
## 8.0.0
diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json
index 7aac758209d47..59b625deb0823 100644
--- a/packages/core-typings/package.json
+++ b/packages/core-typings/package.json
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package",
"name": "@rocket.chat/core-typings",
- "version": "8.0.1",
+ "version": "8.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md
index af402214027c6..11653afe88a34 100644
--- a/packages/cron/CHANGELOG.md
+++ b/packages/cron/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/cron
+## 0.1.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/models@2.0.2
+
+
## 0.1.48
### Patch Changes
diff --git a/packages/cron/package.json b/packages/cron/package.json
index c209efe343466..68d04e5223ab9 100644
--- a/packages/cron/package.json
+++ b/packages/cron/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/cron",
- "version": "0.1.48",
+ "version": "0.1.49",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/ddp-client/CHANGELOG.md b/packages/ddp-client/CHANGELOG.md
index 6720a743245b5..d2b85b9aec037 100644
--- a/packages/ddp-client/CHANGELOG.md
+++ b/packages/ddp-client/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/ddp-client
+## 1.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/api-client@0.2.49
+
+
## 1.0.1
### Patch Changes
diff --git a/packages/ddp-client/package.json b/packages/ddp-client/package.json
index 10cdc3ef93548..f946ef6759de8 100644
--- a/packages/ddp-client/package.json
+++ b/packages/ddp-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ddp-client",
- "version": "1.0.1",
+ "version": "1.0.2",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"files": [
diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md
index 4edd226f7baa2..b81240ca69f54 100644
--- a/packages/fuselage-ui-kit/CHANGELOG.md
+++ b/packages/fuselage-ui-kit/CHANGELOG.md
@@ -1,5 +1,18 @@
# Change Log
+## 26.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/gazzodown@26.0.2
+ - @rocket.chat/ui-avatar@22.0.2
+ - @rocket.chat/ui-contexts@26.0.2
+ - @rocket.chat/ui-video-conf@26.0.2
+
+
## 26.0.1
### Patch Changes
diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json
index 81a85a238d2c1..1c77052ed4497 100644
--- a/packages/fuselage-ui-kit/package.json
+++ b/packages/fuselage-ui-kit/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/fuselage-ui-kit",
- "version": "26.0.1",
+ "version": "26.0.2",
"private": true,
"description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system",
"homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/",
diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md
index 807a4fac47deb..3774a50cb3e99 100644
--- a/packages/gazzodown/CHANGELOG.md
+++ b/packages/gazzodown/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/gazzodown
+## 26.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/ui-client@26.0.2
+ - @rocket.chat/ui-contexts@26.0.2
+
+
## 26.0.1
### Patch Changes
diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json
index 65c33ce585e06..0926436a2d468 100644
--- a/packages/gazzodown/package.json
+++ b/packages/gazzodown/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/gazzodown",
- "version": "26.0.1",
+ "version": "26.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/http-router/CHANGELOG.md b/packages/http-router/CHANGELOG.md
index 0b74db405fcef..214d8738d79ff 100644
--- a/packages/http-router/CHANGELOG.md
+++ b/packages/http-router/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/http-router
+## 7.9.16
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+
+
## 7.9.15
### Patch Changes
diff --git a/packages/http-router/package.json b/packages/http-router/package.json
index 9ed86a3403025..a65323c453c68 100644
--- a/packages/http-router/package.json
+++ b/packages/http-router/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/http-router",
- "version": "7.9.15",
+ "version": "7.9.16",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json
index 82a284c3d1f88..7c5337ee5bf43 100644
--- a/packages/i18n/src/locales/en.i18n.json
+++ b/packages/i18n/src/locales/en.i18n.json
@@ -2263,6 +2263,7 @@
"FileUpload_Disabled": "File uploads are disabled.",
"FileUpload_Enable_json_web_token_for_files": "Enable Json Web Tokens protection to file uploads",
"FileUpload_Enable_json_web_token_for_files_description": "Appends a JWT to uploaded files urls",
+ "FileUpload_Enable_json_web_token_for_files_Alert": "This option only takes effect when a JWT secret is configured. If \"JWT secret for files\" is left empty, no token will be generated and JWT file protection will not be applied.",
"FileUpload_Enabled": "File Uploads Enabled",
"FileUpload_Enabled_Direct": "File Uploads Enabled in Direct Messages ",
"FileUpload_Error": "File Upload Error",
diff --git a/packages/i18n/src/locales/es.i18n.json b/packages/i18n/src/locales/es.i18n.json
index fc3b6a80cd946..79788b65b2ba5 100644
--- a/packages/i18n/src/locales/es.i18n.json
+++ b/packages/i18n/src/locales/es.i18n.json
@@ -1586,6 +1586,7 @@
"FileUpload_Disabled": "La subida de archivos está deshabilitada",
"FileUpload_Enable_json_web_token_for_files": "Habilitar protección de tokens web Json para subidas de archivos",
"FileUpload_Enable_json_web_token_for_files_description": "Añade un token web Json a las URL de los archivos subidos",
+ "FileUpload_Enable_json_web_token_for_files_Alert": "Esta opción solo tiene efecto cuando se configura un secreto JWT. Si el campo \"Secreto JWT para archivos\" está vacío, no se generará ningún token y la protección JWT de archivos no se aplicará.",
"FileUpload_Enabled": "Habilitar subidas de archivos",
"FileUpload_Enabled_Direct": "Subidas de archivos habilitadas en mensajes directos",
"FileUpload_Error": "Error de subida de archivo",
diff --git a/packages/i18n/src/locales/fr.i18n.json b/packages/i18n/src/locales/fr.i18n.json
index 8e7f46368f9e5..4efcd1a1df8fe 100644
--- a/packages/i18n/src/locales/fr.i18n.json
+++ b/packages/i18n/src/locales/fr.i18n.json
@@ -1556,6 +1556,7 @@
"FileUpload_Disabled": "Le chargement de fichiers est désactivé.",
"FileUpload_Enable_json_web_token_for_files": "Activer la protection des jetons Web JSON pour le chargement de fichiers",
"FileUpload_Enable_json_web_token_for_files_description": "Ajoute un jeton Web JSON aux URL des fichiers chargés",
+ "FileUpload_Enable_json_web_token_for_files_Alert": "Cette option n'a d'effet que si un secret JWT est configuré. Si le champ \"Secret JWT pour les fichiers\" est vide, aucun jeton ne sera généré et la protection JWT des fichiers ne sera pas appliquée.",
"FileUpload_Enabled": "Chargement de fichiers activé",
"FileUpload_Enabled_Direct": "Chargement de fichiers activé dans les messages directs",
"FileUpload_Error": "Erreur de chargement de fichier",
diff --git a/packages/i18n/src/locales/pt-BR.i18n.json b/packages/i18n/src/locales/pt-BR.i18n.json
index d01140a0081a0..fe837e3acaccb 100644
--- a/packages/i18n/src/locales/pt-BR.i18n.json
+++ b/packages/i18n/src/locales/pt-BR.i18n.json
@@ -2105,6 +2105,7 @@
"FileUpload_Disabled": "Uploads de arquivos estão desabilitados.",
"FileUpload_Enable_json_web_token_for_files": "Habilitar proteção com JSON Web Tokens ao upload de arquivos",
"FileUpload_Enable_json_web_token_for_files_description": "Acrescenta um JWT aos URLs dos arquivos carregados",
+ "FileUpload_Enable_json_web_token_for_files_Alert": "Esta opção só tem efeito quando um segredo JWT está configurado. Se o campo \"Segredo JWT para arquivos\" estiver vazio, nenhum token será gerado e a proteção JWT de arquivos não será aplicada.",
"FileUpload_Enabled": "Habilitar upload de arquivos",
"FileUpload_Enabled_Direct": "Uploads de arquivos ativados em mensagens diretas",
"FileUpload_Error": "Erro de upload de arquivo",
diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md
index 0233a77447b66..ea691a555082d 100644
--- a/packages/instance-status/CHANGELOG.md
+++ b/packages/instance-status/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/instance-status
+## 0.1.49
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/models@2.0.2
+
+
## 0.1.48
### Patch Changes
diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json
index e1acbf597db54..75f79e4c149b8 100644
--- a/packages/instance-status/package.json
+++ b/packages/instance-status/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/instance-status",
- "version": "0.1.48",
+ "version": "0.1.49",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/livechat/CHANGELOG.md b/packages/livechat/CHANGELOG.md
index cfa2a3b34f678..202b50d975fbc 100644
--- a/packages/livechat/CHANGELOG.md
+++ b/packages/livechat/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/livechat Change Log
+## 2.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/gazzodown@26.0.2
+
+
## 2.0.1
### Patch Changes
diff --git a/packages/livechat/package.json b/packages/livechat/package.json
index 716856055cabb..3395de0b85d44 100644
--- a/packages/livechat/package.json
+++ b/packages/livechat/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/livechat",
- "version": "2.0.1",
+ "version": "2.0.2",
"homepage": "https://rocket.chat",
"repository": {
"type": "git",
diff --git a/packages/mock-providers/CHANGELOG.md b/packages/mock-providers/CHANGELOG.md
index d90b1241e64f8..aaeb1333220e1 100644
--- a/packages/mock-providers/CHANGELOG.md
+++ b/packages/mock-providers/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/mock-providers
+## 0.4.9
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@26.0.2
+
+
## 0.4.8
### Patch Changes
diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json
index 86ab42f1b08d9..997346b1e446f 100644
--- a/packages/mock-providers/package.json
+++ b/packages/mock-providers/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/mock-providers",
- "version": "0.4.8",
+ "version": "0.4.9",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md
index bb1f3ad63a10b..fdc2d6ad0b8d7 100644
--- a/packages/model-typings/CHANGELOG.md
+++ b/packages/model-typings/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/model-typings
+## 2.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+
+
## 2.0.1
### Patch Changes
diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json
index e353809272ac7..efe250978a6f5 100644
--- a/packages/model-typings/package.json
+++ b/packages/model-typings/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/model-typings",
- "version": "2.0.1",
+ "version": "2.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md
index 369f4b89bb77a..44c15300102ac 100644
--- a/packages/models/CHANGELOG.md
+++ b/packages/models/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/models
+## 2.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/model-typings@2.0.2
+
+
## 2.0.1
### Patch Changes
diff --git a/packages/models/package.json b/packages/models/package.json
index 178c54f12836a..11d00893d1267 100644
--- a/packages/models/package.json
+++ b/packages/models/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/models",
- "version": "2.0.1",
+ "version": "2.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/omni-core/CHANGELOG.md b/packages/omni-core/CHANGELOG.md
index ced8ec2eee45e..03f3d39201cca 100644
--- a/packages/omni-core/CHANGELOG.md
+++ b/packages/omni-core/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/omni-core
+## 0.0.14
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/models@2.0.2
+
+
## 0.0.13
### Patch Changes
diff --git a/packages/omni-core/package.json b/packages/omni-core/package.json
index 56829a7978eb3..3cfb5dc98d0bb 100644
--- a/packages/omni-core/package.json
+++ b/packages/omni-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/omni-core",
- "version": "0.0.13",
+ "version": "0.0.14",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md
index 59f986a5bb301..d6d19a629bc7c 100644
--- a/packages/rest-typings/CHANGELOG.md
+++ b/packages/rest-typings/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/rest-typings
+## 8.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+
+
## 8.0.1
### Patch Changes
diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json
index 6f00b3b0260e6..354ba30a431c7 100644
--- a/packages/rest-typings/package.json
+++ b/packages/rest-typings/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/rest-typings",
- "version": "8.0.1",
+ "version": "8.0.2",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"files": [
diff --git a/packages/ui-avatar/CHANGELOG.md b/packages/ui-avatar/CHANGELOG.md
index 9c5f7ec128ddc..b20eeee55c0f7 100644
--- a/packages/ui-avatar/CHANGELOG.md
+++ b/packages/ui-avatar/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/ui-avatar
+## 22.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@26.0.2
+
+
## 22.0.1
### Patch Changes
diff --git a/packages/ui-avatar/package.json b/packages/ui-avatar/package.json
index f0bde567039ad..51330422bb5f2 100644
--- a/packages/ui-avatar/package.json
+++ b/packages/ui-avatar/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-avatar",
- "version": "22.0.1",
+ "version": "22.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md
index 0ba4699e50e54..01ca33df1acd8 100644
--- a/packages/ui-client/CHANGELOG.md
+++ b/packages/ui-client/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/ui-client
+## 26.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-avatar@22.0.2
+ - @rocket.chat/ui-contexts@26.0.2
+
+
## 26.0.1
### Patch Changes
diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json
index 71b2bdfd91c5d..6ea0a0edaa07e 100644
--- a/packages/ui-client/package.json
+++ b/packages/ui-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-client",
- "version": "26.0.1",
+ "version": "26.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md
index 51ed5064ea845..da6e090783875 100644
--- a/packages/ui-contexts/CHANGELOG.md
+++ b/packages/ui-contexts/CHANGELOG.md
@@ -1,5 +1,16 @@
# @rocket.chat/ui-contexts
+## 26.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/core-typings@8.0.2
+ - @rocket.chat/rest-typings@8.0.2
+ - @rocket.chat/ddp-client@1.0.2
+
+
## 26.0.1
### Patch Changes
diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json
index 008c92aa448bb..d901a54f771a5 100644
--- a/packages/ui-contexts/package.json
+++ b/packages/ui-contexts/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-contexts",
- "version": "26.0.1",
+ "version": "26.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md
index 52736024bbd44..4ba72ba53903d 100644
--- a/packages/ui-video-conf/CHANGELOG.md
+++ b/packages/ui-video-conf/CHANGELOG.md
@@ -1,5 +1,15 @@
# @rocket.chat/ui-video-conf
+## 26.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-avatar@22.0.2
+ - @rocket.chat/ui-contexts@26.0.2
+
+
## 26.0.1
### Patch Changes
diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json
index efe2234cd18e9..b7400244e3b74 100644
--- a/packages/ui-video-conf/package.json
+++ b/packages/ui-video-conf/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-video-conf",
- "version": "26.0.1",
+ "version": "26.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/ui-voip/CHANGELOG.md b/packages/ui-voip/CHANGELOG.md
index 9dd82a1c727a3..9886ab0e31823 100644
--- a/packages/ui-voip/CHANGELOG.md
+++ b/packages/ui-voip/CHANGELOG.md
@@ -1,5 +1,17 @@
# @rocket.chat/ui-voip
+## 16.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/fuselage-ui-kit@26.0.2
+ - @rocket.chat/ui-avatar@22.0.2
+ - @rocket.chat/ui-client@26.0.2
+ - @rocket.chat/ui-contexts@26.0.2
+
+
## 16.0.1
### Patch Changes
diff --git a/packages/ui-voip/package.json b/packages/ui-voip/package.json
index c233eb83bcf04..0242d7e12357a 100644
--- a/packages/ui-voip/package.json
+++ b/packages/ui-voip/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ui-voip",
- "version": "16.0.1",
+ "version": "16.0.2",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md
index 8d52bb1caf767..ed59d222fd099 100644
--- a/packages/web-ui-registration/CHANGELOG.md
+++ b/packages/web-ui-registration/CHANGELOG.md
@@ -1,5 +1,14 @@
# @rocket.chat/web-ui-registration
+## 26.0.2
+
+### Patch Changes
+
+- Updated dependencies []:
+
+ - @rocket.chat/ui-contexts@26.0.2
+
+
## 26.0.1
### Patch Changes
diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json
index 837a40b308deb..a6b835073d3fb 100644
--- a/packages/web-ui-registration/package.json
+++ b/packages/web-ui-registration/package.json
@@ -1,6 +1,6 @@
{
"name": "@rocket.chat/web-ui-registration",
- "version": "26.0.1",
+ "version": "26.0.2",
"private": true,
"homepage": "https://rocket.chat",
"main": "./dist/index.js",
@@ -62,7 +62,7 @@
"peerDependencies": {
"@rocket.chat/layout": "*",
"@rocket.chat/tools": "0.2.4",
- "@rocket.chat/ui-contexts": "26.0.1",
+ "@rocket.chat/ui-contexts": "26.0.2",
"@tanstack/react-query": "*",
"react": "*",
"react-hook-form": "*",
diff --git a/yarn.lock b/yarn.lock
index 473be68362b5f..cc6f8b082b1a6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10797,7 +10797,7 @@ __metadata:
peerDependencies:
"@rocket.chat/layout": "*"
"@rocket.chat/tools": 0.2.4
- "@rocket.chat/ui-contexts": 26.0.0
+ "@rocket.chat/ui-contexts": 26.0.1
"@tanstack/react-query": "*"
react: "*"
react-hook-form: "*"