forked from 0xWheatyz/SPARC
Add multi-tenant support with owner_id isolation #1696
Open
AI-Manager
wants to merge 2 commits from
feature/multi-tenant-isolation into main
pull from: feature/multi-tenant-isolation
merge into: leeworks-agents:main
leeworks-agents:main
leeworks-agents:feature/historical-analysis-diff
leeworks-agents:feature/1686-rate-limit-dashboard
leeworks-agents:feature/1684-cursor-pagination
leeworks-agents:feature/patent-classification-tags
leeworks-agents:feature/webhook-task-queue
leeworks-agents:feature/1674-batch-export-zip
leeworks-agents:feature/1685-stricter-company-name-validation
leeworks-agents:feature/api-key-auth
leeworks-agents:feature/1675-rate-limit-admin
leeworks-agents:feature/1669-cursor-pagination
leeworks-agents:feature/1670-company-name-validation
leeworks-agents:feature/1678-update-roadmap
leeworks-agents:feature/1656-tracked-company-admin-tests
leeworks-agents:feature/1661-analyze-single-patent-tests
leeworks-agents:feature/1660-s3-storage-tests
leeworks-agents:feature/1659-update-roadmap
leeworks-agents:feature/1658-scheduler-pooled-db
leeworks-agents:feature/1657-webhook-integration-tests
leeworks-agents:feature/1655-export-endpoint-tests
leeworks-agents:feature/1605-dark-mode
leeworks-agents:feature/1624-jwt-auth-tests
leeworks-agents:feature/1559-1560-enable-ci-linting-and-tests
leeworks-agents:feature/docs-patent-volume-mount
leeworks-agents:feature/1324-dark-mode-variants
leeworks-agents:feature/1013-multi-model
leeworks-agents:feature/426-generate-ts-api-client
leeworks-agents:feature/351-frontend-model-picker
leeworks-agents:feature/343-batch-loading-states
leeworks-agents:feature/env-example-updates
leeworks-agents:feature/260-tsc-ci
leeworks-agents:feature/export-pdf
leeworks-agents:feature/multi-model
leeworks-agents:feature/openapi-client-gen
leeworks-agents:feature/trend-charts
leeworks-agents:feature/compare-view
leeworks-agents:feature/s3-storage
leeworks-agents:feature/webhooks
leeworks-agents:feature/scheduled-analysis
leeworks-agents:feature/export-csv
leeworks-agents:feature/cursor-pagination
leeworks-agents:feature/dark-mode
leeworks-agents:feature/loading-error-states
leeworks-agents:feature/fix-single-patent-download
leeworks-agents:feature/structured-logging
leeworks-agents:feature/ci-tsc-lint
leeworks-agents:feature/ci-testing-linting
leeworks-agents:feature/db-client-pooling
leeworks-agents:feature/p2-config-improvements
leeworks-agents:feature/jwt-auth-tests
leeworks-agents:feature/persist-job-state
leeworks-agents:feature/p2-docs-and-lockfile
leeworks-agents:feature/rate-limiting
leeworks-agents:feature/p1-security-hardening
leeworks-agents:chore/add-roadmap
2 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
e37859dabc |
Add multi-tenant support with owner_id isolation
- Add owner_id (FK to users) column to llm_messages, jobs, and
tracked_companies tables via schema migration in initialize_schema()
- Filter all read/write operations by authenticated user's owner_id
so users cannot see or modify each other's data
- Add user-scoped /tracked endpoints alongside existing admin ones
- Add admin-scoped /admin/analyses and /admin/jobs endpoints that
return cross-tenant data without owner filtering
- Create migration script (scripts/migrate_add_owner_id.py) that
backfills owner_id=1 for all existing rows
- Replace global UNIQUE on tracked_companies.company_name with
per-owner unique index (company_name, owner_id)
- Fix route ordering: /analyze/batch and /analyze/patent routes now
registered before /analyze/{company_name} to prevent path conflicts
- Update all existing API tests with proper auth headers and owner_id
assertions
- Add comprehensive cross-tenant isolation test suite
(tests/test_multi_tenant.py)
Closes leeworks-agents/SPARC#1677
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
||
|
|
3dfa651f2d |
Add rate limiting dashboard to admin panel
- Enhance GET /admin/rate-limits with per-IP breakdown, 24h throttled count, and hourly time-series of rejected requests - Add _rejected_log deque for time-series tracking of throttled requests - Add AdminRateLimits React page with auto-refresh (configurable 15s/30s/1m), summary cards, throttled-over-time bar chart, endpoint table, per-IP table - Add TypeScript types (RateLimitStatsResponse) and adminApi.getRateLimits() - Wire up /admin/rate-limits route and nav link (admin-only) - Expand unit tests to 10 cases: auth, empty state, per-IP breakdown, throttled_24h count, time-series structure, response shape contract Closes leeworks-agents/SPARC#1686 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |