O AuthKnex é uma API simples para gerenciamento de usuários, com funcionalidades básicas como criação, leitura, atualização e exclusão de usuários. O projeto utiliza Express para o servidor, Knex.js como query builder para interagir com o banco de dados MySQL, e bcrypt para criptografar senhas.
O projeto está organizado da seguinte forma:
AuthKnex/
├── .gitignore
├── controllers/
│ ├── UserController.js
│ └── homeController.js
├── database/
│ └── connection.js
├── index.js
├── models/
│ └── UserModel.js
├── package-lock.json
├── package.json
└── routes/
└── routes.js
- express: Framework para criar o servidor HTTP.
- knex: Query builder para interagir com o banco de dados.
- mysql2: Driver para conexão com o MySQL.
- bcrypt: Biblioteca para criptografar senhas.
- dotenv: Carrega variáveis de ambiente a partir de um arquivo
.env. - body-parser: Middleware para parsear o corpo das requisições.
- nodemon: Reinicia automaticamente o servidor durante o desenvolvimento.
Clone o repositório e instale as dependências:
git clone https://github.com/Benevanio/AuthKnex.git
cd AuthKnex
npm installCrie um arquivo .env na raiz do projeto com as seguintes variáveis de ambiente:
DB_HOST=localhost
DB_PORT=3306
DB_USER=seu_usuario
DB_PASSWORD=sua_senha
DB_NAME=nome_do_banco
PORT=3000Substitua os valores pelas credenciais do seu banco de dados MySQL.
Se você quiser criar tabelas e dados iniciais, pode usar o Knex para gerar migrações e seeds. Exemplo:
npx knex migrate:make create_users_table
npx knex seed:make 01_usersPara iniciar o servidor em modo de desenvolvimento:
npm run devO servidor estará rodando em http://localhost:3000.
- GET /
Retorna uma mensagem simples de "Home page".
-
POST /user
Cria um novo usuário.
Corpo da Requisição:{ "email": "usuario@example.com", "password": "senha123", "name": "Nome do Usuário", "role": "user" } -
GET /user/:email
Retorna um usuário pelo email. -
GET /user/id/:id
Retorna um usuário pelo ID. -
PUT /user/:id
Atualiza um usuário pelo ID.
Corpo da Requisição:{ "name": "Novo Nome", "email": "novoemail@example.com", "role": "admin" } -
GET /users
Retorna todos os usuários. -
PUT /user/edit
Edita um usuário.
Corpo da Requisição:{ "id": 1, "name": "Nome Atualizado", "email": "emailatualizado@example.com", "role": "admin" } -
DELETE /user/delete/:id
Exclui um usuário pelo ID.
Requisição:
curl -X POST http://localhost:3000/user \
-H "Content-Type: application/json" \
-d '{
"email": "usuario@example.com",
"password": "senha123",
"name": "Nome do Usuário",
"role": "user"
}'Resposta:
{
"message": "User created"
}Requisição:
curl -X GET http://localhost:3000/user/usuario@example.comResposta:
{
"id": 1,
"name": "Nome do Usuário",
"email": "usuario@example.com",
"role": "user"
}| Coluna | Tipo | Descrição |
|---|---|---|
| id | INT | ID único do usuário. |
| name | VARCHAR(255) | Nome do usuário. |
| VARCHAR(255) | Email do usuário. | |
| password | VARCHAR(255) | Senha criptografada. |
| role | VARCHAR(50) | Papel do usuário. |
- Faça um fork do projeto.
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature). - Commit suas mudanças (
git commit -m 'Adiciona nova feature'). - Push para a branch (
git push origin feature/nova-feature). - Abra um Pull Request.
Este projeto está sob a licença ISC. Consulte o arquivo LICENSE para mais detalhes.