admin
a3a0b706a1
Board-member upload permission for documents & bids/quotes
...
Add a "Allow document & bid/quote uploads" toggle on board member profiles
(board_members.can_upload). When enabled, that board member can upload
association documents and create/manage bids & quotes for their association(s);
otherwise the board portal stays read-only for them.
- Migration (prod): board_members.can_upload column; tighten the documents
insert + storage 'files' upload policies to require can_upload; add a
bids_quotes board policy gated on can_upload.
- BoardMembersPage: permission switch (load/save).
- BoardAssociationContext: expose canUpload for the selected association.
- DocumentsPage: board upload gated by the flag (was always-on for board).
- BidsQuotesPage: permitted board members can add/manage bids (was hidden);
board inserts target the board's association.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-01 23:33:09 -04:00
..
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:19:26 -04:00
2026-06-01 20:57:01 -04:00
2026-06-01 21:36:55 -04:00
2026-06-01 21:41:51 -04:00
2026-06-01 22:39:07 -04:00
2026-06-01 23:06:00 -04:00
2026-06-01 23:33:09 -04:00