Skip to content

jefferson-gbarbosa/auth-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔐 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

    git clone https://github.com/jefferson-gbarbosa/auth-api.git
    cd auth-api
  2. Instale dependências

    npm install
  3. Configure variáveis de ambiente em .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

    npm run dev
  5. Acesse a documentação Swagger
    👉 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

{
  "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

{
  "email": "teste@email.com",
  "password": "123456"
}

Response

{
  "accessToken": "eyJhbGciOiJIUzI1...",
  "refreshToken": "eyJhbGciOiJIUzI1..."
}

3. Refresh Token

POST /api/auth/refresh

Request

{
  "refreshToken": "eyJhbGciOiJIUzI1..."
}

Response

{
  "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

{
  "email": "teste@email.com"
}

📩 Envia e-mail com link de redefinição de senha.


6. Redefinir senha

POST /api/auth/reset-password/:token

Request

{
  "password": "novaSenha123"
}

🧪 Testes

Rodar todos os testes:

npm test

Gerar relatório de cobertura:

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.

About

A API fornece funcionalidades essenciais para gerenciar usuários, incluindo registro, login, recuperação de senha, verificação de e-mail e logout, usando JSON Web Tokens (JWT) para autenticação.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors