Initial commit: monorepo Naturcalabacera reservas (apps/api + apps/web + packages/shared)
This commit is contained in:
25
supabase/migrations/008_add_availability_view.sql
Normal file
25
supabase/migrations/008_add_availability_view.sql
Normal file
@@ -0,0 +1,25 @@
|
||||
-- Migración 008: Vista segura para usuarios con rol external_availability_viewer
|
||||
--
|
||||
-- Problema: RLS limita FILAS pero no COLUMNAS.
|
||||
-- Los usuarios Teneriffa solo deben ver ocupado/libre, sin datos personales.
|
||||
-- Solución: vista que expone únicamente los campos necesarios.
|
||||
-- El frontend de Teneriffa consulta esta vista, no la tabla directa.
|
||||
|
||||
CREATE OR REPLACE VIEW public.reservations_availability AS
|
||||
SELECT
|
||||
id,
|
||||
start_date,
|
||||
end_date,
|
||||
property,
|
||||
'Ocupado' AS status -- Nunca expone el origen real ni el cliente
|
||||
FROM public.reservations;
|
||||
|
||||
-- Dar acceso de SELECT a usuarios authenticated a la vista
|
||||
-- La seguridad real se gestiona en el frontend con useUserRole()
|
||||
-- y en la migración 009 mediante RLS en la tabla base.
|
||||
GRANT SELECT ON public.reservations_availability TO authenticated;
|
||||
|
||||
COMMENT ON VIEW public.reservations_availability IS
|
||||
'Vista de disponibilidad segura. Solo expone fechas y propiedad. '
|
||||
'Usada por usuarios external_availability_viewer (Teneriffa). '
|
||||
'No expone cliente, precios, notas ni datos personales.';
|
||||
Reference in New Issue
Block a user