-
Notifications
You must be signed in to change notification settings - Fork 3
plat 505
| Field | Value |
|---|---|
| State | fixed on main |
| Priority | P1 |
| Product | schedules |
| Area | general |
| Summary | fixed on main, not deployed or checked live as a non-admin. |
State: fixed on main (not deployed, not checked live as a non-admin). P1.
Found: 2026-10-05, owner asked whether the global Schedules page is access controlled. Read from the code, not exploited:
-
GET /api/scheduler/jobsreturned every workflow's schedules (name, folder path, enabled, next/last run, durations) to any signed-in account, read-only ones included. The workflow part used a cache shared across users and never called the visibility check; Crew/Relay schedules were already per user. Per-job reads and actions did check visibility or ownership. -
PUT /api/scheduler/config, the global pause that stops every schedule on the platform, was wrapped only inrequireWorkflowWriteAccess, so any editor-level account could pause or resume all schedules, not only administrators.
Decision (owner, 2026-10-05): the global pause is administrators only. The schedules list is filtered to what the account may open (administrators see everything); the page stays available because each Crew's own Automations panel uses the same call.
Fix: the pause route uses requireAdmin; the list handler runs filterWorkflowManifestsForUser (the same filter the workflows list uses); the pause buttons show only to an administrator or in a single-user (local) run (useCanPauseSchedules). A local run has no accounts and keeps everything.
Left: deploy; then check live as a non-admin (list shows only their workflows, pause returns 403) and as an administrator (sees all, pause works).
PLAT-505, P1, fixed on main, not deployed or checked live as a non-admin. The schedules list is now filtered to what the account may open; the global pause is administrators only.
Auto-synced from docs/ on main. Edit there, not here.