API de autenticação desenvolvida com Node.js, Express, MongoDB, JWT e Nodemailer.
Oferece funcionalidades completas para gerenciamento de usuários:
- Registro de usuários com verificação de e-mail
- Login com geração de Access Token e Refresh Token
- Logout com invalidação de token
- Renovação de sessão via Refresh Token
- Recuperação e redefinição de senha por e-mail
- Proteção de rotas com middleware de autenticação
- Node.js + Express – servidor e rotas
- MongoDB Atlas (Mongoose) – banco de dados
- JWT – autenticação stateless
- Bcrypt – hash seguro de senhas
- Nodemailer + Mailtrap – envio de e-mails
- Jest + Supertest – testes automatizados
- Swagger – documentação interativa de rotas
-
Clone o repositório
git clone https://github.com/jefferson-gbarbosa/auth-api.git cd auth-api -
Instale dependências
npm install
-
Configure variáveis de ambiente em
.envPORT=3000 MONGO_URI=sua_string_de_conexao_mongodb JWT_SECRET=uma_chave_segura REFRESH_SECRET=uma_chave_refresh_segura MAIL_USER=seu_usuario_mailtrap MAIL_PASS=sua_senha_mailtrap
-
Inicie o servidor
npm run dev
-
Acesse a documentação Swagger
👉 http://localhost:3000/api-docs
src/
├── controllers/ # Regras de negócio (authController)
├── database/ # Conexão MongoDB
├── mailtrap/ # Configuração e templates de e-mail
├── middlewares/ # Autenticação e validações
├── models/ # Modelos Mongoose (User)
├── routes/ # Definição das rotas
└── tests/ # Testes automatizados (unitários e integração)
POST /api/auth/register
Request
{
"name": "Jefferson",
"email": "teste@email.com",
"password": "123456"
}📩 Resposta: usuário criado + envio de e-mail para verificação.
POST /api/auth/login
Request
{
"email": "teste@email.com",
"password": "123456"
}Response
{
"accessToken": "eyJhbGciOiJIUzI1...",
"refreshToken": "eyJhbGciOiJIUzI1..."
}POST /api/auth/refresh
Request
{
"refreshToken": "eyJhbGciOiJIUzI1..."
}Response
{
"accessToken": "novo_access_token"
}POST /api/auth/logout
Invalida o refresh token do usuário logado.
POST /api/auth/forgot-password
Request
{
"email": "teste@email.com"
}📩 Envia e-mail com link de redefinição de senha.
POST /api/auth/reset-password/:token
Request
{
"password": "novaSenha123"
}Rodar todos os testes:
npm testGerar relatório de cobertura:
npm run test:coverage- Faça um fork do projeto
- Crie sua branch (
git checkout -b feature/nome) - Commit suas mudanças (
git commit -m 'feat: minha nova feature') - Push para a branch (
git push origin feature/nome) - Abra um Pull Request 🚀
Este projeto está sob a licença MIT.