From 5a1e6a222da39342977282d841fd51977c770932 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 15 Jun 2025 21:48:12 +0000 Subject: [PATCH] Apply RLS policy for transaction inserts Enforce trial period and payment checks for transaction inserts using RLS. --- ...5-b5c952dd-377d-4caf-a0d8-ac185d484846.sql | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 supabase/migrations/20250615214805-b5c952dd-377d-4caf-a0d8-ac185d484846.sql diff --git a/supabase/migrations/20250615214805-b5c952dd-377d-4caf-a0d8-ac185d484846.sql b/supabase/migrations/20250615214805-b5c952dd-377d-4caf-a0d8-ac185d484846.sql new file mode 100644 index 0000000..260a55d --- /dev/null +++ b/supabase/migrations/20250615214805-b5c952dd-377d-4caf-a0d8-ac185d484846.sql @@ -0,0 +1,23 @@ + +-- Corrige a policy de insert na tabela transacoes para usar WITH CHECK +ALTER TABLE public.transacoes ENABLE ROW LEVEL SECURITY; + +DROP POLICY IF EXISTS "Permitir inserts apenas para assinantes ou trial" ON public.transacoes; + +CREATE POLICY "Permitir inserts apenas para assinantes ou trial" +ON public.transacoes +FOR INSERT +WITH CHECK ( + EXISTS (SELECT 1 FROM public.usuarios u WHERE u.email = login) + AND ( + (SELECT NOW() < u.created_at + INTERVAL '30 days' FROM public.usuarios u WHERE u.email = login) + OR EXISTS ( + SELECT 1 FROM public.pagamentos_mercadopago p + WHERE p.payer_email = login + AND p.status = 'approved' + ) + ) +); + +-- Permissão para os usuários autenticados continuarem acessando normalmente as outras operações +GRANT SELECT, INSERT, UPDATE, DELETE ON public.transacoes TO authenticated;