-- ========================================== -- FIX CRITIQUE : RLS sur organization_details -- ========================================== -- PROBLÈME: RLS désactivé sur table contenant IBAN, BIC, emails, SIRET -- IMPACT: Exposition de 40+ colonnes de données bancaires et personnelles -- PRIORITÉ: CRITIQUE (violation RGPD) -- ========================================== -- 1️⃣ ACTIVER RLS ALTER TABLE organization_details ENABLE ROW LEVEL SECURITY; -- 2️⃣ POLITIQUE SELECT : Les membres peuvent voir leur organisation CREATE POLICY "select_by_org_or_staff" ON organization_details FOR SELECT USING (is_member_of_org(org_id)); -- 3️⃣ POLITIQUE UPDATE : Les membres peuvent modifier leur organisation -- Note: Dans le code, org_id est exclu des UPDATE via .update({ ...orgData, org_id: undefined }) CREATE POLICY "update_by_org_or_staff" ON organization_details FOR UPDATE USING (is_member_of_org(org_id)) WITH CHECK (is_member_of_org(org_id)); -- 4️⃣ POLITIQUE INSERT : Les membres peuvent créer leur organisation -- Note: Utilisé lors de la création initiale d'une organisation CREATE POLICY "insert_by_org_or_staff" ON organization_details FOR INSERT WITH CHECK (is_member_of_org(org_id)); -- 5️⃣ POLITIQUE DELETE : Protection supplémentaire (normalement pas utilisé) CREATE POLICY "delete_by_org_or_staff" ON organization_details FOR DELETE USING (is_member_of_org(org_id)); -- ========================================== -- VÉRIFICATION POST-FIX -- ========================================== -- Vérifier que RLS est activé SELECT tablename, rowsecurity AS rls_enabled FROM pg_tables WHERE tablename = 'organization_details'; -- Vérifier les politiques créées (devrait retourner 4 lignes) SELECT policyname, cmd, qual, with_check FROM pg_policies WHERE tablename = 'organization_details' ORDER BY cmd; -- Vérifier les index existants (devrait retourner 3 index sur org_id) SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'organization_details' AND indexdef ILIKE '%org_id%'; -- ========================================== -- RÉSULTAT ATTENDU -- ========================================== -- ✅ RLS activé: true -- ✅ 4 politiques créées: SELECT, INSERT, UPDATE, DELETE -- ✅ 3 index existants sur org_id (performance garantie) -- ==========================================