From 215090d2974bbac9cc215acf691ac6ae4040fb0a Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Mon, 26 Oct 2026 09:57:35 +0100 Subject: [PATCH] =?UTF-8?q?Migration=20m35:=20il=20voto=20MVP=20=C3=A8=20d?= =?UTF-8?q?efinitivo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Il giocatore può solo inserire il proprio voto: UPDATE e DELETE restano agli admin. Da applicare su Supabase con db push (non ancora fatto). Co-Authored-By: Claude Sonnet 5.5 --- .../20261026150000_m35_voto_mvp_definitivo.sql | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 supabase/migrations/20261026150000_m35_voto_mvp_definitivo.sql diff --git a/supabase/migrations/20261026150000_m35_voto_mvp_definitivo.sql b/supabase/migrations/20261026150000_m35_voto_mvp_definitivo.sql new file mode 100644 index 0000000..9b5ff0a --- /dev/null +++ b/supabase/migrations/20261026150000_m35_voto_mvp_definitivo.sql @@ -0,0 +1,18 @@ +-- M35 — Il voto MVP è definitivo (DD-051) +-- +-- Prima un giocatore poteva cambiare o togliere il proprio voto (policy FOR ALL, M11/M13). Ora può +-- solo inserirlo: UPDATE e DELETE restano agli admin (policy «Gli admin gestiscono tutti i voti +-- MVP», M11), che possono correggere un voto sbagliato. Il vincolo UNIQUE (match_id, votante_id) +-- fa il resto: un secondo voto sulla stessa partita viene rifiutato. + +DROP POLICY "Ognuno gestisce il proprio voto MVP" ON public.mvp_voti; + +CREATE POLICY "Ognuno registra il proprio voto MVP" ON public.mvp_voti + FOR INSERT TO authenticated + WITH CHECK ( + EXISTS ( + SELECT 1 FROM public.giocatori_squadra g + WHERE g.id = votante_id AND g.auth_user_id = auth.uid() + ) + AND public.evento_permette_voto(match_id, votante_id, votato_id, false) + );