fix(auth): список сессий без мусора ротаций — фильтр isReplaced, перенос UA/IP, чистка старых
- listUserSessions: + isReplaced = false — иначе каждый рефреш токена добавлял в список устройств «новую сессию» (цепочка ротации видна только для детекта кражи); - rotateFamilySession: userAgent/ipAddress переносятся из исходной сессии — rotated-строки больше не «Неизвестное устройство»; - новый worker session-cleanup (тик раз в сутки + прогон при старте): удаляет replaced-сессии старше 72ч (grace-окно детекта кражи) и истёкшие.
This commit is contained in:
@@ -11,6 +11,7 @@ import { startAutomationScheduler } from "./workers/automation-scheduler";
|
||||
import { startDelayedStatusChangeWorker } from "./workers/delayed-status-change.worker";
|
||||
import { sendTaskMessage } from "./services/task-message.service";
|
||||
import { startErrorLogsRetention } from "./workers/error-logs-retention";
|
||||
import { startSessionCleanup } from "./workers/session-cleanup";
|
||||
import { startGpsWorker } from "./gps/worker";
|
||||
import { storage } from "./storage";
|
||||
import type { ReminderRecipient } from "@shared/schema";
|
||||
@@ -1152,6 +1153,10 @@ async function runStartupDataPatches() {
|
||||
startErrorLogsRetention();
|
||||
log('Error logs retention started');
|
||||
|
||||
// Start session cleanup (daily: replaced-сессии старше 72ч + истёкшие)
|
||||
startSessionCleanup();
|
||||
log('Session cleanup worker started');
|
||||
|
||||
// Start GPS worker (offline detection for tracked assets)
|
||||
startGpsWorker();
|
||||
log('GPS worker started');
|
||||
|
||||
Reference in New Issue
Block a user