mirror of
https://github.com/PerpetualSoftware/pad.git
synced 2026-10-26 06:19:49 +00:00
ab4cd6926e
The per-tick recheck of GET /api/v1/events asked only about the principal. A soft delete keeps membership and grant rows for restore, so members, guests, the cookie admin and legacy tokens all stayed admitted, while the entry check refuses a deleted workspace to everyone. A stream open at delete time ran on for as long as the tab held it, taking a slot in the SSE budget. The recheck now asks about the workspace first, through the live-only GetWorkspaceByID: nil ends the stream with `unauthorized` for every principal, and a store error keeps the connection, like the checks after it. Collab sockets already close through authorizeCollabAccess. Claude-Session: https://claude.ai/code/session_01NidgPePY7UvHcEJCMkD2Qz