-- ============================================================
-- Gustito Express — Hardening de permisos de funciones.
-- Postgres concede EXECUTE a PUBLIC por defecto al crear una funcion, dejando
-- funciones sensibles invocables por anon aunque solo las hayamos concedido a
-- authenticated/service_role. Casi todas se protegen internamente con
-- auth.uid(), pero cerramos el acceso de anon para reducir superficie.
--
-- CRITICO: aplicar_tasa_automatica NO tiene guarda interna. Con el grant de
-- PUBLIC, un anonimo podia fijar la tasa global y corromper los precios en Bs
-- de TODOS los restaurantes. Queda solo para service_role (cron / edge fn).
-- ============================================================

-- CRITICO: solo el servicio (cron/edge function) puede fijar la tasa global.
revoke execute on function public.aplicar_tasa_automatica(numeric, text) from public;

-- Acciones solo para usuarios autenticados (se quita el acceso de anon via PUBLIC).
revoke execute on function public.cambiar_estado_pedido(uuid, text) from public;
revoke execute on function public.confirmar_pago(uuid, text) from public;
revoke execute on function public.asignar_repartidor(uuid, uuid) from public;
revoke execute on function public.actualizar_ubicacion_repartidor(double precision, double precision) from public;
revoke execute on function public.cerrar_negocio() from public;
revoke execute on function public.tomar_pedido(uuid) from public;
revoke execute on function public.entregas_disponibles() from public;
revoke execute on function public.mi_perfil_repartidor() from public;
revoke execute on function public.cambiar_disponibilidad(boolean) from public;
revoke execute on function public.crear_restaurante(text, text) from public;
revoke execute on function public.generar_slug_unico(text) from public;

-- Las funciones de cara al comensal (anon) se mantienen: crear_pedido,
-- buscar_pedidos, pedido_seguimiento, pedido_ticket, pedido_datos_pago,
-- registrar_comprobante. Los helpers de RLS (fn_es_staff_de, fn_es_admin,
-- fn_mi_restaurante) tambien, pues las policies los evaluan en el rol que consulta.
