mirror of
https://github.com/lucasrcsantana/story-generator.git
synced 2025-12-18 14:27:51 +00:00
fix: corrige políticas RLS para análise de redações - Simplifica política de inserção para service_role - Adiciona políticas para tabelas relacionadas - Melhora segurança com políticas específicas
This commit is contained in:
parent
9d303b0c7a
commit
756335f78f
@ -257,3 +257,10 @@ e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
|
|||||||
- Ajuste nas descrições dos campos para maior clareza
|
- Ajuste nas descrições dos campos para maior clareza
|
||||||
- Alinhamento com as tabelas: essay_analyses, essay_analysis_feedback, essay_analysis_strengths e essay_analysis_improvements
|
- Alinhamento com as tabelas: essay_analyses, essay_analysis_feedback, essay_analysis_strengths e essay_analysis_improvements
|
||||||
- Melhoria na validação dos dados com JSON Schema mais preciso
|
- Melhoria na validação dos dados com JSON Schema mais preciso
|
||||||
|
|
||||||
|
### Técnico
|
||||||
|
- Correção das políticas de segurança (RLS) para o sistema de análise de redações:
|
||||||
|
- Simplificada a política de inserção para service_role
|
||||||
|
- Adicionadas políticas para tabelas relacionadas (feedback, pontos fortes, melhorias e notas)
|
||||||
|
- Melhorada a segurança com políticas específicas para cada operação
|
||||||
|
- Corrigido erro de permissão na inserção de análises pela Edge Function
|
||||||
|
|||||||
@ -0,0 +1,94 @@
|
|||||||
|
-- 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()
|
||||||
|
)
|
||||||
|
);
|
||||||
Loading…
Reference in New Issue
Block a user