-- ========================================================================== -- Agencia PSI โ€” Migracao: RLS notification_channels permite ler soft-deleted -- ========================================================================== -- Criado por: Leonardo Nohama -- Data: 2026-04-23 ยท Sao Carlos/SP โ€” Brasil -- -- Contexto: a policy antiga "notif_channels_select" filtrava -- `deleted_at IS NULL` como primeira condicao AND, bloqueando qualquer -- leitura de canais soft-deleted mesmo pros donos/saas_admin. Isso impedia -- o fluxo de reativacao (chooser e pagina do tenant nao conseguiam detectar -- que havia canal deletado pra oferecer "Reativar"). -- -- Solucao: remover o filtro da policy. O controle de soft-delete fica no -- codigo aplicativo (cada query filtra .is('deleted_at', null) quando -- quer apenas canais ativos). Canais soft-deleted continuam acessiveis -- apenas pros roles autorizados (owner, membro do tenant, saas_admin) โ€” -- a privacidade nao muda. -- ========================================================================== DROP POLICY IF EXISTS notif_channels_select ON public.notification_channels; CREATE POLICY notif_channels_select ON public.notification_channels FOR SELECT USING ( public.is_saas_admin() OR owner_id = auth.uid() OR tenant_id IN ( SELECT tm.tenant_id FROM public.tenant_members tm WHERE tm.user_id = auth.uid() AND tm.status = 'active' ) ); COMMENT ON POLICY notif_channels_select ON public.notification_channels IS 'Owner, membros ativos do tenant e saas_admin leem todos os canais (inclusive soft-deleted). Filtro deleted_at fica no codigo aplicativo.';