фикс
This commit is contained in:
parent
be4a84dacf
commit
42ab411cce
@ -181,15 +181,8 @@ const toggleUserActive = async (req, res) => {
|
||||
socket.emit("account_blocked", blockData);
|
||||
notificationSent = true;
|
||||
|
||||
// Принудительно отключаем сокет
|
||||
setTimeout(() => {
|
||||
try {
|
||||
console.log(`[AdminController] Принудительное отключение сокета: ${userSocket.socketId}`);
|
||||
socket.disconnect(true);
|
||||
} catch (socketError) {
|
||||
console.error(`[AdminController] Ошибка при отключении сокета ${userSocket.socketId}:`, socketError);
|
||||
}
|
||||
}, 500);
|
||||
// НЕ отключаем сокет принудительно - пусть пользователь остается подключенным
|
||||
// для получения уведомлений о разблокировке
|
||||
} else {
|
||||
console.log(`[AdminController] Сокет не найден или не подключен для ID: ${userSocket.socketId}`);
|
||||
}
|
||||
@ -204,19 +197,8 @@ const toggleUserActive = async (req, res) => {
|
||||
console.log(`[AdminController] Пользователь ${userId} не найден в активных соединениях`);
|
||||
}
|
||||
|
||||
// Очищаем устаревшие записи в списке активных пользователей
|
||||
try {
|
||||
const updatedActiveUsers = activeUsers.filter(u => {
|
||||
// Оставляем записи, которые не принадлежат заблокированному пользователю
|
||||
return u.userId !== userId;
|
||||
});
|
||||
|
||||
// Обновляем список активных пользователей
|
||||
req.app.set('activeUsers', updatedActiveUsers);
|
||||
console.log(`[AdminController] Список активных пользователей обновлен, удалены записи для ${userId}`);
|
||||
} catch (error) {
|
||||
console.error(`[AdminController] Ошибка при обновлении списка активных пользователей:`, error);
|
||||
}
|
||||
// НЕ очищаем записи в списке активных пользователей - оставляем их подключенными
|
||||
// для возможности получения уведомлений о разблокировке
|
||||
|
||||
if (!notificationSent) {
|
||||
console.log(`[AdminController] Уведомление о блокировке не было отправлено напрямую, но было отправлено глобальное уведомление`);
|
||||
|
10
src/auth.js
10
src/auth.js
@ -237,6 +237,16 @@ async function handleAccountBlocked(data) {
|
||||
console.log('[Auth] Невозможно сохранить сессию - пользователь не авторизован');
|
||||
}
|
||||
|
||||
// Показываем уведомление о блокировке
|
||||
const notificationEvent = new CustomEvent('show-toast', {
|
||||
detail: {
|
||||
message: data?.message || 'Ваш аккаунт был заблокирован администратором.',
|
||||
type: 'error',
|
||||
duration: 10000
|
||||
}
|
||||
});
|
||||
window.dispatchEvent(notificationEvent);
|
||||
|
||||
// Выходим из системы
|
||||
await logout();
|
||||
|
||||
|
@ -53,35 +53,21 @@ export const connectSocket = () => {
|
||||
socket.on('account_blocked', (data) => {
|
||||
console.log('[SocketService] Получено уведомление о блокировке аккаунта:', data);
|
||||
|
||||
// Устанавливаем флаг блокировки аккаунта для предотвращения повторных подключений
|
||||
// Устанавливаем флаг блокировки аккаунта, но НЕ отключаем сокет
|
||||
wasAccountBlocked = true;
|
||||
|
||||
// Принудительно прерываем соединение
|
||||
try {
|
||||
console.log('[SocketService] Принудительное отключение сокета из-за блокировки аккаунта');
|
||||
socket.disconnect();
|
||||
} catch (error) {
|
||||
console.error('[SocketService] Ошибка при отключении сокета:', error);
|
||||
}
|
||||
|
||||
// Вызываем обработчик блокировки для немедленного выхода
|
||||
// Вызываем обработчик блокировки для выхода из системы
|
||||
if (typeof handleAccountBlocked === 'function') {
|
||||
// Оборачиваем в try-catch для надежности
|
||||
try {
|
||||
handleAccountBlocked(data);
|
||||
} catch (error) {
|
||||
console.error('[SocketService] Ошибка при вызове handleAccountBlocked:', error);
|
||||
// Аварийный выход в случае ошибки в обработчике
|
||||
window.location.href = '/login?blocked=true';
|
||||
}
|
||||
} else {
|
||||
console.error('[SocketService] handleAccountBlocked не определен!');
|
||||
// Принудительная перезагрузка страницы
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
// Дополнительно очищаем все соединения и состояние
|
||||
socket = null;
|
||||
});
|
||||
|
||||
// Обработчик разблокировки аккаунта
|
||||
|
Loading…
x
Reference in New Issue
Block a user