Agenda, Agendador, Configurações
This commit is contained in:
56
DBS/2026-03-11/migrations/agendador_storage.sql
Normal file
56
DBS/2026-03-11/migrations/agendador_storage.sql
Normal file
@@ -0,0 +1,56 @@
|
||||
-- ═══════════════════════════════════════════════════════════════════════════
|
||||
-- Storage bucket para imagens do Agendador Online
|
||||
-- Execute no Supabase SQL Editor
|
||||
-- ═══════════════════════════════════════════════════════════════════════════
|
||||
|
||||
-- ── 1. Criar o bucket ──────────────────────────────────────────────────────
|
||||
INSERT INTO storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
|
||||
VALUES (
|
||||
'agendador',
|
||||
'agendador',
|
||||
true, -- público (URLs diretas sem assinar)
|
||||
5242880, -- 5 MB
|
||||
ARRAY['image/jpeg','image/png','image/webp','image/gif']
|
||||
)
|
||||
ON CONFLICT (id) DO UPDATE
|
||||
SET public = true,
|
||||
file_size_limit = 5242880,
|
||||
allowed_mime_types = ARRAY['image/jpeg','image/png','image/webp','image/gif'];
|
||||
|
||||
-- ── 2. Políticas ───────────────────────────────────────────────────────────
|
||||
|
||||
-- Leitura pública (anon e authenticated)
|
||||
DROP POLICY IF EXISTS "agendador_storage_public_read" ON storage.objects;
|
||||
CREATE POLICY "agendador_storage_public_read"
|
||||
ON storage.objects FOR SELECT
|
||||
USING (bucket_id = 'agendador');
|
||||
|
||||
-- Upload: apenas o dono da pasta (owner_id é o primeiro segmento do path)
|
||||
DROP POLICY IF EXISTS "agendador_storage_owner_insert" ON storage.objects;
|
||||
CREATE POLICY "agendador_storage_owner_insert"
|
||||
ON storage.objects FOR INSERT
|
||||
TO authenticated
|
||||
WITH CHECK (
|
||||
bucket_id = 'agendador'
|
||||
AND (storage.foldername(name))[1] = auth.uid()::text
|
||||
);
|
||||
|
||||
-- Update/upsert pelo dono
|
||||
DROP POLICY IF EXISTS "agendador_storage_owner_update" ON storage.objects;
|
||||
CREATE POLICY "agendador_storage_owner_update"
|
||||
ON storage.objects FOR UPDATE
|
||||
TO authenticated
|
||||
USING (
|
||||
bucket_id = 'agendador'
|
||||
AND (storage.foldername(name))[1] = auth.uid()::text
|
||||
);
|
||||
|
||||
-- Delete pelo dono
|
||||
DROP POLICY IF EXISTS "agendador_storage_owner_delete" ON storage.objects;
|
||||
CREATE POLICY "agendador_storage_owner_delete"
|
||||
ON storage.objects FOR DELETE
|
||||
TO authenticated
|
||||
USING (
|
||||
bucket_id = 'agendador'
|
||||
AND (storage.foldername(name))[1] = auth.uid()::text
|
||||
);
|
||||
Reference in New Issue
Block a user