Share it · 16
Who sees which rows
The answer to “our agents must only see their own accounts.” The owner picks the column that says whose row it is and gives each person their values. Every tile and every list of values then narrows to those rows for that person. Someone with no value sees an empty board that says so, never the whole book.
Setting it up
- The owner picks the column that says whose rows these are. The agent on a policy, the rep on an order. It is picked from what the model declares and never typed, so a typo cannot quietly become a rule that matches nothing.
- Every tile is tried before it switches on. With the real engine on the real saved queries. A tile that never reads the secured table has nothing to narrow, so those are named one by one, for the owner to change or accept.
- Each person is given their values. On a list of everyone the board is shared with. A blank means that person sees nothing, and the list says so. The owner is on it like everyone else.
A teammate opens the board
- A teammate opens the board. They do nothing different. No setting of theirs can lift the limit.
- Their values are written into every tile's query. Where a tile reads a different table, the limit reaches it through the joins the model declares. Then it is proven: if the limit did not land in the query that is about to run, the tile is refused. It never falls back to showing every row.
- The query runs on the owner's connection. The lists of values a slicer offers are narrowed the same way, so a person cannot read another's customers off a list.
Seeing it as someone else. The owner can pick a person and watch the same board answer as that person would see it. Only the owner can, and the board says plainly, for as long as it lasts, whose view it is showing.