26 lines
1.0 KiB
SQL
26 lines
1.0 KiB
SQL
-- ============================================================================
|
|
-- Add sender_device_id to messages so receivers know which device's public
|
|
-- key to verify against when decrypting an envelope.
|
|
-- ============================================================================
|
|
|
|
alter table public.messages
|
|
add column if not exists sender_device_id uuid references public.devices(id) on delete set null;
|
|
|
|
create index if not exists messages_sender_device_idx on public.messages(sender_device_id);
|
|
|
|
-- Tighten the insert policy: sender_device_id (when set) must belong to the caller.
|
|
drop policy if exists messages_insert_member on public.messages;
|
|
create policy messages_insert_member on public.messages
|
|
for insert to authenticated
|
|
with check (
|
|
sender_id = auth.uid()
|
|
and public.is_conversation_member(conversation_id)
|
|
and (
|
|
sender_device_id is null
|
|
or exists (
|
|
select 1 from public.devices d
|
|
where d.id = sender_device_id and d.user_id = auth.uid()
|
|
)
|
|
)
|
|
);
|