-- Create storage bucket for content images INSERT INTO storage.buckets (id, name, public, file_size_limit, allowed_mime_types) VALUES ( 'content-images', 'content-images', true, -- public bucket 5242880, -- 5MB limit ARRAY['image/jpeg', 'image/png', 'image/gif', 'image/webp'] ) ON CONFLICT (id) DO NOTHING; -- Create RLS policies for the bucket -- Allow authenticated users to upload images CREATE POLICY "Authenticated users can upload images" ON storage.objects FOR INSERT TO authenticated WITH CHECK (bucket_id = 'content-images'); -- Allow authenticated users to update their own images CREATE POLICY "Users can update own images" ON storage.objects FOR UPDATE TO authenticated USING (bucket_id = 'content-images' AND auth.uid()::text = (storage.foldername(name))[1]) WITH CHECK (bucket_id = 'content-images'); -- Allow authenticated users to delete their own images CREATE POLICY "Users can delete own images" ON storage.objects FOR DELETE TO authenticated USING (bucket_id = 'content-images' AND auth.uid()::text = (storage.foldername(name))[1]); -- Allow public read access to all images CREATE POLICY "Public can view images" ON storage.objects FOR SELECT TO public USING (bucket_id = 'content-images');