Roadbound-BRR/supabase/migrations/20260326201000_add_organization_icons.sql

59 lines
1.7 KiB
SQL

alter table public.organizations
add column if not exists icon_url text;
insert into storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
values (
'organization-icons',
'organization-icons',
true,
5242880,
array['image/png', 'image/jpeg', 'image/webp', 'image/gif']
)
on conflict (id) do update
set
public = excluded.public,
file_size_limit = excluded.file_size_limit,
allowed_mime_types = excluded.allowed_mime_types;
drop policy if exists "org_icons_public_read" on storage.objects;
create policy "org_icons_public_read"
on storage.objects
for select
to public
using (bucket_id = 'organization-icons');
drop policy if exists "org_icons_insert_admins" on storage.objects;
create policy "org_icons_insert_admins"
on storage.objects
for insert
to authenticated
with check (
bucket_id = 'organization-icons'
and owner_id = auth.uid()::text
and public.org_role(split_part(name, '/', 1)) in ('owner', 'admin')
);
drop policy if exists "org_icons_update_admins" on storage.objects;
create policy "org_icons_update_admins"
on storage.objects
for update
to authenticated
using (
bucket_id = 'organization-icons'
and public.org_role(split_part(name, '/', 1)) in ('owner', 'admin')
)
with check (
bucket_id = 'organization-icons'
and owner_id = auth.uid()::text
and public.org_role(split_part(name, '/', 1)) in ('owner', 'admin')
);
drop policy if exists "org_icons_delete_admins" on storage.objects;
create policy "org_icons_delete_admins"
on storage.objects
for delete
to authenticated
using (
bucket_id = 'organization-icons'
and public.org_role(split_part(name, '/', 1)) in ('owner', 'admin')
);