fix: classroom review — 11 исправлений из code review
- sessions.js: endSession закрывает classroom_attendance (left_at), чистит classroom_muted - sessions.js: joinSession восстанавливает mute-состояние при реконнекте - strokes.js: updateStroke проверяет авторство штриха (не только canDraw) - strokes.js: clearPage валидирует page_num как положительное целое - strokes.js: postStrokes ограничивает массив 500 штрихами - pages.js: duplicatePage сохраняет user_id при копировании штрихов - pages.js: changePage валидирует page_num - pages.js: updatePageTemplate делает INSERT OR IGNORE перед UPDATE - permissions.js: mutePeer сохраняет в classroom_muted; добавлен unmutePeer - permissions.js: getOnlineStudents не возвращает email - chat.js: exportChat экранирует переводы строк в именах и сообщениях - guestClassroom.js: санитизация имени гостя (убираем HTML-символы) - ws-server.js: mute_peer сохраняет в БД; добавлен обработчик unmute_peer - routes/classroom.js: rate-limit для cursor/preview/signal/strokes; маршрут DELETE /mute - migrations/001_classroom_muted.sql: новая таблица classroom_muted
This commit is contained in:
@@ -254,7 +254,21 @@ function _handleMessage(ws, msg) {
|
||||
if (!isTeacher) return;
|
||||
const targetId = Number(msg.targetUserId);
|
||||
if (!targetId) return;
|
||||
emitToUser(targetId, { type: 'classroom_muted', sessionId });
|
||||
try {
|
||||
db.prepare('INSERT OR IGNORE INTO classroom_muted (session_id, user_id, muted_by) VALUES (?,?,?)').run(sessionId, targetId, ws.userId);
|
||||
} catch { return; }
|
||||
emitToUser(targetId, { type: 'classroom_muted', sessionId, by: ws.userId });
|
||||
break;
|
||||
}
|
||||
|
||||
case 'unmute_peer': {
|
||||
if (!isTeacher) return;
|
||||
const targetId = Number(msg.targetUserId);
|
||||
if (!targetId) return;
|
||||
try {
|
||||
db.prepare('DELETE FROM classroom_muted WHERE session_id=? AND user_id=?').run(sessionId, targetId);
|
||||
} catch { return; }
|
||||
emitToUser(targetId, { type: 'classroom_unmuted', sessionId, by: ws.userId });
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user