- Adonis.JS
- Prisma
- PostgreSQL
- Docker
Apenas usuários administradores têm permissão para utilizar o sistema.
Usuários administradores têm autorização para realizar as seguintes operações relacionadas a usuários:
- Visualizar informações de usuários
- Criar novos usuários
- Excluir usuários existentes
- Editar informações de usuários
Usuários administradores têm permissão para gerenciar listas de números de telefone associadas a cada usuário, incluindo:
- Visualizar listas de números de telefone de usuários
- Criar novas listas de números de telefone
- Editar listas de números de telefone existentes
- Node.js: Versão recomendada é a 20.12.2 (LTS).
git clone https://github.com/marcosdanielr/phonebook-server.git
cd telephone-directory-server
npm install
docker compose up -d
npx prisma migrate dev
Caso teste em ambiente de dev, pode deixar o JWT_SECRET em .env com o valor "any", e colocar este password_hash para algum usuário em prisma/seed.js ou cadastrar manualmente no banco de dados (bash npx prisma studio
): "$bcrypt$v=98$r=10$uyJ9uessj6iOa84jw325pQ$oUGob15jVdCZhT8djf70c0u4wCOiyS4" (isto equivale a senha "123456789").
Precisa disso, pois apenas usuários administradores podem cadastrar no sistema:
npx prisma db seed
Ou simplesmente em start/routes.ts, altere a linha 22 e cadastre o seu usuário na role ADMIN nesta rota:
router.post('api/users', [UsersController, 'create']).use(middleware.auth())
npm run dev
- Corpo da requisição:
{
"email": "example@example.com",
"password": "senha123"
}
- Descrição: Rota de login.
- Descrição: Lista todos os usuários cadastrados.
- Corpo da requisição:
{
"name": "Nome",
"email": "example@example.com",
"password": "senha123",
"role": "USER"
}
- Descrição: Cria um novo usuário.
- Descrição: Exclui um usuário pelo ID.
- Corpo da requisição:
{
"name": "Novo Nome",
"email": "novo@example.com",
"password": "novasenha123",
"role": "USER"
}
- Descrição: Atualiza um usuário existente.
- Corpo da requisição:
{
"user_id": 1,
"number": "123456789"
}
- Descrição: Cadastra um número de telefone para um usuário.
- Descrição: Lista os números de telefone de um usuário.
- Descrição: Exclui um número de telefone pelo ID.
- Corpo da requisição:
{
"number": "987654321"
}
- Descrição: Atualiza um número de telefone existente.
- Criar documentação com Swagger.
- Separar as rotas em arquivos individuais.
- Adicionar rate limiter para evitar ataques.