Skip to content

Commit 82fa056

Browse files
committed
refactor: add format filtering along with validateFederatedUsers
1 parent 3461604 commit 82fa056

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

apps/meteor/app/lib/server/functions/createRoom.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,11 @@ export const createRoom = async <T extends RoomType>(
192192

193193
// validate external users (network + user existence checks)
194194
try {
195-
await FederationMatrix.validateFederatedUsersBeforeRoomCreation(members);
195+
// TODO: Use common function to extract and validate federated users
196+
const federatedUsers = members
197+
.filter((member: string | IUser) => (typeof member === 'string' ? member.includes(':') : member.username?.includes(':')))
198+
.map((member: string | IUser) => (typeof member === 'string' ? member : member.username!));
199+
await FederationMatrix.validateFederatedUsers(federatedUsers);
196200
} catch (error) {
197201
if (error instanceof FederationValidationError) {
198202
throw new Meteor.Error(error.error, error.userMessage, { method: 'createRoom' });

apps/meteor/ee/server/hooks/federation/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@ callbacks.add(
214214
}
215215

216216
try {
217-
await FederationMatrix.validateFederatedUsersBeforeRoomCreation(members);
217+
const federatedUsers = members.filter((username) => username.includes(':'));
218+
await FederationMatrix.validateFederatedUsers(federatedUsers);
218219
} catch (error) {
219220
if (error instanceof FederationValidationError) {
220221
throw new Meteor.Error(error.error, error.userMessage);

ee/packages/federation-matrix/src/FederationMatrix.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS
208208
this.processEDUPresence = (await Settings.getValueById<boolean>('Federation_Service_EDU_Process_Presence')) || false;
209209
}
210210

211-
static async validateFederatedUsersBeforeRoomCreation(usernames: string[]): Promise<void> {
211+
static async validateFederatedUsers(usernames: string[]): Promise<void> {
212212
const hasInvalidFederatedUsername = usernames.some((username) => !validateFederatedUsername(username));
213213
if (hasInvalidFederatedUsername) {
214214
throw new FederationValidationError(

0 commit comments

Comments
 (0)