Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion src/auth/service/auth.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,15 @@ export class AuthService {
}

const user = await this.usersService.findById(tokenDoc.userId.toString());
return user;
if (!user) return null;

// 응답 형식을 다른 메서드와 일관성 있게
return {
_id: user._id,
email: user.email,
nickname: user.nickname,
profileImage: user.profileImage ?? undefined,
};
}

// ============ 액세스 토큰 검증 ============
Expand Down
14 changes: 12 additions & 2 deletions src/chat/gateways/chat.gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,15 +141,25 @@ export class ChatGateway implements OnGatewayConnection, OnGatewayDisconnect {
): Promise<void> {
try {
const user = client.user;

if (!user) {
client.emit('joinError', { reason: 'UNAUTHORIZED' });
return;
}

// 이미 방에 속해있는지 확인
if (client.rooms.has(payload.roomCode)) {
return;
}

// 방에 입장
await client.join(payload.roomCode);

// 입장 시스템 메시지 (한 번만 실행됨)
this.server.to(payload.roomCode).emit('systemMessage', {
message: `${user.nickname}님이 입장했습니다`,
timestamp: new Date().toISOString(),
});

// 방 상태 초기화
if (!this.roomStates.has(payload.roomCode)) {
// 초기 메뉴 로드 (전체 메뉴)
Expand Down Expand Up @@ -416,8 +426,8 @@ export class ChatGateway implements OnGatewayConnection, OnGatewayDisconnect {
// 보낸 사람 제외하고 방의 다른 사람들에게만 전송
client.to(payload.roomCode).emit('messageReceived', {
userId: user.id,
userEmail: user.email,
userName: user.nickname,
profileImage: user.profileImage ?? null,
message: payload.message,
timestamp: new Date().toISOString(),
});
Expand Down