Enviar arquivos para "/"

This commit is contained in:
2026-04-29 01:13:15 +00:00
parent 0eead18cb6
commit 26ea826831
3 changed files with 121 additions and 29 deletions

12
.env Normal file
View File

@@ -0,0 +1,12 @@
# Configurações do Banco de Dados
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=sua_senha_aqui
DB_NAME=gameverse_library
# Configurações do JWT
JWT_SECRET=sua_chave_secreta_aqui_mude_para_producao
JWT_EXPIRES_IN=24h
JWT_ISSUER=https://sistema-distribuido-trabalho-faculd.vercel.app
JWT_AUDIENCE=internal-apis
JWT_PUBLIC_KEY_PEM=-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxf0rOpF9jsaUb+T5uem/\n6lJby0lLqNstP4bpXg4izqzV18ad9gM/mOS+1M8U204/CMBowC2XFVKQITlZ8y3o\n1KrlyUpmTfZrrDHidCII53v3E/N6Vou4hEV5xLQhuE6IsXB4bwDpr+JgAq17IVTf\nUR+ePFY6xmPCimTuGTxNPOJprkY1V1jEYzMHvtk6FSV39eZDp2GM3wnGYk95ib5f\nFd+xRB8kUdrtub5Cifd/ayvF2vsmgsjN41d2qOw6MFsNsXsOXVcrCE/0GvvW5C8B\nRTPCifEPbHJ/Du7ye1yDjHDyiYXnnoZ3cOg6Vla12OnlBRfL6sJBT6VCvIbzQN1z\n7QIDAQAB\n-----END PUBLIC KEY-----

78
CHECKLIST.md Normal file
View File

@@ -0,0 +1,78 @@
# Checklist - Microsserviço Biblioteca de Usuário
## ✅ Implementação do Token JWT
- [x] Arquivo `.env` criado com configurações JWT
- [x] `JWT_SECRET` configurado
- [x] `JWT_EXPIRES_IN` configurado (24h)
- [x] `JWT_ISSUER` configurado
- [x] `JWT_AUDIENCE` configurado
- [x] `JWT_PUBLIC_KEY_PEM` configurado (chave pública RSA)
## ✅ Middleware de Autenticação
- [x] Arquivo `config/authMiddleware.js` criado
- [x] Validação de token no header Authorization
- [x] Verificação de issuer
- [x] Verificação de audience
- [x] Algoritmo RS256 configurado
- [x] Fallback para HS256 (JWT_SECRET)
## ✅ Rotas Protegidas
- [x] `POST /library/add` - requer token JWT
- [x] `GET /library/user/:user_id` - requer token JWT
- [x] `POST /library/integration/payment-approved` - pública (integração)
## ✅ Segurança no Controller
- [x] `addItem` usa user_id do token (não do body)
- [x] `getLibrary` usa user_id do token (não dos params)
## ✅ Dependências
- [x] `jsonwebtoken` instalado
- [x] `dotenv` instalado
- [x] `package.json` atualizado
## ✅ Arquivos do Projeto
- [x] `app.js` - carrega dotenv
- [x] `routes/libraryRoutes.js` - rotas com middleware
- [x] `controllers/libraryController.js` - lógica com token
- [x] `config/authMiddleware.js` - validação JWT
- [x] `.env` - configurações
---
## 🚀 Como Testar
### 1. Iniciar o servidor
```bash
npm start
```
### 2. Testar sem token (deve retornar 401)
```bash
GET http://localhost:3005/library/user/1
```
### 3. Testar com token válido (deve retornar 200)
```bash
GET http://localhost:3005/library/user/1
Authorization: Bearer <seu_token_jwt>
```
### 4. Testar com token inválido (deve retornar 403)
```bash
GET http://localhost:3005/library/user/1
Authorization: Bearer token_invalido
```
---
## 📝 Observações
- A rota `/integration/payment-approved` é pública pois é chamada por outros microsserviços
- O user_id é extraído do token JWT para garantir segurança
- A chave pública PEM está configurada para RS256

2
app.js
View File

@@ -1,6 +1,8 @@
require('dotenv').config();
const express = require('express'); const express = require('express');
const cors = require('cors'); const cors = require('cors');
const routes = require('./routes/libraryRoutes'); const routes = require('./routes/libraryRoutes');
const { authenticateToken } = require('./config/authMiddleware');
// Este é o coração do nosso microsserviço da Biblioteca do Usuário! // Este é o coração do nosso microsserviço da Biblioteca do Usuário!
// Aqui eu configuro o servidor Express que vai gerenciar todas as rotas da nossa API. // Aqui eu configuro o servidor Express que vai gerenciar todas as rotas da nossa API.