-- ========================================= -- POLÍTICAS RLS PARA MEDICONNECT -- ========================================= -- Execute este SQL no SQL Editor do Supabase Dashboard: -- https://app.supabase.com/project/yuanqfswhberkoevtmfr/sql/new -- ========================================= -- 1. TABELA DOCTORS (Médicos) -- ========================================= -- Remover políticas antigas se existirem DROP POLICY IF EXISTS "doctors_select_all" ON doctors; DROP POLICY IF EXISTS "doctors_insert_authenticated" ON doctors; DROP POLICY IF EXISTS "doctors_update_authenticated" ON doctors; -- SELECT: Todos podem ler médicos (necessário para listagens públicas) CREATE POLICY "doctors_select_all" ON doctors FOR SELECT TO public USING (true); -- INSERT: Apenas usuários autenticados podem criar médicos CREATE POLICY "doctors_insert_authenticated" ON doctors FOR INSERT TO authenticated WITH CHECK (true); -- UPDATE: Apenas usuários autenticados podem atualizar médicos CREATE POLICY "doctors_update_authenticated" ON doctors FOR UPDATE TO authenticated USING (true) WITH CHECK (true); -- DELETE: Apenas usuários autenticados podem deletar médicos CREATE POLICY "doctors_delete_authenticated" ON doctors FOR DELETE TO authenticated USING (true); -- ========================================= -- 2. TABELA PATIENTS (Pacientes) -- ========================================= -- Remover políticas antigas se existirem DROP POLICY IF EXISTS "patients_select_all" ON patients; DROP POLICY IF EXISTS "patients_insert_authenticated" ON patients; DROP POLICY IF EXISTS "patients_update_authenticated" ON patients; DROP POLICY IF EXISTS "patients_update_own" ON patients; -- SELECT: Todos podem ler pacientes (necessário para listagens) CREATE POLICY "patients_select_all" ON patients FOR SELECT TO public USING (true); -- INSERT: Usuários autenticados podem criar pacientes CREATE POLICY "patients_insert_authenticated" ON patients FOR INSERT TO authenticated WITH CHECK (true); -- UPDATE: Usuários autenticados podem atualizar qualquer paciente -- (ideal para secretárias e médicos) CREATE POLICY "patients_update_authenticated" ON patients FOR UPDATE TO authenticated USING (true) WITH CHECK (true); -- DELETE: Apenas usuários autenticados podem deletar CREATE POLICY "patients_delete_authenticated" ON patients FOR DELETE TO authenticated USING (true); -- ========================================= -- 3. TABELA PROFILES (Se existir) -- ========================================= -- SELECT: Todos podem ler profiles DROP POLICY IF EXISTS "profiles_select_all" ON profiles; CREATE POLICY "profiles_select_all" ON profiles FOR SELECT TO public USING (true); -- INSERT: Apenas ao criar próprio perfil DROP POLICY IF EXISTS "profiles_insert_own" ON profiles; CREATE POLICY "profiles_insert_own" ON profiles FOR INSERT TO authenticated WITH CHECK (auth.uid() = id); -- UPDATE: Apenas próprio perfil DROP POLICY IF EXISTS "profiles_update_own" ON profiles; CREATE POLICY "profiles_update_own" ON profiles FOR UPDATE TO authenticated USING (auth.uid() = id) WITH CHECK (auth.uid() = id); -- ========================================= -- VERIFICAR SE RLS ESTÁ ATIVADO -- ========================================= ALTER TABLE doctors ENABLE ROW LEVEL SECURITY; ALTER TABLE patients ENABLE ROW LEVEL SECURITY; ALTER TABLE profiles ENABLE ROW LEVEL SECURITY; -- ========================================= -- RESULTADO ESPERADO -- ========================================= -- Após executar este script: -- ✅ Qualquer um pode LER médicos e pacientes (necessário para UI pública) -- ✅ Apenas usuários AUTENTICADOS podem CRIAR/EDITAR/DELETAR -- ✅ A secretária poderá adicionar médicos e pacientes quando estiver logada -- ✅ O painel mostrará os dados corretamente