API de autenticação e gerenciamento de usuários construída com Node.js, Express e MySQL, utilizando JWT para proteção de rotas e bcrypt para criptografia de senhas.
- Node.js
- Express
- MySQL
- JWT (JSON Web Token)
- bcrypt (Hash de senha)
- dotenv (Variáveis de ambiente)
- Registrar novos usuários (
/register) - Login com geração de JWT (
/login) - Listar usuários (
/users) — Protegido por JWT - Atualizar e deletar usuários — Protegido por JWT
- Dashboard (
/dashboard) — Retorna dados do usuário logado - Painel Admin (
/admin) — Lista todos os usuários com opção de:- Excluir usuário
- Promover usuário a admin
Acesso restrito apenas a administradores
├── controllers/ # Lógica das rotas
├── middlewares/ # Middleware de autenticação JWT
├── models/ # Conexão e queries MySQL
├── routes/ # Definição das rotas
├── template/ # Arquivos HTML (opcional)
├── database/ # Configuração do banco de dados
├── app.js # Arquivo principal (Entry point)
└── .env # Variáveis de ambiente (sensível)
- Clonar o repositório:
git clone https://github.com/nakashima1231/nodejs-auth-jwt
cd nodejs-auth-jwt- Instalar dependências:
npm install- Criar arquivo .env com suas variáveis:
JWT_SECRET=seusegredo
DB_HOST=localhost
DB_USER=root
DB_PASS=senha
DB_NAME=nomeDoBanco
- Rodar o servidor:
node app.js
ou com Nodemon:
nodemon app.js
-
Use Postman, Insomnia ou outro cliente HTTP para testar as rotas.
-
O login (
/login) retorna um JWT, que deve ser enviado no headerAuthorization: Bearer TOKENpara acessar rotas protegidas. -
Dashboard e outras rotas protegidas exigem token válido.
-
O painel admin
(/admin) exige usuários com roleadmin.
-
Senhas são criptografadas com bcrypt.
-
JWT expira em 1 hora.
-
Rotas de front-end (
.html) são servidas viaexpress.static.
Gabriel Makiyama Nakashima gabrielmnakashima2@gmail.com