Este projeto foi desenvolvido com as seguintes tecnologias:
- TypeScript
- Express
- Prisma
- JWT
- Joi
- Docker
Este é um projeto de estudo, com o objetivo de praticar o fluxo de autenticação por meios de tokens JWT.
Neste repositório, desenvolvi uma que API possui sistema de registro e login de usuários, gerando os tokens de acesso e os validando. Veja mais detalhes sobre os endpoints.
Este repositório faz parte do projeto Authentication Project.
- Git (ou baixe o repositório como .zip)
- Node (preferência na versão LTS)
- Docker
- Vá até a pasta do projeto
authentication-api
e rode o comandoyarn
ounpm install
para instalar as dependências do projeto; - Crie o arquivo
.env
na raíz do projeto e adicione as variáveis necessárias como mostra o arquivo.env.example
; - Com as suas variáveis de ambiente configuradas e com o docker instalado, suba o container do banco de dados na sua máquina, usando o
docker-compose
, com o seguinte comando:docker compose up -d
- Agora precisaremos criar as tabelas do nosso banco de dados. Vamos utilizar as migrations geradas pelo prisma:
npx prisma migrate dev
- Por fim, rode o projeto com o comando
yarn start
ounpm start
;
-
Request (application/json)
- Body
{ "name": "any_name", "email": "[email protected]", "password": "any_password" }
- Body
-
Response 201 (application/json)
- Body
{ "user": { "id": "e4b1774f-908f-4838-9054-e82db54b95b6", "name": "any_name", "email": "[email protected]" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }
- Body
-
Request (application/json)
- Headers
Authorization: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
- Headers
-
Response 200 (application/json)
- Body
{ "user": { "id": "e4b1774f-908f-4838-9054-e82db54b95b6", "name": "any_name", "email": "[email protected]" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }
- Body
-
Request (application/json)
- Headers
Authorization: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
- Body
{ "name": "other_name", "email": "[email protected]" }
- Headers
-
Response 200 (application/json)
- Body
{ "user": { "id": "e4b1774f-908f-4838-9054-e82db54b95b6", "name": "other_name", "email": "[email protected]" } }
- Body
-
Request (application/json)
- Headers
Authorization: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
- Body
{ "oldPassword": "any_password", "password": "new_password" }
- Headers
-
Response 200 (application/json)
- Body
{ "user": { "id": "e4b1774f-908f-4838-9054-e82db54b95b6", "name": "other_name", "email": "[email protected]" } }
- Body
-
Request (application/json)
- Body
{ "email": "[email protected]", "password": "new_password" }
- Body
-
Response 200 (application/json)
- Body
{ "user": { "id": "e4b1774f-908f-4838-9054-e82db54b95b6", "name": "other_name", "email": "[email protected]" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" }
- Body