As Entidades do projeto são:
Linhas
Paradas
Veiculos
PosicaoVeiculo
Usuario
Permissão
Cada linha passa de 0 a n paradas
Cada parada tem de 0 a n linhas que passam por ela
Cada veiculo pertence a uma linha
Cada veículo tem 0 a 1 posição cadastrada
Cada usuário pode ter muitas permissões
Muitos usuários podem ter muitas permissões
O diagrama que melhor representa o modelo físico do banco de dados está abaixo.
Primeiro, importe o projeto usando sua IDE de preferência. Uma vez com o projeto no seu computador, é hora de realizar a configuração do projeto para rodar na sua máquina. Feito isso, execute o script que está no arquivo data.sql, que está na raiz do nosso projeto. Ele contém a criação de nossas tabelas e o preenchimento das mesmas.
Uma vez terminado o dump do banco de dados. É hora de alterar as configurações do Hibernate, vá na arquivo \src\main\resources\application.properties e altere as seguintes configurações:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/transporte_api
spring.datasource.username=seuuser
spring.datasource.password=suasenha
Nos dados acima, coloque os dados do seu usuário e sua senha. O database transporte_api eu deixei como padrão ao criar o banco de dados. Caso você queira alterar, basta mudar o arquivo data.sql
Uma vez realizados os procedimentos acima, você já pode executar o projeto. Basta executar a classe chamada TransporteApiApplication, que esta em src/main/java/com/br/transporteapi. Caso queira executar via Maven, basta rodar o seguinte comando: mvn springboot:run
Há um parametro de contexto chamado aikoapi nas urls, logo todas as requisições devem ser enviadas para http://localhost:8080/aikoapi
Por padrão, o swagger está funcionando na URL http://localhost:8080/aikoapi/swagger-ui.html
Exemplo:
Como é necessária autenticação de usuário, você precisará do login e senha dos usuários. Eles estão no arquivo data.sql. Na parte da inserção dos usuários. Onde deixei a senha comentada logo acima da inserção de cada usuário.
Exemplo:
Para realizar a autenticação no Sistema, com o projeto rodando, dispare uma requisição post para http://localhost:8080/aikoapi/usuario/login, com algum dos usuários que estão salvos. Você receberá um token de acesso. Exemplo:
O tipo de autorização refere-se ao tipo do token, já a chave é a sua chave de acesso. Copie a chave. Com ela, caso esteja no swagger, clique no cadeado, em que está escrito "Authorize". Digite o tipo de chave (Bearer), espaço e a sua chave. Exemplo:
Sua chave é: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhaWtvIiwiaXNzIjoidHJhbnNwb3J0ZS1hcGkiLCJpYXQiOjE1OTU0OTU2NjEsImV4cCI6MTU5NTUwNjQ2MX0.LaszQq4uGNsVMxs5OHY3bsDfL_haCxSOmDbq3JJyOY4
Foto de exemplo:
Para fazer autenticação via Postman, basta acessar o mesmo endpoint, Post para http://localhost:8080/aikoapi/usuario/login informarmando suas credenciais de aces.
Exemplo:
Copie a chave de acesso que lhe foi entregue.
A cada requisição protegida que você enviar, terá de enviar o cabeçalho de autorização. Para deletar um veículo, por exemplo, você deve antes ir na aba "Authorization", escolher o tipo "bearer" e então inserir sua chave de acesso. Exemplo:
Os endpoints são:
/linha - refere-se às linhas
/parada - refere-se às paradas
/veiculo - refere´se aos veículos
/veiculo/posicao - refere-se à posição dos veículos
/usuario/login - para logar
Todas as requisições do tipo GET estão permitidas, já as requisições de tipo POST e PUT requerem permissão de dba, ou programador, ou admin. Qualquer uma das três. As requisições do tipo DELETE requerem permissão de admin