first commit
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
-- Faz 1: public read access needed by the customer-facing web renderer and
|
||||
-- the QR stable-redirect route (PRD §9, §12). Menu/category/item public
|
||||
-- policies already exist from the initial schema.
|
||||
--
|
||||
-- locations needs its own public policy first: the EXISTS subqueries below
|
||||
-- (restaurants, restaurant_themes) and the web app's embedded join query
|
||||
-- both read `locations` under the anon role, which is itself subject to RLS.
|
||||
|
||||
create policy "anyone can read locations with a published menu" on locations
|
||||
for select using (
|
||||
exists (
|
||||
select 1 from menus m where m.location_id = locations.id and m.is_published = true
|
||||
)
|
||||
);
|
||||
|
||||
create policy "anyone can read restaurants with a published menu" on restaurants
|
||||
for select using (
|
||||
exists (
|
||||
select 1
|
||||
from locations l
|
||||
join menus m on m.location_id = l.id
|
||||
where l.restaurant_id = restaurants.id and m.is_published = true
|
||||
)
|
||||
);
|
||||
|
||||
create policy "anyone can read theme of restaurants with a published menu" on restaurant_themes
|
||||
for select using (
|
||||
exists (
|
||||
select 1
|
||||
from locations l
|
||||
join menus m on m.location_id = l.id
|
||||
where l.restaurant_id = restaurant_themes.restaurant_id and m.is_published = true
|
||||
)
|
||||
);
|
||||
|
||||
-- target_url is a public destination URL, not sensitive — needed so the
|
||||
-- unauthenticated /q/:id redirect route can resolve it.
|
||||
create policy "anyone can read qr codes for redirect resolution" on qr_codes
|
||||
for select using (true);
|
||||
Reference in New Issue
Block a user