Initial commit: WaMarket MVP
Marketplace inversée (Next.js 16 App Router + Supabase Cloud) : auth, schéma + RLS, publication de besoins avec upload d'images, feed avec filtres, offres, acceptation via RPC, messagerie temps réel, dashboards, et Dockerfile pour déploiement Coolify.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
-- Corrections suite au linter de sécurité Supabase (get_advisors) après 0002.
|
||||
|
||||
-- 1. Bucket public : pas besoin d'une policy SELECT (elle permet le listing
|
||||
-- complet du bucket, superflu — l'URL publique fonctionne sans RLS).
|
||||
drop policy if exists "need_images_bucket_read" on storage.objects;
|
||||
|
||||
-- 2. handle_new_user() ne doit être invocable que par le trigger, pas en RPC public.
|
||||
revoke execute on function public.handle_new_user() from public, anon, authenticated;
|
||||
|
||||
-- 3. accept_offer() : anon n'a aucune raison de l'appeler (auth.uid() sera
|
||||
-- toujours null pour lui, mais autant réduire la surface d'API exposée).
|
||||
revoke execute on function public.accept_offer(uuid) from anon;
|
||||
|
||||
-- 4. offer-images : resserrer la lecture aux seuls participants (marchand
|
||||
-- auteur de l'offre, ou auteur du besoin concerné) au lieu de "tout
|
||||
-- utilisateur connecté".
|
||||
drop policy if exists "offer_images_bucket_read" on storage.objects;
|
||||
create policy "offer_images_bucket_read"
|
||||
on storage.objects for select
|
||||
to authenticated
|
||||
using (
|
||||
bucket_id = 'offer-images'
|
||||
and exists (
|
||||
select 1
|
||||
from public.offer_images oi
|
||||
join public.offers o on o.id = oi.offer_id
|
||||
where oi.storage_path = storage.objects.name
|
||||
and (
|
||||
o.merchant_id = auth.uid()
|
||||
or exists (select 1 from public.needs n where n.id = o.need_id and n.author_id = auth.uid())
|
||||
)
|
||||
)
|
||||
);
|
||||
Reference in New Issue
Block a user