# Controle de acesso self ou 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.<br>

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

<figure><img src="https://4007536170-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6PZSloYGpEyCvL9k6Kkm%2Fuploads%2F30dx0b7ANYf9B4OdxrhW%2Fimage.png?alt=media&#x26;token=d53e7d31-36d7-4d10-8d54-6abafd093e8a" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4007536170-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6PZSloYGpEyCvL9k6Kkm%2Fuploads%2FOrX86YWc0eK688m0S5jY%2Fimage.png?alt=media&#x26;token=3ef2795e-dc03-47f8-9fec-b5a2b54ecdea" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://4007536170-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6PZSloYGpEyCvL9k6Kkm%2Fuploads%2FLjm0DaC94K7mNWLd9RJ2%2Fimage.png?alt=media&#x26;token=3bbfa1ce-4134-40de-a3c7-aaf0cef55349" alt=""><figcaption></figcaption></figure>
