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