Files
vue-pult/server/api/logout.js
sasha 3e90269b0b Initial commit: Vue.js тир управления система
- Клиентская часть Vue 3 + Vite
- Серверная часть Node.js + WebSocket
- Система авторизации и смен
- Управление игровыми портами
- Поддержка тем (светлая/темная)
- Адаптивный дизайн

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-19 12:24:22 +03:00

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: "Выход выполнен"
}));
}
};