119 lines
3.7 KiB
SQL

-- =========================================
-- 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