Permissions inside the query
Access checks are part of the database query, not a filter applied to a wider result. There is no over-broad set to forget to narrow.
Negen soorten records, en alleen wat jij mag openen.
Eén zoekactie dekt organisaties, projecten, documenten, taken, playbooks, bedrijven, formulieren, automatiseringen en dashboards, samen of één voor één. Lidmaatschapscontroles zitten in de query zelf, dus een rij die je niet mag zien wordt niet eens opgehaald. Resultaten stoppen bij twintig, zodat het zoekvak geen belastingprobleem kan worden.
Productvoorbeeld
Dit is hetzelfde visuele component als in de ingelogde applicatie, met voorspelbare voorbeelddata.
Results include only the organizations, projects and documents you can already open.
Inerte voorbeelddata · geen netwerktoegang
3 results · “pipeline”
↑↓to move↵to open
Voorbeeld gereed
Kernpunten
Access checks are part of the database query, not a filter applied to a wider result. There is no over-broad set to forget to narrow.
A query is 1 to 100 characters, results cap at 20 globally ranked matches, and wildcard characters are escaped before any database work starts.
Search one registered type, a named group, or any combination. The registry records what is searchable, by whom, and with what limits.
Zonder een gedeelde basis bouwt elk team deze randgevallen opnieuw, en anders.
Search that fetches broadly and filters afterwards will eventually miss a path. Joining the membership check into the query means the rows were never fetched, so there is nothing to leak.
Without caps, one very long query or one enormous result set turns our own search box into the thing that slows everything down. Hard limits on length and results prevent that.
When nothing records what is searchable and under which permission, every new feature reinvents search and re-argues access from scratch. One registry answers it once.
Het mechanisme van begin tot eind, zoals het in de repository is geïmplementeerd.
Input is validated first
Query length, requested types and groups, filters, sort and result limit are all checked, and wildcard characters are escaped, before any database work begins.
The server picks the scope
Your active organization and project come from the session. The browser never decides whose records are searched.
Permissions join the query
Membership predicates are joined into the search itself, so candidate rows are narrowed before matching and ranking run.
Only selected lanes run
Groups and explicit types resolve to one canonical set. Only those authorized lanes execute, and their results receive a single global relevance order.
Technische garanties
Iets vinden is geen toestemming om het te openen. Elk onderdeel controleert de toegang opnieuw als je het resultaat opent of bewerkt. Gesprekken, besluiten, doelen, campagnes en financiële posten zijn vandaag niet geïndexeerd; bedrijven en playbooks zijn de Growth Kit-records die de zoekfunctie bereikt.
De grens hierboven is geen claim maar code. Deze bestanden dragen het contract:
src/db/postgres-search.tssrc/registries/search-indexes.tssrc/features/search/targets.tssrc/features/search/server.tsDeze functies delen contracten en grenzen met deze pagina.
De documentatie beschrijft dezelfde contracten die deze pagina demonstreert.