Дмитрий
|
2a34ee880a
|
fix(security): закрыть открытые эндпоинты + SSRF-гард webhook перед go-live
- /api/dashboard/summary, /api/managers, /api/lead-statuses: были без auth
(tenant_id параметром) → auth:sanctum (+tenant); tenant_id из authed-user,
не из параметра — закрывает кросс-tenant утечку KPI/списка пользователей
- ManagerController: явный where(tenant_id) поверх RLS (BYPASSRLS-роли/тесты)
- WebhookUrlGuard + webhooks/test: SSRF-блок private/reserved/loopback IP
(cloud-metadata 169.254.169.254 и пр.); update()/delivery — follow-up
- TDD: +EndpointAuthHardeningTest(5) +WebhookSsrfGuardTest(10); обновлены
Dashboard/Lookups/LeadStatuses тесты под auth
- регрессия tests/Feature 960/964 (2 фейла pre-existing: Vite-manifest env +
RouteSupplierLeadJobBilling idempotency — оба фейлят и на чистом base)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-21 19:15:05 +03:00 |
|
Дмитрий
|
07d73870ba
|
refactor(projects): remove archive feature, drop archived_at column (schema v8.27)
|
2026-05-21 08:24:25 +03:00 |
|
Дмитрий
|
b4138bbc82
|
feat(deals): sweep 14->5 funnel slugs — controllers, mocks, stories, tests
|
2026-05-18 03:42:41 +03:00 |
|
Дмитрий
|
283db070e1
|
fix(dashboard): activity-бакеты в MSK + deltaBlock для leads + test hardening (J3 review fixup)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-16 11:41:09 +03:00 |
|
Дмитрий
|
7705f022c1
|
fix(dashboard): runway_days опирается на фикс. 7д-окно, не на range (J3 review fixup)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-16 11:41:09 +03:00 |
|
Дмитрий
|
e64eb4dbe0
|
feat(dashboard): GET /api/dashboard/summary — агрегат KPI/баланса/активности (audit J3)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-16 11:41:08 +03:00 |
|