Files
MultiRoombaRover/server/src/services/lockdownGuard.js
T
2026-01-24 23:40:22 -05:00

36 lines
821 B
JavaScript

const io = require('../globals/io');
const { MODES, getMode, modeEvents } = require('./modeManager');
const { isLockdownAdmin } = require('./roleService');
function disconnectForLockdown(socket) {
socket.emit('lockdown', { message: 'Server is in lockdown mode' });
socket.disconnect(true);
}
function clearLockdownTimer(socket) {
if (socket?.data?.lockdownTimer) {
clearTimeout(socket.data.lockdownTimer);
socket.data.lockdownTimer = null;
}
}
function enforceLockdown() {
for (const socket of io.sockets.sockets.values()) {
if (!isLockdownAdmin(socket)) {
disconnectForLockdown(socket);
}
}
}
module.exports = {
enforceLockdown,
disconnectForLockdown,
clearLockdownTimer,
};
modeEvents.on('change', (mode) => {
if (mode === MODES.LOCKDOWN) {
enforceLockdown();
}
});