Oi sttefaniribeiro,
No exemplo do curso adicionamos o filter
que autentica o usuário para o Spring em cada request. Com isso é possível recuperar em qualquer componente do Spring o usuário que está logado no momento do request.
Nas suas lógicas de listar/deletar/etc. que precisam de controle de acesso, você tem que recuperar o usuário logado e fazer a verificação se ele tem permissão para executar tal ação.
Por exemplo, vamos considerar que apenas o usuário que criou um tópico tem permissão de exclui-lo. Então teríamos uma lógica como:
@DeleteMapping("/{id}")
@Transactional
public ResponseEntity<?> remover(@PathVariable Long id, @AuthenticationPrincipal usuarioLogado) {
Optional<Topico> optional = topicoRepository.findById(id);
if (!optional.isPresent()) {
return ResponseEntity.notFound().build();
}
//verifica se quem ta excluindo eh o proprio dono do topico:
if (usuarioLogado.equals(topico.getAutor())) {
topicoRepository.deleteById(id);
return ResponseEntity.ok().build();
}
return new ResponseEntity<String>("Você não tem permissão para executar essa operação!", HttpStatus.FORBIDDEN);
}
Bons estudos!