Nesse desafio, você irá implementar uma nova feature para a aplicação desenvolvida no desafio Consumindo APIs.
A aplicação deve possuir uma entidade User
onde cada usuário possuirá apenas um id e senha. Ao fazer uma requisição para a rota de criação de usuários, deve ser enviado apenas a senha a ser cadastrada para o novo usuário, já o id deverá ser gerado pelo servidor e retornado no corpo da resposta.
<aside> ⚠️
Lembre-se de salvar o hash da senha no banco, não a senha "pura".
</aside>
Para realizar a autenticação, deve ser enviado no corpo da requisição o id e senha e o retorno dessa chamada, em caso de sucesso, deverá possuir o token JWT gerado, exemplo:
# Rota post /users/login
# Corpo da requisição
{id: "d4f0e64b-cc3f-4c09-b64d-ef450883e4e5", senha: "123456"}
# Resposta da chamada
{token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJCYW5hbmEiLCJuYW1lIjoiQmFuYW5hIiwiaWF0IjoxNTE2MjM5MDIyfQ.82aOexgMqejDxJzZzoBmVB_fPLiKRXe1rFEfoPl1sDs"}
<aside> 💡 Você pode usar a biblioteca Guardian para trabalhar com autenticação JWT: https://github.com/ueberauth/guardian
</aside>
Ao chamar a rota que lista os repositórios de um usuário, será necessário enviar também o token JWT de um usuário que se autenticou na aplicação. Ou seja, apenas usuários cadastrados na aplicação podem fazer a listagem de repositórios.
Para enviar o desafio, você pode implementar a feature no mesmo repositório do desafio Consumindo APIs e enviar o link com o código atualizado sem a necessidade de criar um novo repositório.
Esse desafio deve ser entregue a partir da plataforma da Rocketseat. Para isso, envie o desafio concluído para um repositório no GitHub e em seguida envie o link do repositório no campo de submissão do desafio na plataforma da Rocketseat.
<aside> 💡 Após concluir o desafio, além de ter mandado o código para o GitHub, fazer um post no LinkedIn é uma boa forma de demonstrar seus conhecimentos e esforços para evoluir na sua carreira para oportunidades futuras.
</aside>
Feito com 💜 por Rocketseat 👋 participe da nossa comunidade aberta!