Skip to content

johnnessantos/desafio-luizalabs

Repository files navigation

Desafio técnico LuizaLabs

O desafio foi desenvolvido na linguagem Java 8 (openjdk "1.8.0_282") utilizando o framework spring boot para construir a api e consumir a api externa disponibilizada.

Como mecanismo de segurança na autenticação e autorização foi utilizado o JWT, o banco de dados postgres e documentação Swagger.

Acessar a documentação em: http://localhost:8080/swagger-ui/

Execução da aplicação

O desafio pode ser executado utilizando docker ou docker-compose.

Com o banco de dados postgres configurado para responder localhost:5432/client, executar os seguintes comandos (Linux):

./mvnw clean install  
java -jar target/clientes-api-0.0.1-SNAPSHOT.jar  
docker run -it -p 5432:5432 --name postgresqldb -e POSTGRES_PASSWORD=luizalabs -e POSTGRES_USER=luizalabs -e POSTGRES_DB=client -d postgres  
./mvnw clean install  
java -jar target/clientes-api-0.0.1-SNAPSHOT.jar  
docker-compose -f docker-compose-db.yml up -d  
./mvnw clean install  
docker-compose -f docker-compose.yml up -d  

Autenticando

Abaixo tem um exemplo de autenticação utilizando um usuário com perfil USER.

URL: http://localhost:8080/authenticate

Body:

{  
  "username": "luizalabs",  
  "password": "luizalabs"  
}  

Retorno:

{  
  "jwtToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJsdWl6YWxhYnMiLCJleHAiOjE2MTM3MzA4NzQsImlhdCI6MTYxMzcxMjg3NH0.5L_hdktrxTNsrg7lFf2inPJ6tghQH2hPPQief6-2aE0AhriYhgnnbr1c5kiq48DgVDp1VvvFvblLUBIEQEHYmw"  
}  

Observação: Os usuários estão no /clientesapi/service/UserService. Não foi realizado o controle no banco por praticidade no teste. Abaixo a tabela de usuários para teste:

username password role
admin admin ADMIN, USER
luizalabs luizalabs USER

Autorizações

A api contém o usuário com perfil ADMIN e USER, por padrão se o usuário é ADMIN também ter permissões do perfil de USER.

ROLE_ADMIN:

ROLE_USER:

  • Permissão de listar somente com filtros;
  • Permissão de criar, alterar e deletar.

Releases

No releases published

Packages

No packages published