Controle de acesso self ou admin

Usuário acessando seu próprio pedido mesmo não sendo admin.

Mesmo o usuário não sendo Admin, ele pode acessar o SEU próprio pedido. Pra isso vamos fazer o seguinte:

O método de findById do service precisa ter uma lógica: se a pessoa que está acessando não for admin e nem a dona desse pedido (que é o parâmetro ID do método), temos que lançar um 403.

Criaremos uma "ForbiddenExcception" no pacote Exceptions do Service.

Lembra do nosso ControllerHandler? Faremos o tratamento dela lá! Veja:

Agora, criaremos uma classe chamada AuthService. Nela, implementaremos alguma regras de negócio referente a controle de acesso, veja:

E por fim, no método do Service, injetaremos a classe criada acima:

Atualizado