Uma API básica em Nest.JS com consultas e atualizações do banco de dados em MySQL.
Instalação do MySQL
docker run --name mysql-desafio -p 3306:3306 -e MARIADB_ROOT_PASSWORD=desafio -d mariadb:latest
Crie um novo banco de dados chamado desafio
Dentro do arquivo app.module.ts
, inserir as variaveis de conexão com banco de dados.
Conexão padrão:
host: 192.168.0.16 (Mudar para seu IP)
database: desafio (Criar banco de dados 'desafio')
user: root
password: desafio
Caso queira mudar a conexão do SMTP de envio de E-mail, inserir as variaveis user
e pass
no arquivo auth.service.ts
na função forget
. Por padrão já existe um email configurado para enviar chamado noreplydesafio
leia sobre como utilizar o NodeMailer em https://community.nodemailer.com/using-gmail
Instalação com docker
docker build -t nest-api-desafio .
docker run -p 3333:3333 nest-api-desafio
Instalação com npm
npm install
npm run build
npm start
A URL de acesso será http://localhost:3333
Após a instalação, rode a seguinte query no banco de dados para adicionar um novo gestor:
INSERT INTO `desafio`.`user`(`id`, `nome`, `email`, `senha`, `senha_reset`, `acesso`, `created_at`, `updated_at`) VALUES (1, 'Gestor Teste', 'gestor@gmail.com', '$2b$10$XPzrp.H0FC.tElRidaH0VOcirFfcF23NL2sWx3GnHFIt3533KfpPa', '', 2, '2022-09-06 20:11:52.979420', '2022-09-07 00:26:03.413112');
O login e senha para acessar na conta do gestor são:
login: gestor@gmail.com
senha: 123456
utilize-os para fazer os testes na aplicação next-app-desafio.
Todas as requisições, exceto: Login, Forget. é necessário haver autenticação.
POST /auth/login
Parâmetro | Tipo | Descrição |
---|---|---|
email |
string |
Obrigatório. E-mail cadastrado |
senha |
string |
Obrigatório. Senha cadastrada |
GET /auth/me
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
POST /auth/forget
Parâmetro | Tipo | Descrição |
---|---|---|
email |
string |
Obrigatório. E-mail cadastrado |
POST /auth/forget/step
Parâmetro | Tipo | Descrição |
---|---|---|
code |
string |
Obrigatório. Código recebido no E-mail |
POST /auth/forget/reset
Parâmetro | Tipo | Descrição |
---|---|---|
code |
string |
Obrigatório. Código recebido no E-mail |
password |
string |
Obrigatório. Nova senha |
GET /users
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
GET /users/colaboradores
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
GET /users/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID do Usuario |
POST /users
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
nome |
string |
Obrigatório. O Nome do Usuario |
email |
string |
Obrigatório. O E-mail do Usuario |
senha |
string |
Obrigatório. Esta senha será criptografada em Bcrypt |
acesso |
number |
Obrigatório. 1 - Colaborador ou 2 - Gestor |
PUT /users/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID do Usuario |
nome |
string |
Opcional. O Nome do Usuario |
email |
string |
Opcional. O E-mail do Usuario |
senha |
string |
Opcional. Esta senha será criptografada em Bcrypt |
acesso |
number |
Opcional. 1 - Colaborador ou 2 - Gestor |
DEL /users/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID do Usuario |
GET /tasks
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
GET /tasks/all
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
GET /tasks/chart
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
GET /all/completed
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
GET /tasks/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID da Ordem de serviço |
POST /tasks
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
client |
number |
Obrigatório. O ID do Cliente |
colaborador |
number |
Obrigatório. O ID do Colaborador |
description |
string |
Obrigatório. Descrição do problema |
PUT /tasks/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID da Ordem de serviço |
solution |
string |
Opcional. Solução do problema |
completed |
string |
Obrigatório. o valor precisa ser true |
DEL /tasks/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID da Ordem de serviço |
GET /clients
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
GET /clients/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID do Cliente |
POST /clients
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
nome |
string |
Obrigatório. O nome do Cliente |
PUT /clients/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID do Cliente |
nome |
string |
Obrigatório. Novo nome do Cliente |
DEL /clients/{id}
Parâmetro | Tipo | Descrição |
---|---|---|
Authorization |
Bearer |
Obrigatório. Chave de autenticação JWT |
id |
number |
Obrigatório. O ID do Cliente |
Recebi a instrução de fazer o Projeto de Seleção da MonteNegro no dia 03/09/2022 e a data de entrega até o dia 08/09/2022, as linguagens eram Next.Js (Front), Nest.Js(Back), MySQL (database), Docker. Com muito esforço e dedicação consegui terminar esta API em Nest.Js com funcionalidades básicas e autenticação JWT. Absorvi muito conhecimento das linguagens recente e tenho em mente utilizadas em todos os projetos apartir de então.