Skip to content

Commit

Permalink
fix: uuid leaking
Browse files Browse the repository at this point in the history
  • Loading branch information
KairuiLiu committed Apr 29, 2024
1 parent c5c2726 commit 09136d5
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 14 deletions.
10 changes: 10 additions & 0 deletions src/model/meeting_info.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { MeetingInfoMongo } from '@/types/meeting';
import mongoose from 'mongoose';

const Schema = mongoose.Schema;
Expand Down Expand Up @@ -45,3 +46,12 @@ const MeetingInfoSchema = new Schema({
});

export const MeetingInfo = mongoose.model('Meeting', MeetingInfoSchema);

export function meetingInfoFilter(data: MeetingInfoMongo) {
const res = {...data};
res.organizer.uuid = '';
res.participants.forEach((p) => {
p.uuid = '';
});
return res;
}
18 changes: 13 additions & 5 deletions src/routes/meeting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@ import { Router, Response } from 'express';
import { generateMeetingId } from '@/utils/gen_meeting_id';
import { authenticate } from '@/utils/token';
import { genErrorResponse, genSuccessResponse } from '@/utils/gen_response';
import { MeetingInfo } from '@/model/meeting_info';
import { MeetingCreateRequest, MeetingGetRequest } from '@/types/meeting';
import { MeetingInfo, meetingInfoFilter } from '@/model/meeting_info';
import {
MeetingCreateRequest,
MeetingGetRequest,
MeetingInfoMongo,
} from '@/types/meeting';

const router = Router();

Expand Down Expand Up @@ -56,11 +60,15 @@ router.get('/', authenticate, async (req: MeetingGetRequest, res: Response) => {
genErrorResponse('Name already in use. Please choose another.'),
);

if (meetInfo && meetInfo?.passcode !== passcode){
if(passcode === '')return res.status(401).json(genErrorResponse('Passcode needed', 401));
if (meetInfo && meetInfo?.passcode !== passcode) {
if (passcode === '')
return res.status(401).json(genErrorResponse('Passcode needed', 401));
return res.status(401).json(genErrorResponse('Invalid passcode.', 401));
}
if (meetInfo) res.json(genSuccessResponse(meetInfo));
if (meetInfo)
res.json(
genSuccessResponse(meetingInfoFilter(meetInfo as MeetingInfoMongo)),
);
else res.status(404).json(genErrorResponse('Meeting not found.', 404));
});

Expand Down
15 changes: 10 additions & 5 deletions src/routes/ws_meeting.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import checkNoneHost from '@/utils/check_none_host';
import wsBaseHandler from '@/utils/ws_base_handler';
import emitRoom from '@/utils/emit_room';
import { meetingInfoFilter } from '@/model/meeting_info';

const meetControllers: Controllers<ClientMeetingKeys, SocketType, ServerType> =
{
Expand Down Expand Up @@ -63,13 +64,15 @@ const meetControllers: Controllers<ClientMeetingKeys, SocketType, ServerType> =
checkNoneHost(meetInfo);
await meetInfo.save();

const meetingInfoOut = meetingInfoFilter(meetInfo);

if (
participant_diff.name !== undefined ||
participant_diff.role !== undefined
)
emitRoom(room_id, io, {
type: 'USER_UPDATE', // change multiple user state
data: meetInfo,
data: meetingInfoOut,
});
else
emitRoom(room_id, io, {
Expand Down Expand Up @@ -137,9 +140,12 @@ const meetControllers: Controllers<ClientMeetingKeys, SocketType, ServerType> =
checkNoneHost(meetInfo);

await meetInfo.save();
io.sockets.in(room_id).emit('USER_UPDATE', {

const meetingInfoOut = meetingInfoFilter(meetInfo);

emitRoom(room_id, io, {
type: 'USER_UPDATE',
data: meetInfo,
data: meetingInfoOut,
});

return {
Expand All @@ -152,7 +158,7 @@ const meetControllers: Controllers<ClientMeetingKeys, SocketType, ServerType> =
BOARDCAST_CHAT: async (data, sc, io) => {
const { room_id, token, muid, message, time } = data;

const { success, err } = await wsBaseHandler(
const { err } = await wsBaseHandler(
token,
room_id,
'RES_UPDATE_USER_STATE',
Expand All @@ -161,7 +167,6 @@ const meetControllers: Controllers<ClientMeetingKeys, SocketType, ServerType> =
true,
);
if (err) return err;
const { uuid, meetInfo } = success!;

emitRoom(room_id, io, {
type: 'CHAT',
Expand Down
12 changes: 8 additions & 4 deletions src/routes/ws_room.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MeetingInfo } from '@/model/meeting_info';
import { MeetingInfo, meetingInfoFilter } from '@/model/meeting_info';
import { MeetingInfoMongo } from '@/types/meeting';
import checkNoneHost from '@/utils/check_none_host';
import wsBaseHandler from '@/utils/ws_base_handler';
Expand Down Expand Up @@ -65,14 +65,16 @@ const roomControllers: Controllers<ClientRoomKeys, SocketType, ServerType> = {
await meetInfo.save();
sc.join(room_id);

const meetingInfoOut = meetingInfoFilter(meetInfo);

emitRoom(meetInfo.id, io, {
type: 'USER_UPDATE',
data: meetInfo,
data: meetingInfoOut,
});

return {
message: 'SUCCESS',
data: meetInfo,
data: meetingInfoOut,
type: 'RES_JOIN_MEETING',
};
},
Expand All @@ -99,9 +101,11 @@ const roomControllers: Controllers<ClientRoomKeys, SocketType, ServerType> = {

checkNoneHost(meetInfo);

const meetingInfoOut = meetingInfoFilter(meetInfo);

emitRoom(meetInfo.id, io, {
type: 'USER_UPDATE',
data: meetInfo,
data: meetingInfoOut,
});

meetInfo.save();
Expand Down

0 comments on commit 09136d5

Please sign in to comment.