mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-17 10:29:49 -05:00
568933c3b9
Client-portal-enabled users (main app login, typically viewer) were not included in get_allowed_client_ids(), so ProjectService and other callers saw scope_client_ids=None and listed every project. - Return [client_id] for is_client_portal_user in User.get_allowed_client_ids - Derive get_allowed_project_ids from allowed client IDs for all non-admins - Apply client/project scope and access checks from allowed IDs, not only subcontractor is_scope_restricted (fixes user_can_access_* for portal) Fixes DRYTRIX/TimeTracker#592. Tests: extend test_scope_filter with client_portal_scoped_user and API isolation for GET /api/v1/projects.