Uma API RESTful com autenticação baseada em JSON Web Tokens (JWT) e persistência em banco de dados SQLite.
- ✅ Registro e autenticação de usuários
- 🔒 Proteção de rotas com JWT
- 👥 Gerenciamento de usuários (CRUD)
- 🛡️ Controle de acesso baseado em funções (user/admin)
- 🔐 Senhas com hash usando bcrypt
- 📦 Persistência de dados com SQLite
- Node.js (v14+)
- npm ou yarn
-
Clone o repositório:
git clone <url-do-repositorio> cd app09
-
Instale as dependências:
npm install # ou yarn install -
Configure as variáveis de ambiente:
cp .env.example .env # Edite o arquivo .env com suas configurações -
Inicie o servidor:
npm run dev # ou yarn dev -
Acesse a aplicação em
http://localhost:3000
app09/
├── data/ # Diretório para o banco de dados SQLite
├── public/ # Arquivos estáticos
│ ├── css/ # Estilos CSS
│ ├── js/ # Scripts JavaScript
│ └── index.html # Página inicial
├── src/ # Código-fonte
│ ├── config/ # Configurações
│ ├── controllers/ # Controladores
│ ├── middleware/ # Middlewares
│ ├── models/ # Modelos de dados
│ ├── routes/ # Rotas da API
│ └── utils/ # Utilitários
├── .env # Variáveis de ambiente
├── .gitignore # Arquivos ignorados pelo Git
├── package.json # Dependências e scripts
├── README.md # Documentação
└── server.js # Ponto de entrada da aplicação
POST /api/auth/register- Registrar um novo usuárioPOST /api/auth/login- Autenticar usuário e obter tokenGET /api/auth/me- Obter dados do usuário atual (requer autenticação)
GET /api/users- Listar todos os usuários (requer admin)GET /api/users/:id- Obter usuário por ID (próprio usuário ou admin)PUT /api/users/:id- Atualizar usuário (próprio usuário ou admin)DELETE /api/users/:id- Excluir usuário (próprio usuário ou admin)
fetch('/api/auth/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name: 'Usuário Teste',
email: 'usuario@teste.com',
password: 'Senha123'
})
})
.then(res => res.json())
.then(data => console.log(data));fetch('/api/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'usuario@teste.com',
password: 'Senha123'
})
})
.then(res => res.json())
.then(data => {
localStorage.setItem('token', data.token);
console.log(data);
});const token = localStorage.getItem('token');
fetch('/api/auth/me', {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`
}
})
.then(res => res.json())
.then(data => console.log(data));- Node.js - Ambiente de execução JavaScript
- Express - Framework web
- SQLite - Banco de dados
- JWT - Autenticação baseada em tokens
- bcrypt - Hash de senhas
- dotenv - Gerenciamento de variáveis de ambiente
- cors - Middleware para habilitar CORS
- morgan - Middleware para logging
- Autenticação e autorização
- Segurança de APIs
- Persistência de dados
- Arquitetura MVC
- Validação de dados
- Tratamento de erros
- Controle de acesso baseado em funções (RBAC)
Este projeto é para fins educacionais.