Skip to content

fix: libera endpoints de aluno gated por permissão de colaborador - #507

Merged
FernandoAlmeidaPinto merged 1 commit into
developfrom
fix/permissoes-endpoints-aluno
Aug 1, 2026
Merged

fix: libera endpoints de aluno gated por permissão de colaborador#507
FernandoAlmeidaPinto merged 1 commit into
developfrom
fix/permissoes-endpoints-aluno

Conversation

@FernandoAlmeidaPinto

Copy link
Copy Markdown
Member

Summary

Três endpoints consumidos por alunos exigiam permissões de colaborador, causando 403 para alunos legítimos. Passam a exigir apenas autenticação (JwtAuthGuard):

  • GET /materia — listagem de matérias na página de estudo (era visualizarDemanda). Dado é catálogo não-sensível; o irmão GET /materia/grouped-by-area já é público.
  • GET /questao/:id/image — imagem de questão durante o simulado (era visualizarQuestao).
  • GET /essay/:id — aluno visualiza a própria redação (era revisarRedacoes). Autorização real já vive no service: findById filtra por dono e validateReviewerScope autoriza revisor/admin. O guard anterior contradizia o próprio handler, que foi escrito para servir dono e revisor.

Why

Padrão recorrente: telas de aluno ("Meus Estudos", simulado, página de estudo) chamavam endpoints protegidos por permissões de área administrativa/correção que alunos nunca possuem.

Test plan

  • Aluno (sem permissões de colaborador) lista matérias na página de estudo sem 403
  • Aluno carrega imagens de questão durante o simulado
  • Aluno abre o resultado da própria redação (/dashboard/redacao/:id)
  • Aluno não consegue abrir redação de outro usuário (NotFound via findById)
  • Revisor/colaborador do cursinho ainda abre redações dos alunos do seu cursinho (validateReviewerScope)

🤖 Generated with Claude Code

Três endpoints consumidos por alunos exigiam permissões de colaborador
(visualizarDemanda / visualizarQuestao / revisarRedacoes), resultando em
403 para alunos legítimos. Passam a exigir apenas autenticação:

- GET /materia: listagem de matérias (página de estudo)
- GET /questao/:id/image: imagem de questão durante o simulado
- GET /essay/:id: aluno vê a própria redação (findById filtra por dono;
  revisor/admin seguem autorizados via validateReviewerScope no service)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@FernandoAlmeidaPinto FernandoAlmeidaPinto self-assigned this Aug 1, 2026
@FernandoAlmeidaPinto
FernandoAlmeidaPinto merged commit ec16590 into develop Aug 1, 2026
4 checks passed
@FernandoAlmeidaPinto
FernandoAlmeidaPinto deleted the fix/permissoes-endpoints-aluno branch August 1, 2026 20:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant