https://github.com/jefferson-gbarbosa/auth-api
api de autenticação
https://github.com/jefferson-gbarbosa/auth-api
express jwt mongodb-atlas nodejs
Last synced: 3 months ago
JSON representation
api de autenticação
- Host: GitHub
- URL: https://github.com/jefferson-gbarbosa/auth-api
- Owner: jefferson-gbarbosa
- Created: 2024-09-07T21:55:27.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-22T21:45:03.000Z (over 1 year ago)
- Last Synced: 2025-01-22T22:25:55.917Z (over 1 year ago)
- Topics: express, jwt, mongodb-atlas, nodejs
- Language: JavaScript
- Homepage:
- Size: 84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🔐 Auth API
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
---
## 🚀 Tecnologias
- **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
---
## ⚙️ Instalação
1. Clone o repositório
```bash
git clone https://github.com/jefferson-gbarbosa/auth-api.git
cd auth-api
```
2. Instale dependências
```bash
npm install
```
3. Configure variáveis de ambiente em `.env`
```env
PORT=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
```
4. Inicie o servidor
```bash
npm run dev
```
5. Acesse a documentação Swagger
👉 [http://localhost:3000/api-docs](http://localhost:3000/api-docs)
---
## 📂 Estrutura do Projeto
```
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)
```
---
## 🔑 Rotas principais
### 1. Registro de usuário
`POST /api/auth/register`
**Request**
```json
{
"name": "Jefferson",
"email": "teste@email.com",
"password": "123456"
}
```
📩 Resposta: usuário criado + envio de e-mail para verificação.
---
### 2. Login
`POST /api/auth/login`
**Request**
```json
{
"email": "teste@email.com",
"password": "123456"
}
```
**Response**
```json
{
"accessToken": "eyJhbGciOiJIUzI1...",
"refreshToken": "eyJhbGciOiJIUzI1..."
}
```
---
### 3. Refresh Token
`POST /api/auth/refresh`
**Request**
```json
{
"refreshToken": "eyJhbGciOiJIUzI1..."
}
```
**Response**
```json
{
"accessToken": "novo_access_token"
}
```
---
### 4. Logout
`POST /api/auth/logout`
Invalida o **refresh token** do usuário logado.
---
### 5. Recuperar senha
`POST /api/auth/forgot-password`
**Request**
```json
{
"email": "teste@email.com"
}
```
📩 Envia e-mail com link de redefinição de senha.
---
### 6. Redefinir senha
`POST /api/auth/reset-password/:token`
**Request**
```json
{
"password": "novaSenha123"
}
```
---
## 🧪 Testes
Rodar todos os testes:
```bash
npm test
```
Gerar relatório de cobertura:
```bash
npm run test:coverage
```
---
## 🤝 Contribuindo
1. Faça um fork do projeto
2. Crie sua branch (`git checkout -b feature/nome`)
3. Commit suas mudanças (`git commit -m 'feat: minha nova feature'`)
4. Push para a branch (`git push origin feature/nome`)
5. Abra um Pull Request 🚀
---
## 📄 Licença
Este projeto está sob a licença **MIT**.