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