Uma API que gerencia o login, cria um usuário no mongoDB, autêntica a seção com token JWT, tem uma rota protegida para para usuários logados, e uma outra só para admin.
Essa foi uma API criada no Curso Desenvolvimento Web Full Stack do ProgramadorBR, a parte do login não foi novidade, inclusive tem uma API de login ate mais completa aqui no meu GItHub, mas trabalhar com variaveis de ambiente foi novo pra mim, é algo bem simples e muito fácil de configurar, mas foi o primeiro projeto que eu usei de fato elas, uma lib muito legal usada aqui tambem foi a @hapi/joi, ela é usada pra validar os dados no backend quando eles chegam do front, esse é um projeto simples e pequeno mas que abordou coisas novas para mim.
- JavaScript
- Node.js
- Banco de dados: MongoDB
- Cliente REST: Insomnia
Dependências
- Git (Para clonar, opcional)
- Node.js
- Npm (É instalado junto com o Node)
- MongoDB Local ou MongoDB Atlas
Arquivos:
- É necessario criar um arquivo .env na pasta raiz do projeto ./.
- Conteudo do arquivo .env:
- PORT, vai determinar a porta que a API vai rodar.
- MONGO_URL, Url de conexão com o banco mongo, seja local ou no Atlas.
- TOKEN_SECRET, é o hash da aplicação para gerar o token.
- vc pode gerar um hash md5 Aqui.
- Primeiro passo, clone ou baixe o projeto em sua maquina
- Abra a pasta do projeto no terminal
- Instale as dependências com o comando
npm i
- Inicie o servidor com o comando
npm start
- A aplicação estara disponível na porta: PORT que foi criada no arquivo .env
OBS: A porta vai variar dependendo da porta que foi usada no arquivo .env, nesse exemplo eu estou usando a porta 3000 pois foi a que eu defini no arquivo .env
Rotas para lidar com a autenticação:
// (POST) --- Rota de registro:
'http://localhost:3000/user/register'
// Objeto usuario:
{
"name": "devsp",
"email": "devsp@teste.com",
"password": "123456"
}
// (POST) --- Rota de autenticação:
'http://localhost:3000/user/login'
// Objeto autenticação:
{
"email": "devsp@teste.com",
"password": "123456"
}
Rotas protegidas:
// (GET) --- Rota para acesso do admin:
'http://localhost:3000/admin'
// (GET) --- Rota para qualquer usuário logado:
'http://localhost:3000/admin/free'