list_jobs now uses MembershipContext (Redis-cached, 60s TTL) to build org-scoped queries instead of per-request memberships.find(). Falls back to legacy get_accessible_project_ids for users with no memberships. get_job replaces the role-specific CLIENT/PM access check with get_job_or_403() which uniformly checks organization_id membership for all roles (returns 404 not 403 to avoid leaking cross-org job existence). get_accessible_project_ids in dependencies.py now uses _cached_memberships from authz.py, eliminating the duplicate uncached DB query. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| authz.py | ||
| config.py | ||
| database.py | ||
| dependencies.py | ||
| logging.py | ||
| redis.py | ||
| secrets_config.py | ||
| security.py | ||
| seed.py | ||