-- Vérification RLS pour VIREMENTS-SALAIRES et COTISATIONS
-- Tables critiques: salary_transfers, monthly_contributions, contribution_notifications

-- 1️⃣ VÉRIFICATION RLS ACTIVÉE
SELECT 
  schemaname,
  tablename,
  rowsecurity AS rls_enabled
FROM pg_tables
WHERE tablename IN ('salary_transfers', 'monthly_contributions', 'contribution_notifications')
ORDER BY tablename;

-- 2️⃣ POLITIQUES RLS EXISTANTES
SELECT 
  schemaname,
  tablename,
  policyname,
  permissive,
  roles,
  cmd,
  qual,
  with_check
FROM pg_policies
WHERE tablename IN ('salary_transfers', 'monthly_contributions', 'contribution_notifications')
ORDER BY tablename, cmd, policyname;

-- 3️⃣ INDEX SUR org_id
SELECT
  schemaname,
  tablename,
  indexname,
  indexdef
FROM pg_indexes
WHERE tablename IN ('salary_transfers', 'monthly_contributions', 'contribution_notifications')
  AND indexdef ILIKE '%org_id%'
ORDER BY tablename, indexname;

-- ================================================================================
-- RÉSULTATS DE VÉRIFICATION (16 octobre 2025)
-- ================================================================================

-- 1️⃣ RLS ACTIVÉ
-- contribution_notifications : ❌ false → CORRECTION REQUISE
-- monthly_contributions      : ✅ true
-- salary_transfers           : ✅ true

-- 2️⃣ POLITIQUES RLS
-- monthly_contributions (4 politiques) :
--   - SELECT : is_member_of_org(org_id)          ✅ CONFORME
--   - INSERT : is_member_of_org(org_id)          ✅ CONFORME
--   - UPDATE : is_member_of_org(org_id)          ✅ CONFORME
--   - DELETE : is_member_of_org(org_id)          ✅ CONFORME
--
-- salary_transfers (4 politiques) :
--   - SELECT : is_staff() OR is_member_of_org()  ✅ CONFORME
--   - INSERT : is_staff()                        ✅ CONFORME (staff only)
--   - UPDATE : is_staff()                        ✅ CONFORME (staff only)
--   - DELETE : is_staff()                        ✅ CONFORME (staff only)
--
-- contribution_notifications :
--   - Aucune politique (RLS désactivé)           ❌ À CRÉER

-- 3️⃣ INDEX org_id
-- contribution_notifications : ✅ 1 index unique (org_id, period_label)
-- monthly_contributions      : ✅ 3 index (dont 2 sur org_id simple)
-- salary_transfers           : ✅ 1 index unique composite (org_id, period_month, mode, callsheet_url)

-- ================================================================================
-- CONCLUSION
-- ================================================================================
-- 🟢 EXCELLENT : salary_transfers et monthly_contributions
--    - RLS activé avec politiques robustes
--    - Index performants en place
--    - Isolation par organisation garantie
--
-- ✅ CORRIGÉ (16 octobre 2025) : contribution_notifications
--    - RLS activé ✅
--    - 4 politiques staff-only créées ✅
--      * select_staff_only (SELECT)
--      * insert_staff_only (INSERT)
--      * update_staff_only (UPDATE)
--      * delete_staff_only (DELETE)
--    - Index unique (org_id, period_label) présent ✅
--
-- 🟢 STATUT FINAL : EXCELLENT
--    Toutes les tables critiques sont maintenant protégées par RLS avec politiques appropriées.
