randomayzer/agents/antigravity/inbox/TASK-2026-08-21-13-preview-anonymous-policy.md

2.4 KiB
Raw Blame History

Task 13: Политика анонимного доступа к POST /api/posts/preview

Assigned to: Antigravity (Implementation Orchestrator)
Priority: MEDIUM (security / quota protection / UX consistency)
Date: 2026-08-21
Base SHA: 76ab7d0e77d06cbc31b66fc5c0cdd80282d7f496

Проблема

Анонимный доступ к POST /api/posts/preview создает риски истощения квоты VK_SERVICE_TOKEN через пул IP-адресов либо взаимную блокировку анонимных пользователей на ключе direct-client. При этом весь визард создания розыгрыша (POST /api/giveaways и последующие шаги) жестко требует авторизации через VK ID (requireAuthenticatedUser), поэтому анонимный доступ к превью не обслуживает завершаемый пользовательский сценарий.

Scope

  1. Реализовать Вариант A (рекомендуемый):
    • Закрыть POST /api/posts/preview за requireAuthenticatedUser(req).
    • Анонимные запросы получают 401 Unauthorized с внятным сообщением о необходимости войти через VK ID.
    • Запросы без авторизации не доходят до VK API / провайдера (защита квоты приложения).
    • Лимитирование становится строго user-scoped (generalApiRateLimiter.assertAllowed('post-preview:user:' + sessionUser.id)).
  2. Обновить тесты:
    • Создать tests/preview-quota-policy.test.ts (проверка requireAuthenticatedUser, 0 вызовов VK провайдера для неавторизованных запросов, успешная работа для авторизованных пользователей).
    • Обновить tests/post-preview-guard.test.ts, tests/security.test.ts, tests/rate-limit-identity.test.ts с явным объяснением перехода на обязательную аутентификацию.
  3. Документировать исправление в отчете agents/antigravity/done/TASK-2026-08-21-13-preview-anonymous-policy.md.
  4. Полный верификационный гейт.