- Клиентская часть Vue 3 + Vite - Серверная часть Node.js + WebSocket - Система авторизации и смен - Управление игровыми портами - Поддержка тем (светлая/темная) - Адаптивный дизайн 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
"use strict";
|
|
|
|
const fs = require('node:fs/promises');
|
|
const path = require('path');
|
|
|
|
exports.go = async (req, res, postData, urlParsed) => {
|
|
try {
|
|
console.log('[api/logout] Запрос выхода из системы:', {
|
|
phone: postData.phone,
|
|
hasHash: !!postData.hash
|
|
});
|
|
|
|
// Нормализуем номер телефона
|
|
const normalizedPhone = postData.phone ? postData.phone.replace(/\D/g, '') : null;
|
|
|
|
if (!normalizedPhone) {
|
|
return res.end(JSON.stringify({
|
|
success: true,
|
|
message: "Выход выполнен (данные не переданы)"
|
|
}));
|
|
}
|
|
|
|
// Читаем сессионные хэши
|
|
let hash = {};
|
|
|
|
try {
|
|
const hashData = await fs.readFile(path.join(__dirname, '../data/hash.ini'), 'utf8');
|
|
hash = JSON.parse(hashData);
|
|
} catch (error) {
|
|
console.warn('[api/logout] Файл hash.ini не найден');
|
|
hash = {};
|
|
}
|
|
|
|
// Удаляем сессионный хэш пользователя
|
|
if (normalizedPhone in hash) {
|
|
console.log('[api/logout] Удаляем сессионный хэш для:', normalizedPhone);
|
|
delete hash[normalizedPhone];
|
|
|
|
// Сохраняем обновленный файл хэшей
|
|
await fs.writeFile(path.join(__dirname, '../data/hash.ini'), JSON.stringify(hash));
|
|
console.log('[api/logout] ✅ Сессионный хэш удален');
|
|
} else {
|
|
console.log('[api/logout] Сессионный хэш не найден для:', normalizedPhone);
|
|
}
|
|
|
|
// Возвращаем успешный результат
|
|
res.end(JSON.stringify({
|
|
success: true,
|
|
message: "Выход выполнен успешно"
|
|
}));
|
|
|
|
} catch (error) {
|
|
console.error('[api/logout] Критическая ошибка:', error);
|
|
res.end(JSON.stringify({
|
|
success: true, // Даже при ошибке считаем выход успешным
|
|
message: "Выход выполнен"
|
|
}));
|
|
}
|
|
};
|