riseup-squad18/MEDICONNECT 2/scripts/configurar-rls-secretaria.sql
2025-10-07 14:53:47 -03:00

117 lines
3.7 KiB
SQL

-- =========================================
-- POLÍTICAS RLS PARA SECRETÁRIA CADASTRAR
-- =========================================
-- Execute este SQL no Supabase SQL Editor
-- URL: https://app.supabase.com/project/yuanqfswhberkoevtmfr/sql/new
-- =========================================
-- TABELA DOCTORS (Médicos)
-- =========================================
-- SELECT: Qualquer um autenticado pode ler
DROP POLICY IF EXISTS "doctors_select_authenticated" ON doctors;
CREATE POLICY "doctors_select_authenticated"
ON doctors FOR SELECT
TO authenticated
USING (true);
-- INSERT: Qualquer usuário autenticado pode criar
DROP POLICY IF EXISTS "doctors_insert_authenticated" ON doctors;
CREATE POLICY "doctors_insert_authenticated"
ON doctors FOR INSERT
TO authenticated
WITH CHECK (true);
-- UPDATE: Qualquer usuário autenticado pode atualizar
DROP POLICY IF EXISTS "doctors_update_authenticated" ON doctors;
CREATE POLICY "doctors_update_authenticated"
ON doctors FOR UPDATE
TO authenticated
USING (true)
WITH CHECK (true);
-- DELETE: Qualquer usuário autenticado pode deletar
DROP POLICY IF EXISTS "doctors_delete_authenticated" ON doctors;
CREATE POLICY "doctors_delete_authenticated"
ON doctors FOR DELETE
TO authenticated
USING (true);
-- =========================================
-- TABELA PATIENTS (Pacientes)
-- =========================================
-- SELECT: Qualquer um autenticado pode ler
DROP POLICY IF EXISTS "patients_select_authenticated" ON patients;
CREATE POLICY "patients_select_authenticated"
ON patients FOR SELECT
TO authenticated
USING (true);
-- INSERT: Qualquer usuário autenticado pode criar
DROP POLICY IF EXISTS "patients_insert_authenticated" ON patients;
CREATE POLICY "patients_insert_authenticated"
ON patients FOR INSERT
TO authenticated
WITH CHECK (true);
-- UPDATE: Qualquer usuário autenticado pode atualizar
DROP POLICY IF EXISTS "patients_update_authenticated" ON patients;
CREATE POLICY "patients_update_authenticated"
ON patients FOR UPDATE
TO authenticated
USING (true)
WITH CHECK (true);
-- DELETE: Qualquer usuário autenticado pode deletar
DROP POLICY IF EXISTS "patients_delete_authenticated" ON patients;
CREATE POLICY "patients_delete_authenticated"
ON patients FOR DELETE
TO authenticated
USING (true);
-- =========================================
-- TABELA PROFILES (Perfis - se existir)
-- =========================================
-- SELECT: Qualquer um autenticado pode ler
DROP POLICY IF EXISTS "profiles_select_authenticated" ON profiles;
CREATE POLICY "profiles_select_authenticated"
ON profiles FOR SELECT
TO authenticated
USING (true);
-- INSERT: Pode 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: Pode atualizar próprio perfil ou qualquer se for admin
DROP POLICY IF EXISTS "profiles_update_own_or_admin" ON profiles;
CREATE POLICY "profiles_update_own_or_admin"
ON profiles FOR UPDATE
TO authenticated
USING (auth.uid() = id OR true)
WITH CHECK (auth.uid() = id OR true);
-- =========================================
-- GARANTIR QUE 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:
-- ✅ Secretária pode cadastrar médicos
-- ✅ Secretária pode cadastrar pacientes
-- ✅ Secretária pode editar médicos e pacientes
-- ✅ Secretária pode deletar médicos e pacientes
-- ✅ Admin pode fazer tudo
-- ✅ RLS continua protegendo acesso não autenticado