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

Изменение: политики RLS для room_bookings_analytics только для триггеров

Дата: 2026-03-16

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

Проблема

При записи в public.room_bookings срабатывал триггер, который синхронизирует данные в public.room_bookings_analytics. Поскольку на room_bookings_analytics включён RLS (в том числе из-за авто-включения RLS на новых таблицах), операция внутри триггера выполнялась в контексте роли пользователя и могла блокироваться политиками/их отсутствием.

Решение

  1. public.sync_room_bookings_analytics() переведена в SECURITY DEFINER и принудительно назначен владелец postgres.
  2. Для public.room_bookings_analytics добавлены политики:
  3. service_role: полный доступ (для админских/сервисных операций);
  4. anon и authenticated: разрешены INSERT/UPDATE/DELETE только внутри триггера (условие pg_trigger_depth() > 0).

Артефакты

  • [[supabase/migrations/20260316113000_room_bookings_analytics_trigger_rls.sql]]