-- Enable RLS ALTER TABLE phonics_exercise_categories ENABLE ROW LEVEL SECURITY; ALTER TABLE phonics_exercise_types ENABLE ROW LEVEL SECURITY; ALTER TABLE phonics_exercises ENABLE ROW LEVEL SECURITY; ALTER TABLE phonics_words ENABLE ROW LEVEL SECURITY; ALTER TABLE phonics_exercise_words ENABLE ROW LEVEL SECURITY; ALTER TABLE media_types ENABLE ROW LEVEL SECURITY; ALTER TABLE phonics_exercise_media ENABLE ROW LEVEL SECURITY; ALTER TABLE student_phonics_progress ENABLE ROW LEVEL SECURITY; ALTER TABLE student_phonics_attempts ENABLE ROW LEVEL SECURITY; ALTER TABLE student_phonics_attempt_answers ENABLE ROW LEVEL SECURITY; ALTER TABLE achievement_types ENABLE ROW LEVEL SECURITY; ALTER TABLE phonics_achievements ENABLE ROW LEVEL SECURITY; ALTER TABLE student_phonics_achievements ENABLE ROW LEVEL SECURITY; -- Políticas para categorias CREATE POLICY "Categorias visíveis para usuários autenticados" ON phonics_exercise_categories FOR SELECT TO authenticated USING (true); -- Políticas para tipos de exercícios CREATE POLICY "Tipos de exercícios visíveis para usuários autenticados" ON phonics_exercise_types FOR SELECT TO authenticated USING (true); -- Políticas para exercícios CREATE POLICY "Exercícios visíveis para usuários autenticados" ON phonics_exercises FOR SELECT TO authenticated USING (is_active = true); -- Políticas para palavras CREATE POLICY "Palavras visíveis para usuários autenticados" ON phonics_words FOR SELECT TO authenticated USING (true); -- Políticas para relação exercício-palavras CREATE POLICY "Relações exercício-palavras visíveis para usuários autenticados" ON phonics_exercise_words FOR SELECT TO authenticated USING (true); -- Políticas para tipos de mídia CREATE POLICY "Tipos de mídia visíveis para usuários autenticados" ON media_types FOR SELECT TO authenticated USING (true); -- Políticas para mídia dos exercícios CREATE POLICY "Mídia dos exercícios visível para usuários autenticados" ON phonics_exercise_media FOR SELECT TO authenticated USING (true); -- Políticas para progresso do estudante CREATE POLICY "Progresso visível apenas para o próprio estudante" ON student_phonics_progress FOR SELECT TO authenticated USING (auth.uid() = student_id); CREATE POLICY "Progresso pode ser inserido pelo próprio estudante" ON student_phonics_progress FOR INSERT TO authenticated WITH CHECK (auth.uid() = student_id); CREATE POLICY "Progresso pode ser atualizado pelo próprio estudante" ON student_phonics_progress FOR UPDATE TO authenticated USING (auth.uid() = student_id) WITH CHECK (auth.uid() = student_id); -- Políticas para tentativas CREATE POLICY "Tentativas visíveis apenas para o próprio estudante" ON student_phonics_attempts FOR SELECT TO authenticated USING (auth.uid() = student_id); CREATE POLICY "Tentativas podem ser inseridas pelo próprio estudante" ON student_phonics_attempts FOR INSERT TO authenticated WITH CHECK (auth.uid() = student_id); -- Políticas para respostas das tentativas CREATE POLICY "Respostas visíveis apenas para o próprio estudante" ON student_phonics_attempt_answers FOR SELECT TO authenticated USING (EXISTS ( SELECT 1 FROM student_phonics_attempts WHERE id = attempt_id AND student_id = auth.uid() )); CREATE POLICY "Respostas podem ser inseridas pelo próprio estudante" ON student_phonics_attempt_answers FOR INSERT TO authenticated WITH CHECK (EXISTS ( SELECT 1 FROM student_phonics_attempts WHERE id = attempt_id AND student_id = auth.uid() )); -- Políticas para tipos de conquistas CREATE POLICY "Tipos de conquistas visíveis para usuários autenticados" ON achievement_types FOR SELECT TO authenticated USING (true); -- Políticas para conquistas CREATE POLICY "Conquistas visíveis para usuários autenticados" ON phonics_achievements FOR SELECT TO authenticated USING (true); -- Políticas para conquistas do estudante CREATE POLICY "Conquistas do estudante visíveis apenas para o próprio estudante" ON student_phonics_achievements FOR SELECT TO authenticated USING (auth.uid() = student_id); CREATE POLICY "Conquistas podem ser inseridas pelo próprio estudante" ON student_phonics_achievements FOR INSERT TO authenticated WITH CHECK (auth.uid() = student_id);