Skip to content

jonathanrodrigues12/user-management-api

Repository files navigation

Sistema de Gerenciamento de Usuários com Autenticação JWT

Este projeto é uma API desenvolvida com NestJS para gerenciar usuários, incluindo funcionalidades de autenticação utilizando JWT (JSON Web Tokens).


Funcionalidades

  • Gerenciamento de Usuários:

    • Criar usuários
    • Listar todos os usuários (com paginação e filtragem de soft-delete)
    • Buscar um usuário por ID
    • Atualizar dados de usuários
    • Excluir usuários (Soft Delete)
    • Restaurar usuários soft-deletados
  • Autenticação:

    • Login com email e senha
    • Geração de token JWT
    • Validação de tokens para acessar rotas protegidas
  • Segurança:

    • Hashing de senhas com bcrypt
    • Validações de senha (mínimo 8 caracteres, pelo menos 1 maiúscula, 1 número e 1 caractere especial)

Tecnologias Utilizadas

  • Node.js
  • NestJS
  • TypeScript
  • JWT para autenticação
  • TypeORM como ORM
  • PostgreSQL como banco de dados
  • bcrypt para hashing de senhas
  • Jest para testes unitários
  • Docker para conteinerização

Instalação

Clonar o Repositório

git clone git@github.com:jonathanrodrigues12/user-management-api.git
cd user-management-api

Configurar o Arquivo .env

Atualize o arquivo .env com as informações do banco e JWT:

NODE_ENV=development
POSTGRES_HOST=db
POSTGRES_PORT=5432
POSTGRES_USER=seu_usuario
DB_PASSWORD=sua_senha
POSTGRES_DB=seu_banco
JWT_SECRET=seu_segredo_jwt
JWT_EXPIRES_IN=3600s

Subir os Contêineres com Docker

Certifique-se de ter o Docker instalado e execute o seguinte comando para subir a API e o banco de dados:

docker-compose up --build

Isso criará os contêineres para a API e o banco de dados PostgreSQL.

Testes

Rodar Testes Unitários

docker exec -it user_management_api npm run test

Gerar Relatório de Cobertura

docker exec -it user_management_api npm run test:cov

Caso não queria usar docker

Uma vez clonado o projeto, conforme passo 1.

2. Instalar Dependências

npm install

Configurar o Banco de Dados

Certifique-se de que o PostgreSQL esteja rodando e crie um banco de dados. Atualize o arquivo .env com as informações do banco:

NODE_ENV=development
POSTGRES_HOST=db
POSTGRES_PORT=5432
POSTGRES_USER=seu_usuario
DB_PASSWORD=sua_senha
POSTGRES_DB=seu_banco
JWT_SECRET=seu_segredo_jwt
JWT_EXPIRES_IN=3600s

Rodar Migrações

npm run migration:run

Iniciar o Servidor

npm run start:dev

Testes

Rodar Testes Unitários

npm run test

Acessar o Servidor

A API estará acessível em: http://localhost:3000 A documentação da API estará acessível em: http://localhost:3000/api/docs


Endpoints Disponíveis

1. Gerenciamento de Usuários

Criar Usuário

POST /users

Body:

{
  "name": "John Doe",
  "email": "john.doe@example.com",
  "password": "Password1!"
}

Listar Usuários (Paginado)

GET /users?page=1&limit=10

Buscar Usuário por ID

GET /users/:id

Atualizar Usuário

PUT /users/:id

Body:

{
  "name": "Jane Doe",
  "email": "jane.doe@example.com"
}

Soft Delete de Usuário

DELETE /users/:id

Restaurar Usuário Soft-Deleted

PATCH /users/:id/restore


2. Autenticação

Login

POST /auth/login

Body:

{
  "email": "john.doe@example.com",
  "password": "Password1!"
}

Resposta:

{
  "access_token": "jwt-token-aqui"
}

Validar Token

POST /auth/validate

Header:

Authorization: Bearer jwt-token-aqui

Resposta:

{
  "userId": "1",
  "email": "john.doe@example.com"
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors