119 lines
3.7 KiB
SQL
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
|