Gate the member board on being a team member with a role open

FeatureDocsService
Shipped
September 6, 2026 at 1:21 AM UTC
Author
Kamo
Commit
d8c43f6

The member Careers tab now appears on two conditions and no right among them: the viewer is a team member, and the organization has at least one posting open and taking applications. CareersAccess.requireView is moved to the same rule, because a server set narrower than the tab's leaves a member opening it and collecting a 403 over an empty grid. That IS a widening, and it is worth naming rather than burying: VIEW_JOB_LISTINGS used to decide this, so an organization could keep its people off the internal board and some did while a reorganisation was in flight. It no longer can. The right still gates what an org publishes; what it no longer does is hide an open posting from staff. The blast radius is unchanged — the board is the org's own list of adverts, which it chose to open, and no endpoint on this surface takes a member id, so it cannot return anybody else's submission. Reading who ELSE applied is still MANAGE_JOB_POSTINGS alone. With the rights gate gone, the base-member exclusion is the only thing left between the internal board and somebody with no employment relationship at all — a customer, a portal user, a securityProvider mirror. It is load-bearing now, and pinned as such. openingsAcceptingApplications counts the POSTING, never the caller. A listing's canApply also goes false once THIS member has applied, and counting that way would delete the tab the moment somebody applied to the last open role — taking with it the one surface where their own application can be read, edited or withdrawn. ON_HOLD does not count either: it belongs on the board as information, but nothing can be filed against it. Its own endpoint rather than a field on the board, because the answer is needed before the tab exists and the tab's own first act is to fetch that board — gating on it would mean two identical round trips per profile visit, one thrown away. isHrs drops out of the tab gate as an assertion and returns as an implication: a posting is written from the HR module, so an org without it can never count above zero.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing