Esta é minha aplicação teste para a vaga de dev php na jedis. Trata-se de uma aplicação laravel 10 para gestão de produtos com autenticação de usuários. A autenticação de usuários é feita com o laravel passport no formato grant type password. O usuário deve fornecer um email e senha para obter um token de acesso. Este token de acesso deverá ser utilizado para acessar as rotas protegidas da aplicação. As rotas possuem escopos para definir se o usuário da aplica ção possui acesso à funcionalidade. A aplicação possui as seguintes rotas:
Certifique-se de ter os seguintes itens instalados:
- Docker
-
Clone o Repositório:
git clone https://github.com/MatheusSoaresDev/api-teste-jedis.git
-
Navegue até o Diretório do Projeto:
cd api-teste-jedis
-
Criar o arquivo .env
cp .env.example .env
-
Execute e entre no Contêiner Docker:
docker compose up -d docker exec -it api-produtos bash
-
Rode as configurações do laravel
php artisan key:generate php artisan migrate php artisan db:seed DatabaseSeeder php artisan passport:client --password
-
Após gerar a chave. Copie o client id e o cliente secret e cole no .env
PASSPORT_PASSWORD_CLIENT_ID={client_id} PASSPORT_PASSWORD_CLIENT_SECRET={client_secret}
-
Execute os testes
php artisan test
- Descrição: Rota para autenticar um usuário e obter um token e um refresh de acesso.
- Escopo: [Aberto]
- Método: POST
- Headers:
- Content-Type: application/json
- accept: application/json
- Corpo da Solicitação:
{ "username": "User Example", "password": "password" }
- Descrição: Rota para cadastrar um novo usuário.
- Escopo: [Aberto]
- Método: POST
- Headers:
- Content-Type: application/json
- accept: application/json
- Corpo da Solicitação:
{ "name": "User Example", "email": "user@example.com", "password": "password" }
- Descrição: Rota para deslogar um usuário (Revogar access token).
- Escopo: [admin,user]
- Método: DELETE
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]
- Descrição: Rota para tornar um usuário administrador do sistema.
- Escopo: [admin]
- Método: PUT
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]
- Descrição: Rota para cadastrar um novo produto.
- Escopo: [admin]
- Método: POST
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]
- Corpo da Solicitação:
{ "nome" : "Exemplo produto", "descricao" : "Exemplo de descrição de produto", "preco" : 10.00 "quantidade" : 100 }
- Descrição: Rota para alterar os dados de um produto.
- Escopo: [admin]
- Método: PUT
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]
- Corpo da Solicitação:
{ "nome" : "Exemplo produto", "descricao" : "Exemplo de descrição de produto", "preco" : 10.00 "quantidade" : 100 }
- Descrição: Rota para deletar um produto cadastrado.
- Escopo: [admin]
- Método: DELETE
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]
- Descrição: Rota para listar todos os produtos cadastrados.
- Escopo: [admin,user]
- Método: GET
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]
- Descrição: Rota para realizar a compra de um produto.
- Escopo: [admin,user]
- Método: POST
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]
- Descrição: Rota para listar todas as compras realizadas pelo usuário.
- Escopo: [admin,user]
- Método: GET
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]
- Descrição: Rota para listar uma compra realizada pelo usuário.
- Escopo: [admin,user]
- Método: GET
- Headers:
- Content-Type: application/json
- accept: application/json
- Authorization: Bearer [seu-token]