fix: три бага — CSRF в админке, пагинация аудита, скрыта кнопка выхода

1. Изменение лимитов (Баг 1): добавлен CSRF-токен в форму /v2/admin/limit
   - v2/src/admin/index.js: createAdminRouter принимает {generateCsrfToken},
     передаёт csrfToken в шаблон admin.ejs
   - views/v2/admin.ejs: скрытое поле <input name=_csrf> в форме лимита

2. Журнал операций (Баг 2): пагинация + фильтр по дате вместо хардкод LIMIT 500
   - v2/src/db/queries.js: getAudit({companyId,days,page,limit}) —
     COUNT(*) OVER() для пагинации, WHERE created_at > NOW() - INTERVAL
   - v2/src/admin/index.js: чтение days/page из query string, limit=100
   - views/v2/admin-audit.ejs: фильтр 30/90/365 дней, prev/next пагинация

3. Кнопка Выйти (Баг 3): скрыта, т.к. /v2/logout не разлогинивает из Keycloak
   - views/v2/user.ejs: кнопка закомментирована с пояснением

v0.1.8 → v0.1.9
This commit is contained in:
2026-07-01 18:26:06 +04:00
parent 2a37697afb
commit 8dc7940318
7 changed files with 91 additions and 16 deletions
+1
View File
@@ -121,6 +121,7 @@
</td>
<td>
<form method="POST" action="/v2/admin/limit" style="display:inline-flex;gap:.4rem;align-items:center;">
<input type="hidden" name="_csrf" value="<%= csrfToken %>">
<input type="hidden" name="companyId" value="<%= c.id %>">
<input class="limit-input" name="limit" type="number" min="1" value="<%= c.custom_limit || 15 %>">
<button class="btn btn-sm btn-primary">установить</button>