Na aula anterior, 09 - Laravel - Receção e Armazenamento de Dados, abordámos a comunicação entre o Arduino e o Laravel sem a necessidade de autenticação, permitindo interações abertas. Hoje, vamos dar um passo mais à frente, implementando a autenticação de utilizador, de forma a garantir que apenas utilizadores autenticados possam realizar operações no sistema.
Arduino
Em relação ao código criado na última aula, temos pouco a alterar. Apenas precisamos acrescentar uma linha de código à função sendEstadoLeds():
A linha client.println("Authorization: Bearer O_TEU_TOKEN_AQUI"); foi adicionada para incluir o token de autenticação na requisição HTTP. Lembre-se de substituir O_TEU_TOKEN_AQUI pelo token real que mais à frente será criado.
Laravel
Para fazer esta autenticação vamos usar o Laravel Sanctum. Primeiro, precisamos instalar o Sanctum no seu projeto Laravel. Abra o terminal na pasta do seu projeto Laravel e execute:
Depois de instalar o Sanctum, publique as migrações para criar as tabelas necessárias:
Se por alguma razão as novas tabelas para migração no forem criadas, execute o seguinte comando:
E em seguida execute novamente as migrações para criar a tabela.
Abra o ficheiro app/Models/User.php e adicione o trait HasApiTokens na definição da classe. O seu ficheiro deve ficar assim:
O trait HasApiTokens fornece o método createToken(), que é usado para gerar tokens para a autenticação via API.
No ficheiro web.php, altera ou adiciona a rota:
Para terminar, certifica-te de que o guard de api está configurado para usar o Sanctum. No arquivo config/auth.php, em guards, deves ter o seguite:
Agora poderá gerar o token no Tinker ou diretamente no código do controlador. Siga os passos:
- Abra o Tinker:
- Crie o token para o utilizador (substitua
1pelo ID do utilizador ou outro identificador):
Copie o token gerado e substitua no código do Arduino O_TEU_TOKEN_AQUI por este.
Espero que aproveites estas aulas para elevar os teus conhecimentos e dar asas aos teus projetos.
Até breve...