An open API service indexing awesome lists of open source software.

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

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**.