security(auth): anti-enumeration, returnTo-валидация, лимит попыток логина
Шаг 2.1 плана production-готовности: - единый 401 при любом отказе логина + constant-time bcrypt - forgot-password: идентичный ответ независимо от существования email - sanitizeReturnTo (open redirect fix в /api/documents/generate-link) - 10 неудачных попыток → блок 15 мин (in-memory, аудит) - DATABASE_SSL_REJECT_UNAUTHORIZED env (дефолт true) - доделка 0.7: статичные тексты в llm-providers/rag/finance-di2 - 8 новых тестов (104/104)
This commit is contained in:
@@ -5545,7 +5545,7 @@ export async function registerRoutes(httpServer: Server, app: Express): Promise<
|
||||
results.push({ id: area.id, name: area.name, months: months.filter(m => m.employees.length > 0) });
|
||||
} catch (err: any) {
|
||||
console.error(`Error fetching area ${area.name}:`, err?.message);
|
||||
results.push({ id: area.id, name: area.name, months: [], error: err?.message || "Ошибка загрузки" });
|
||||
results.push({ id: area.id, name: area.name, months: [], error: "Ошибка загрузки" });
|
||||
}
|
||||
await sleep(600);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user