-- HALLAZGO 3 DE LA AUDITORIA: los datos fiscales del negocio quedaban
-- publicos.
--
-- Un anonimo, con la llave que va dentro del navegador, recibia las 42
-- columnas de cada restaurante, incluidos `rif`, `razon_social` y
-- `domicilio_fiscal`. Hoy vienen vacias porque nadie ha cargado sus datos
-- fiscales todavia; el dia que los carguen, quedan a la vista de cualquiera y
-- se pueden raspar los de todos los negocios de la plataforma.
--
-- LA RAIZ: el permiso estaba dado sobre la TABLA COMPLETA. Mientras sea asi,
-- cada columna nueva que se agregue nace publica sin que nadie lo decida. No
-- alcanza con revocar las tres columnas (probado en vivo: el permiso de tabla
-- lo pisa y el revoke de columna queda en nada).
--
-- Como queda: al publico se le da permiso COLUMNA POR COLUMNA, solo sobre lo
-- que la tienda necesita para funcionar. Una columna nueva ya no nace
-- publica: hay que darle permiso a proposito, que es como debe ser.
--
-- El dueño del negocio (authenticated) sigue viendo todo: sus datos fiscales
-- los usa en Configuracion, y ahi manda la politica de RLS, que solo le
-- muestra SU restaurante.

begin;

-- Se quita el permiso sobre la tabla completa (el que estaba de mas).
revoke select on public.restaurantes from anon;

-- Y se da solo sobre lo que la tienda y el directorio usan de verdad.
grant select (
  id, slug, nombre, descripcion, logo_url, portada_url, color_primario,
  telefono, direccion, latitud, longitud, tasa_bs, tasa_automatica,
  pago_movil_datos, metodos_pago, costo_delivery_usd, hace_delivery,
  hace_pickup, delivery_modo, delivery_radio_km, horarios, abierto, activo,
  publicado, onboarding_completo, creado_en, actualizado_en, rubro, estado_ve,
  municipio, en_directorio, num_mesas, rubros, sala_promedio_min,
  contador_pedidos, prefijo, ultimo_cierre_en, iva_alicuota, precios_con_iva
) on public.restaurantes to anon;

commit;
