90 lines
2.8 KiB
SQL
90 lines
2.8 KiB
SQL
-- Create project-thumbnails storage bucket (public read, service-role write)
|
|
INSERT INTO storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
|
|
VALUES (
|
|
'project-thumbnails',
|
|
'project-thumbnails',
|
|
true,
|
|
10485760, -- 10MB
|
|
ARRAY['image/png']
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- Allow public read on project-thumbnails bucket
|
|
CREATE POLICY "Public read project thumbnails"
|
|
ON storage.objects FOR SELECT
|
|
USING (bucket_id = 'project-thumbnails');
|
|
|
|
-- Allow service role (and authenticated users) to upload to project-thumbnails
|
|
CREATE POLICY "Service role upload project thumbnails"
|
|
ON storage.objects FOR INSERT
|
|
WITH CHECK (bucket_id = 'project-thumbnails');
|
|
|
|
-- Allow service role to update/delete project-thumbnails
|
|
CREATE POLICY "Service role update project thumbnails"
|
|
ON storage.objects FOR UPDATE
|
|
USING (bucket_id = 'project-thumbnails');
|
|
|
|
CREATE POLICY "Service role delete project thumbnails"
|
|
ON storage.objects FOR DELETE
|
|
USING (bucket_id = 'project-thumbnails');
|
|
|
|
|
|
-- Create project-assets storage bucket (public read, service-role write)
|
|
INSERT INTO storage.buckets (id, name, public, file_size_limit)
|
|
VALUES (
|
|
'project-assets',
|
|
'project-assets',
|
|
true,
|
|
524288000 -- 500MB
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- Allow public read on project-assets bucket
|
|
CREATE POLICY "Public read project assets"
|
|
ON storage.objects FOR SELECT
|
|
USING (bucket_id = 'project-assets');
|
|
|
|
-- Allow service role (and authenticated users) to upload to project-assets
|
|
CREATE POLICY "Service role upload project assets"
|
|
ON storage.objects FOR INSERT
|
|
WITH CHECK (bucket_id = 'project-assets');
|
|
|
|
-- Allow service role to update/delete project-assets
|
|
CREATE POLICY "Service role update project assets"
|
|
ON storage.objects FOR UPDATE
|
|
USING (bucket_id = 'project-assets');
|
|
|
|
CREATE POLICY "Service role delete project assets"
|
|
ON storage.objects FOR DELETE
|
|
USING (bucket_id = 'project-assets');
|
|
|
|
|
|
-- Create avatars storage bucket (public read, service-role write)
|
|
INSERT INTO storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
|
|
VALUES (
|
|
'avatars',
|
|
'avatars',
|
|
true,
|
|
5242880, -- 5MB
|
|
ARRAY['image/png', 'image/jpeg', 'image/webp', 'image/gif']
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- Allow public read on avatars bucket
|
|
CREATE POLICY "Public read avatars"
|
|
ON storage.objects FOR SELECT
|
|
USING (bucket_id = 'avatars');
|
|
|
|
-- Allow service role (and authenticated users) to upload to avatars
|
|
CREATE POLICY "Service role upload avatars"
|
|
ON storage.objects FOR INSERT
|
|
WITH CHECK (bucket_id = 'avatars');
|
|
|
|
-- Allow service role to update/delete avatars
|
|
CREATE POLICY "Service role update avatars"
|
|
ON storage.objects FOR UPDATE
|
|
USING (bucket_id = 'avatars');
|
|
|
|
CREATE POLICY "Service role delete avatars"
|
|
ON storage.objects FOR DELETE
|
|
USING (bucket_id = 'avatars'); |