Supabase Storage policies control access to files in storage buckets. Portal Ciudadano Manta uses the imagenes bucket for storing photos from news articles, reports, and surveys.Location: sql/storage_policies.sql
Storage buckets require RLS-style policies. Without policies, no one can upload or access files.
CREATE POLICY "Administradores pueden subir imágenes de noticias"ON storage.objectsFOR INSERTTO authenticatedWITH CHECK ( bucket_id = 'imagenes' AND (storage.foldername(name))[1] = 'noticias' AND EXISTS ( SELECT 1 FROM public.administradores WHERE id = auth.uid() ));
CREATE POLICY "Administradores pueden actualizar imágenes de noticias"ON storage.objectsFOR UPDATETO authenticatedUSING ( bucket_id = 'imagenes' AND (storage.foldername(name))[1] = 'noticias' AND EXISTS ( SELECT 1 FROM public.administradores WHERE id = auth.uid() ));
CREATE POLICY "Administradores pueden eliminar imágenes de noticias"ON storage.objectsFOR DELETETO authenticatedUSING ( bucket_id = 'imagenes' AND (storage.foldername(name))[1] = 'noticias' AND EXISTS ( SELECT 1 FROM public.administradores WHERE id = auth.uid() ));
CREATE POLICY "Usuarios pueden subir imágenes de reportes"ON storage.objectsFOR INSERTTO authenticatedWITH CHECK ( bucket_id = 'imagenes' AND (storage.foldername(name))[1] = 'reportes' AND EXISTS ( SELECT 1 FROM public.usuarios WHERE id = auth.uid() ));
CREATE POLICY "Usuarios pueden eliminar sus imágenes de reportes"ON storage.objectsFOR DELETETO authenticatedUSING ( bucket_id = 'imagenes' AND (storage.foldername(name))[1] = 'reportes' AND owner = auth.uid());
Users can only delete images they uploaded (matched by owner field).
CREATE POLICY "Administradores pueden subir imágenes de encuestas"ON storage.objectsFOR INSERTTO authenticatedWITH CHECK ( bucket_id = 'imagenes' AND (storage.foldername(name))[1] = 'encuestas' AND EXISTS ( SELECT 1 FROM public.administradores WHERE id = auth.uid() ));
CREATE POLICY "Administradores pueden eliminar imágenes de encuestas"ON storage.objectsFOR DELETETO authenticatedUSING ( bucket_id = 'imagenes' AND (storage.foldername(name))[1] = 'encuestas' AND EXISTS ( SELECT 1 FROM public.administradores WHERE id = auth.uid() ));