Перейти к содержанию

Действие: исправление RLS для room_bookings_analytics

Дата: 2026-03-16

Связанные документы: - [[docs/15_результаты/результат_rls_room_bookings_analytics]] - [[docs/16_изменения/изменение_rls_room_bookings_analytics]]

Контекст

При создании бронирования (в том числе в пользовательском сценарии сразу после регистрации) операция падала с ошибкой:

new row violates row-level security policy for table "room_bookings_analytics"

Таблица public.room_bookings_analytics — теневая (shadow) аналитическая таблица, синхронизируемая триггером с public.room_bookings.

Что сделано

  1. Добавлена миграция, которая:
  2. делает триггер-функцию синхронизации public.sync_room_bookings_analytics() SECURITY DEFINER;
  3. фиксирует владельца функции на postgres;
  4. включает RLS на public.room_bookings_analytics (идемпотентно);
  5. добавляет точечные RLS-политики для anon и authenticated, разрешающие изменения только внутри триггера (pg_trigger_depth() > 0).

Файл миграции: - [[supabase/migrations/20260316113000_room_bookings_analytics_trigger_rls.sql]]

Как проверять

После применения миграции: - создание записи в public.room_bookings не должно падать из-за RLS на public.room_bookings_analytics; - прямой доступ к public.room_bookings_analytics через Data API (без service_role) остаётся закрытым (SELECT не разрешён, а INSERT/UPDATE/DELETE разрешены только при pg_trigger_depth() > 0).