-- Corrige as políticas de segurança para análises de redação DROP POLICY IF EXISTS "Edge Function pode inserir análises" ON public.essay_analyses; DROP POLICY IF EXISTS "Alunos podem ver análises de suas próprias redações" ON public.essay_analyses; -- Política para permitir que a service_role insira análises CREATE POLICY "Service role pode inserir análises" ON public.essay_analyses FOR INSERT WITH CHECK (auth.jwt() ->> 'role' = 'service_role'); -- Política para permitir que alunos vejam suas análises CREATE POLICY "Alunos podem ver suas análises" ON public.essay_analyses FOR SELECT USING ( EXISTS ( SELECT 1 FROM public.student_essays WHERE id = essay_id AND student_id = auth.uid() ) ); -- Habilita RLS para tabelas relacionadas ALTER TABLE public.essay_analysis_feedback ENABLE ROW LEVEL SECURITY; ALTER TABLE public.essay_analysis_strengths ENABLE ROW LEVEL SECURITY; ALTER TABLE public.essay_analysis_improvements ENABLE ROW LEVEL SECURITY; ALTER TABLE public.essay_analysis_scores ENABLE ROW LEVEL SECURITY; -- Políticas para feedback CREATE POLICY "Service role pode inserir feedback" ON public.essay_analysis_feedback FOR INSERT WITH CHECK (auth.jwt() ->> 'role' = 'service_role'); CREATE POLICY "Alunos podem ver feedback de suas análises" ON public.essay_analysis_feedback FOR SELECT USING ( EXISTS ( SELECT 1 FROM public.essay_analyses a JOIN public.student_essays e ON a.essay_id = e.id WHERE a.id = analysis_id AND e.student_id = auth.uid() ) ); -- Políticas para pontos fortes CREATE POLICY "Service role pode inserir pontos fortes" ON public.essay_analysis_strengths FOR INSERT WITH CHECK (auth.jwt() ->> 'role' = 'service_role'); CREATE POLICY "Alunos podem ver pontos fortes de suas análises" ON public.essay_analysis_strengths FOR SELECT USING ( EXISTS ( SELECT 1 FROM public.essay_analyses a JOIN public.student_essays e ON a.essay_id = e.id WHERE a.id = analysis_id AND e.student_id = auth.uid() ) ); -- Políticas para pontos a melhorar CREATE POLICY "Service role pode inserir pontos a melhorar" ON public.essay_analysis_improvements FOR INSERT WITH CHECK (auth.jwt() ->> 'role' = 'service_role'); CREATE POLICY "Alunos podem ver pontos a melhorar de suas análises" ON public.essay_analysis_improvements FOR SELECT USING ( EXISTS ( SELECT 1 FROM public.essay_analyses a JOIN public.student_essays e ON a.essay_id = e.id WHERE a.id = analysis_id AND e.student_id = auth.uid() ) ); -- Políticas para notas por critério CREATE POLICY "Service role pode inserir notas" ON public.essay_analysis_scores FOR INSERT WITH CHECK (auth.jwt() ->> 'role' = 'service_role'); CREATE POLICY "Alunos podem ver notas de suas análises" ON public.essay_analysis_scores FOR SELECT USING ( EXISTS ( SELECT 1 FROM public.essay_analyses a JOIN public.student_essays e ON a.essay_id = e.id WHERE a.id = analysis_id AND e.student_id = auth.uid() ) );