The demos booked on a lead, on the lead

FeatureSecurityService
Shipped
September 17, 2026 at 5:48 PM UTC
Author
Kamo
Commit
82cee28

GET **************** The lead page's Webinars section has called /api/webinar/leads/{id} since it was written and nothing ever served it — the live API answers 404, and the component reads a 404 as "the webinar feature is off" and renders nothing. So a demo booked from the marketing site created a lead, linked the booking to it, and never showed on it. Served here rather than in MediaService, which owns the bookings, because the question a caller has to pass first is "may you read this lead": valid session, lead in the caller's organization, then LeadCommsReadGate — own lead needs no right, an unassigned one needs VIEW_UNASSIGNED_LEADS, somebody else's needs VIEW_LEAD_CONTACT_INFO_OTHERS, god bypasses. The gate is the one the communications tab uses, called, not copied. Denials are recorded through PhiAccessAuditor; a read is not, because the response carries no contact data — the same line the /communications/counts endpoint draws. LeadWebinarEntry is title, start/end, presenter name and the two statuses. Nothing about the attendee beyond whether they are still coming: the visitor's name and address are the lead's own and already on the page. A visitor who cancels and registers again produces a second link to the same attendee row, and the section shows that once. The five failures in the full suite **************** x4, **************** — which flags **************** not this) fail identically on origin/main without this change. This endpoint resolves a session, so the ratchet does not name it. 2712 tests otherwise green.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing