ScoreTab viste hele turneringsfeltet i stedet for brukerens egen utslagsgruppe. Defaulter nå til egen flight med "vis hele feltet"- veksling og fallback når gruppe mangler. is_self beregnes server-side (aldri rå user_id). Lukker et reelt RLS-hull på tournament_round_group funnet underveis (migrasjon 089). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
27 lines
1.5 KiB
SQL
27 lines
1.5 KiB
SQL
-- =====================================================================
|
|
-- TeeCup — migrasjon 089
|
|
-- RLS på tournament_round_group (lukker et hull fra migrasjon 084)
|
|
-- =====================================================================
|
|
-- Oppdaget under kartlegging til parity-arbeidet (score-føring i
|
|
-- turnering vs. frittstående runde, 2026-08-21): tournament_round_group
|
|
-- (opprettet i 084_tournament_round_groups.sql, utvidet i
|
|
-- 088_shotgun_start.sql) fikk ALDRI standard org_isolation-RLS-policyen
|
|
-- som ellers gjelder alle domenetabeller (ADR-003) -- i strid med
|
|
-- arkitektur-invarianten i CLAUDE.md. Ingen begrunnet unntak (i
|
|
-- motsetning til f.eks. round_shot/round_hole/round_message, som
|
|
-- bevisst står utenfor RLS per ADR-033 Beslutning A). I praksis kun
|
|
-- beskyttet av WHERE-ledd i applikasjonskoden frem til nå.
|
|
--
|
|
-- Ingen dataendring, kun policy -- alle eksisterende spørringer går
|
|
-- allerede via org_connection() (setter app.current_org), så dette er
|
|
-- additivt, ikke en atferdsendring for korrekt scopet kode.
|
|
-- =====================================================================
|
|
|
|
\set ON_ERROR_STOP on
|
|
|
|
ALTER TABLE tournament_round_group ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE tournament_round_group FORCE ROW LEVEL SECURITY;
|
|
|
|
CREATE POLICY org_isolation ON tournament_round_group
|
|
USING (organization_id = current_setting('app.current_org', true)::uuid)
|
|
WITH CHECK (organization_id = current_setting('app.current_org', true)::uuid);
|