Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/leonardopsouzaportfolio/brewer-vendadecervejas

Brewer - Venda de cervejas é um sistema de vendas de cervejas responsivo para se adaptar a todos tipos de telas que tem como papel agilizar o processo de vendas de cerveja ou propondo ao cliente registrar um orçamento ou recebê-lo por e-mail para uma compra futura.
https://github.com/leonardopsouzaportfolio/brewer-vendadecervejas

ajax bcrypt-encryption bean-validation bootstrap chartjs css3 flyway guava-cache handlebars hibernate hibernate-validator html5 java-8 java-mail jpa json spring thumbnailator thymeleaf uikit

Last synced: 5 days ago
JSON representation

Brewer - Venda de cervejas é um sistema de vendas de cervejas responsivo para se adaptar a todos tipos de telas que tem como papel agilizar o processo de vendas de cerveja ou propondo ao cliente registrar um orçamento ou recebê-lo por e-mail para uma compra futura.

Awesome Lists containing this project

README

        

## Índice
* [Introdução](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#brewer---venda-de-cervejas)
* [1. Diagrama de Classe](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#1-diagrama-de-classe)
* [2. Diagrama E-R - Modelo de banco de dados](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#2-diagrama-e-r---modelo-de-banco-de-dados)
* [3. Tecnologias Utilizadas](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#3-tecnologias-utilizadas)
* [4. Interface do sistema](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4-interface-do-sistema)
* [4.1 Login](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#41-login)
* [4.1.1 Erro ao logar](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#411-erro-ao-logar)
* [4.2 Tela Inicial](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#42-tela-inicial)
* [4.3 Menu Lateral](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43-menu-lateral)
* [4.3.1 Dashboard](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#431-dashboard)
* [4.3.2 Vendas](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#432-vendas)
* [4.3.2.1 Cadastro de venda](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4321-cadastro-de-venda)
* [4.3.2.2 Pesquisa de vendas](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4322-pesquisa-de-vendas)
* [4.3.3 Estoque](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#433-estoque)
* [4.3.3.1 Estilo](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4331-estilo)
* [4.3.3.1.1 Edição de estilo](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43311-edi%C3%A7%C3%A3o-de-estilo)
* [4.3.3.1.2 Exclusão de estilo](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43312-exclus%C3%A3o-de-estilo)
* [4.3.3.1.3 Cadastro de estilo](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43313-cadastro-de-estilo)
* [4.3.3.2 Cervejas](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4332-cervejas)
* [4.3.3.2.1 Edição de cerveja](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43321-edi%C3%A7%C3%A3o-de-cerveja)
* [4.3.3.2.2 Exclusão de cerveja](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43322-exclus%C3%A3o-de-cerveja)
* [4.3.3.2.3 Cadastro de cerveja](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43323-cadastro-de-cerveja)
* [4.3.4 Cadastro](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#434-cadastro)
* [4.3.4.1 Cidades](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4341-cidades)
* [4.3.4.1.1 Edição de cidade](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43411-edi%C3%A7%C3%A3o-de-cidade)
* [4.3.4.1.2 Exclusão de cidade](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43412-exclus%C3%A3o-de-cidade)
* [4.3.4.1.3 Cadastro de cidade](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43413-cadastro-de-cidade)
* [4.3.4.2 Clientes](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4342-clientes)
* [4.3.4.2.1 Edição de cliente](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43421-edi%C3%A7%C3%A3o-de-cliente)
* [4.3.4.2.2 Exclusão de cliente](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43422-exclus%C3%A3o-de-cliente)
* [4.3.4.2.3 Cadastro de cidade](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43423-cadastro-de-cidade)
* [4.3.4.3 Usuários](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4343-usu%C3%A1rios)
* [4.3.4.3.1 Edição de usuário](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43431-edi%C3%A7%C3%A3o-de-usu%C3%A1rio)
* [4.3.4.3.2 Exclusão de usuário](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43432-exclus%C3%A3o-de-usu%C3%A1rio)
* [4.3.4.3.3 Cadastro de usuário](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#43433-cadastro-de-usu%C3%A1rio)
* [4.3.5 Relatórios](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#435-relat%C3%B3rios)
* [4.3.5.1 Vendas emitidas](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#4351-vendas-emitidas)
* [4.4 Telas de informações](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#44-telas-de-informa%C3%A7%C3%B5es)
* [4.4.1 Acesso negado](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#441--acesso-negado)
* [4.4.2 Página não encontrada](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#442--p%C3%A1gina-n%C3%A3o-encontrada)
* [4.4.3 Página de erro no servidor](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#443--p%C3%A1gina-de-erro-no-servidor)
* [4.4.4 Página de sessão expirada](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#444--p%C3%A1gina-de-sess%C3%A3o-expirada)
* [4.5 Responsividade](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#45-responsividade)
* [4.6 Internacionalização](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#46-internacionaliza%C3%A7%C3%A3o)
* [5 Segurança](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#5-seguran%C3%A7a)
* [5.1 Autenticação](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#51-autentica%C3%A7%C3%A3o)
* [5.1.1 BCrypt](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#511--bcrypt)
* [5.2 Autorização](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#52-autoriza%C3%A7%C3%A3o)
* [5.3 Cross-Site Request Forgery (CSRF)](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#53-cross-site-request-forgery-csrf)
* [5.4 Expiração de múltiplos login](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#54-expira%C3%A7%C3%A3o-de-m%C3%BAltiplos-login)
* [5.5 Duração de sessão](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#55-dura%C3%A7%C3%A3o-de-sess%C3%A3o)
* [5.6 SQL Injection](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#56-sql-injection)
* [5.7 Validação de formulário](https://github.com/LeonardoPSouzaPortfolio/Brewer-VendaDeCervejas#57-valida%C3%A7%C3%A3o-de-formul%C3%A1rio)

-------------------------------

# Brewer - Venda De Cervejas

    Brewer é um sistema online de vendas de cervejas responsivo para se adaptar a todos tipos de telas que tem como papel agilizar o processo de vendas de cerveja ou propondo ao cliente registrar um orçamento ou recebê-lo por e-mail para uma compra futura.

    Este artigo descreve como o sistema foi projetado utilizando diagrama de classes para exibição da arquitetura do projeto e a modelagem de banco de dados para exibir os relacionamentos entre as tabelas do banco de dados, tecnologias utilizadas também como as funcionalidades do sistema e práticas de seguranças utilizadas.

### 1. Diagrama de Classe

    A **figura 1** descreve a estrutura do sistema Brewer modelando suas classes descrevendo seus atributos e as relações entre objetos.

Diagrama de classe


Figura 1 - Diagrama de classe

### 2. Diagrama E-R - Modelo de banco de dados
    A **figura 2** representa graficamente as entidades e seus relacionamentos com as de mais entidades do banco de dados

ER - Diagrama entidade relacionamento


Figura 2 - ER - Diagrama entidade relacionamento

### 3. Tecnologias Utilizadas
    A seguir serão listadas todas as tecnologias utilizadas no desenvolvimento do sistema Brewer

- **Java** - Linguagem de programação utilizada para o desenvolvimento do sistema.

- **Spring Framework** - Frameworks responsável pela arquitetura MVC e seguranças com **BCrypt** no projeto.

- **Thymeleaf** - Template engine do projeto responsável por transmitir dados para tela, construção de layout das telas.

- **JPA/Hibernate** - Utilizada a especificação do **JPA** para persistência dos dados utilizando a implementação do **Hibernate**.

- **HTML 5 e CSS3** - Usada para codificação e estilização do projeto utilizando também a biblioteca CSS do **Bootstrap**.

- **Javascript e jQuery** - Usada para interatividade com o usuário e controles dos dados do sistema.

- **Maven** - Para arquitetura inicial de projeto e controle de dependências.

- **Flyway** Para a utilização de banco de dados incremental.

- **MySql** - Linguagem de banco de dados utilizada.

- **SLF4 e Log4j** - Para controle dos log da aplicação.

- **Bean Validation e Hibernate Validator** - Usado validação de entidades e validações de campos.

- **Thumbnailator** - Para criação de thumbmail das imagens da cervejas.

- **JUnit** - Para teste unitários.

- **Java Mail** - Responsável pelos envio de e-mail utilizando serviço do **sendgrid**.

- **ChartJS** - Para geração de gráficos.

- **JasperReport** - Para geração de relatórios do sistema.

### 4. Interface do sistema
    Nesse tópico serão mostradas as principais telas do sistemas seguindo de suas funcionalidades.

#### 4.1 Login
    Inicialmente o sistema inicia na tela de “login” onde o vendedor irá entrar com seus dados de autenticação, como mostrado na **figura 3**.

Tela de login


Figura 3 - Tela de login

#### 4.1.1 Erro ao logar
    Na figura 4 é mostrado a mensagem de falha ao tentar logar caso o vendedor informe seus dados incorretamente.

Mensagem de falha ao tentar logar


Figura 4 - Mensagem de falha ao tentar logar

#### 4.2 Tela Inicial
    A tela inicial do sistema é composta por um cabeçalho contendo a logo do sistema Brewer, nome do vendedor e o botão de sair (logout) mais abaixo temos o menu lateral com os menus do sistema (ver próximo tópico) e a área de conteúdo que exibe a página de “Dashboard” do sistema e por fim o rodapé no final da página contendo o nome do desenvolvedor do sistema. **Figura 5**.

Dashboard - Tela inicial do sistema


Figura 5 - Dashboard - Tela inicial do sistema

#### 4.3 Menu Lateral
    No menu lateral temos 5 menus e seus submenus.
- Dashboard
- Vendas
- Cadastro de venda
- Pesquisa de vendas
- Estoque
- Estilo
- Cervejas
- Cadastro
- Cidades
- Clientes
- Usuários
- Relatórios
- Vendas emitidas

#### 4.3.1 Dashboard
    A tela de “Dashboard” serão feitas o levantamento de algumas informações como “Valor do estoque”, “Itens no estoque”, “Total de clientes”, “Vendas no ano”, “Vendas no mês”, “Ticket médio” assim como dois gráficos, um mostrando a quantidades de vendas nos últimos 6 meses e o outro a quantidade de cervejas “Nacional” e “Internacional” vendidas. Como mostrado na **figura 5**.

#### 4.3.2 Vendas
    O menu de vendas possui dois submenus “Cadastro de venda” e “Pesquisa de vendas”.

#### 4.3.2.1 Cadastro de venda
    No cadastro de venda encontra-se 3 caixas de informações “Total”, “Status” e “Criação” representando o valor total da compra, o status da compra se está em “Orçamento”, “Emitida” ou “Cancelada”. e a data de criação da compra. Abaixo temos o formulário da venda com os campos de pesquisa rápida de “Cliente”, entrada de “Valor do frete”, entrada de “Valor do desconto” e duas abas terminando o formulário. Mostrado na **figura 6**.

Tela de cadastro de venda


Figura 6 - Tela de cadastro de venda

    Na aba “Cervejas” temos um campo de pesquisa rápida de cerveja onde ao digitar o “Nome” ou “SKU” aparecerá uma caixa de seleção contendo o nome, SKU, origem e o valor unitário da cerveja. Após selecionar a cerveja ela aparecerá na tabela de itens da venda logo abaixo do campo de pesquisa rápida de “Cliente”. **Figura 7**.

Tela de cadastro de venda preenchida


Figura 7 - Tela de cadastro de venda preenchida

    Na Aba de entrega encontra-se outro formulário com os campos “Data de entrega”, “Horário de entrega” e “Observação” exibida na **figura 8**.

Tela de cadastro de venda - Guia entrada


Figura 8 - Tela de cadastro de venda (Guia entrada)

    Após preencher os campos obrigatórios da venda é possível “Salvar” esta venda com o “Status” de “Orçamento” ou “Salvar e emitir” para salvar e emitir uma venda e mudar seu “Status” para “Emitida” ou “Salvar e enviar por e-mail” para salvar a venda com “Status” de “Orçamentos” e enviando um e-mail para o cliente com seus dados desta venda, confira a **figura 9** o recebimento do e-mail com os dados da venda

Tela do e-mail recebido


Figura 9 - Tela do e-mail recebido

#### 4.3.2.2 Pesquisa de vendas
    Na tela de pesquisa de vendas na **figura 10** podem ser filtradas as vendas pelos seguintes filtros “Código”, “Status”, “Data de criação”, “Valor Total”, “Nome Cliente”, “CPF/JNPG” e a baixo a listagem de vendas filtradas.
Pesquisando por quaisquer dos campos retornará a busca clicando no botão “Pesquisar”. Ao deixar os campos de filtros vazios será retornado todas as vendas.

Tela de pesquisa de vendas


Figura 10 - Tela de pesquisa de vendas

    **Observação:** todas as paginações do sistema são feitas no servidor, ou seja, são trafegadas somente uma determinada quantidade de registros do servidor fazendo-a assim trafegar menos dados do servidor deixando aplicação mais rápida e dinâmica.

    Na listagem de venda na **figura 10** cada “venda” possui um ícone de edição onde pode-se fazer alteração da venda ou o cancelamento da venda.

    Na tela de “Edição de venda exibida" na **figura 11,** sómente os **administradores** e o **dono da venda** tem permissão para cancelar uma venda.

Tela de edição de venda


Figura 11 - Tela de edição de venda

    Caso o vendedor sem administrador tente cancelar uma venda em que ele não registrou, o mesmo será redirecionado para uma página de acesso negado. Figura 12.

Tela acesso negado


Figura 12 - Tela acesso negado

#### 4.3.3 Estoque
    O menu de estoque possui dois submenus “Estilos” e “Cervejas”.

#### 4.3.3.1 Estilo
    No submenu “Estilos” figura 13, encontra-se a página de pesquisa de estilos com o campo de pesquisa de estilo e a tabela de registro de estilos tendo acima o botão “Novo estilo”.

    Na listagem de estilo na **figura 13** cada registro possui os íconea de edição e exclusão.

Tela de pesquisa de estilos


Figura 13 - Tela de pesquisa de estilos

#### 4.3.3.1.1 Edição de estilo
    Na edição de estilo **figura 14**, encontra-se o campo de estilo preenchido com o dados do registro selecionado e o botão “Salvar” para alterar o “estilo”.

Tela de edição de estilo


Figura 14 - Tela de edição de estilo

#### 4.3.3.1.2 Exclusão de estilo
    No ícone de exclusão de estilo abrirá uma caixa de diálogo com a confirmação se deseja excluir este estilo **figura 15**.

Tela de exclusão de estilo


Figura 15 - Tela de exclusão de estilo

#### 4.3.3.1.3 Cadastro de estilo
    No cadastro de estilos **figura 16**, encontra-se a página de cadastro de estilo com o campo de estilo e o botão “Salvar” para salvar um novo “estilo”.

Tela de cadastro de estilo


Figura 16 - Tela de cadastro de estilo

#### 4.3.3.2 Cervejas
    No submenu “Cervejas” figura 17 , encontra-se a página de pesquisa de cervejas com os campos de pesquisa por “SKU”, “Nome”, “Estilo”, “Sabor”, “Origem”,“Valor unitário” e a tabela de registro de cervejas tendo acima o botão “Nova Cerveja”.

Tela de pesquisa de cervejas


Figura 17 - Tela de pesquisa de cervejas

#### 4.3.3.2.1 Edição de cerveja
    Na edição de cerveja **figura 18**, encontra-se os campos preenchido com o dados do registro selecionado e o botão “Salvar” para alterar a “cerveja”.

Tela de edição de cerveja


Figura 18 - Tela de edição de estilo

#### 4.3.3.2.2 Exclusão de cerveja
    No ícone de exclusão de cerveja abrirá uma caixa de diálogo com a confirmação se deseja excluir esta cerveja **figura 19**.

Tela de exclusão de cerveja


Figura 19 - Tela de exclusão de cerveja

#### 4.3.3.2.3 Cadastro de cerveja
    No cadastro de cervejas **figura 20**, encontra-se a página de cadastro de cervejas com o formulário de preenchimento de cerveja e o botão “Salvar” para salvar uma nova “cerveja”.

Tela de cadastro de cerveja


Figura 20 - Tela de cadastro de cerveja

    Caso tenha cadastrado uma cerveja sem foto ao salvar a cerveja será usada uma foto padrão para as cervejas sem foto. **Figura 21**.

Imagem para cervejas sem foto


Figura 21 - Imagem para cervejas sem foto

    É possível cadastrar um novo “estilo” clicando no ícone de (+) ao lado do campo “Estilo”. assim fazendo-o abrir uma caixa de diálogo **figura 22** para cadastrar um novo “estilo”. Após o cadastramento de um novo estilo o mesmo já vem selecionado na caixa de seleção de “Estilo”.

Caixa de diálogo de cadastro estilo rapido


Figura 22 - Caixa de diálogo de cadastro estilo rapido

#### 4.3.4 Cadastro
    O menu de cadastro possui três submenus “Cidades”, “Cliente” e “Usuário”.

#### 4.3.4.1 Cidades
    No submenu “Cidades” figura 23, encontra-se a página de pesquisa de cidades com os campos de pesquisa de cidades e a tabela de registro de cidades tendo acima o botão “Nova cidade”.

    Na listagem de cidade na **figura 23** cada registro possui um ícone de edição e outros de exclusão.

Tela de pesquisa de cidades


Figura 23 - Tela de pesquisa de cidades

#### 4.3.4.1.1 Edição de cidade
    Na edição de cidade **figura 24**, encontra-se os campos preenchido com o dados do registro selecionado e o botão “Salvar” para alterar a “cidade”.

Tela de edição de cidade


Figura 24 - Tela de edição de cidade

#### 4.3.4.1.2 Exclusão de cidade
    No ícone de exclusão de cidade abrirá uma caixa de diálogo com a confirmação se deseja excluir esta cidade **figura 25**.

Tela de exclusão de cidade


Figura 25 - Tela de exclusão de cidade

#### 4.3.4.1.3 Cadastro de cidade
    No cadastro de cidades **figura 26**, encontra-se a página de cadastro de cidade com os campos do formulário de cidade e o botão “Salvar” para salvar uma nova “cidade”.

Tela de cadastro de cidade


Figura 26 - Tela de cadastro de cidade

#### 4.3.4.2 Clientes
    No submenu “Clientes” figura 27, encontra-se a página de pesquisa de clientes com os campos de pesquisa de clientes e a tabela de registro de clientes tendo acima o botão “Novo cliente”.

    Na listagem de cliente na **figura 27** cada registro possui um ícone de edição e outros de exclusão.

Tela de pesquisa de clientes


Figura 27 - Tela de pesquisa de clientes

#### 4.3.4.2.1 Edição de cliente
    Na edição de cidade **figura 28**, encontra-se os campos preenchido com o dados do registro selecionado e o botão “Salvar” para alterar o “cliente”.

Tela de edição de cliente


Figura 28 - Tela de edição de cliente

#### 4.3.4.2.2 Exclusão de cliente
    No ícone de exclusão de cliente abrirá uma caixa de diálogo com a confirmação se deseja excluir esta cidade **figura 29**.

Tela de exclusão de cliente


Figura 29 - Tela de exclusão de cliente

#### 4.3.4.2.3 Cadastro de cidade
    No cadastro de cidades **figura 30**, encontra-se a página de cadastro de cidade com os campos do formulário de cidade e o botão “Salvar” para salvar uma nova “cidade”.

Tela de cadastro de cliente


Figura 30 - Tela de cadastro de cliente

#### 4.3.4.3 Usuários
    No submenu “Usuários” figura 31, encontra-se a página de pesquisa de usuários com os campos de pesquisa de usuários e a tabela de registro de usuários tendo acima o botão “Novo Usuário”.

    Na listagem de usuário na **figura 31** cada registro possui um ícone de edição e outros de exclusão.

    **Observação:** nas caixas de seleções não é possível selecionar o caixa de seleção do usuário logado para evitar erros comuns de desativamento do usuário logado.

Tela de pesquisa de usuários


Figura 31 - Tela de pesquisa de usuários

#### 4.3.4.3.1 Edição de usuário
    Na edição de usuário **figura 32**, encontra-se os campos preenchido com o dados do registro selecionado e o botão “Salvar” para alterar o “usuário”.

Tela de edição de usuário


Figura 32 - Tela de edição de usuário

#### 4.3.4.3.2 Exclusão de usuário
    No ícone de exclusão de usuário abrirá uma caixa de diálogo com a confirmação se deseja excluir este usuário **figura 33**.

Tela de exclusão de usuário


Figura 33 - Tela de exclusão de usuário

#### 4.3.4.3.3 Cadastro de usuário
    No cadastro de usuário **figura 34**, encontra-se a página de cadastro de usuário com os campos do formulário de usuários e o botão “Salvar” para salvar um novo “usuário”.

Tela de cadastro de usuário


Figura 34 - Tela de cadastro de usuário

#### 4.3.5 Relatórios
    O menu de relatório possui apenas um submenus “Vendas emitidas”.

#### 4.3.5.1 Vendas emitidas
    No submenu “Vendas emitidas” figura 35, encontra-se a página de relatório de vendas emitidas com dois campos de datas para preencher os intervalos entre essas duas datas e o botão de “Emitir”.

Tela de relatório de vendas emitidas


Figura 35 - Tela de relatório de vendas emitidas

    Ao emitir o relatório de vendas emitidas o relatório irá abrir automaticamente, **figura 36**, exibindo os registros do filtro informado.

Relatório emitido


Figura 36 - Relatório emitido

#### 4.4 Telas de informações
    É comum do usuário eventualmente acabar fazendo alguma ação inesperada, para esse tipos de situações o usuário será redirecionado para a tela contendo a informação da sua ação inesperada.

#### 4.4.1 Acesso negado
    Ao tentar acessar uma URL de alguma função restrita do sistema, o sistema irá redirecionar para a página de acesso negado. **Figura 37.**

Tela de acesso negado


Figura 37 - Tela de acesso negado

#### 4.4.2 Página não encontrada
    Ao tentar acessar uma URL não existente, o sistema irá redirecionar para a página de página não encontrada. **Figura 38.**

Tela de Tela de página não encontrada


Figura 38 - Tela de página não encontrada

#### 4.4.3 Página de erro no servidor
    Caso ocorra algo inesperado com o sistema, o sistema irá redirecionar para a página de erro no servidor. **Figura 39.**

Tela de página de erro no servidor


Figura 39 - Tela de erro no servidor

#### 4.4.4 Página de sessão expirada
    Caso o mesmo usuário tente logar novamente ao sistema já tendo uma sessão ativa, o sistema irá redirecionar para a página de sessão expirada. **Figura 40.**

Tela de página de sessão expirada


Figura 40 - Tela de sessão expirada

#### 4.5 Responsividade
    O sistema brewer possui responsividade para se adaptar a telas de diversos aparelhos. Na **figura 41** temos a tela de um dispositivo móvel de tela pequena.

Tela de Tela de Dashboard responsiva


Figura 41 - Tela de Dashboard responsiva

#### 4.6 Internacionalização
    O sistema brewer possui internacionalização adaptada para duas línguas, sendo ela portugues e ingles. Na **figura 42** temos a tela do Dashboard do sistema toda na linguagem inglesa só trocando o idioma do navegador utilizado.

Tela de Tela de Dashboard em inglês


Figura 41 - Tela de Dashboard em inglês

#### 5 Segurança
    O sistema brewer possui alguma camadas de seguranças a qual permite uma veracidade e integridade dentro do sistema.

#### 5.1 Autenticação
    Com a autenticação cada “usuário” do sistema possui seu “e-mail” e “senha” para efetuar seu login.

    **Observação:** É preciso estar autenticado para operar qualquer funcionalidade dentro do sistema.

#### 5.1.1 BCrypt
    Ao cadastrar um usuário no sistema a senha desse usuário utiliza a criptografia “BCrypt” para transformar a senha desse usuário num “hash” de 60 caracteres.

#### 5.2 Autorização
    O sistema brewer trabalha com níveis de permissão onde o usuário comum só pode ter acesso a funções do sistema relacionado ao vendedor, enquanto os usuários com permissões de administradores podem ter acesso a todo o sistema.

#### 5.3 Cross-Site Request Forgery (CSRF)
    “CSRF” é uma ferramenta de segurança que valida uma requisição. O que impede o sequestro de uma requisição entre sites, ou seja, quando algum usuário logado no sistema executa algum codigo malicioso recebido por alguém mal intencionado para executar alguma ação dentro do sistema se aproveitando da requisição do usuário logado.

#### 5.4 Expiração de múltiplos login
    Expiração de múltiplos login ocorre quando o usuário já está logado no sistema e acaba se logando novamente de outro lugar, fazendo-o assim a sessão antiga se perder (deslogar) e se mantendo ativo somente com a última sessão logada.

#### 5.5 Duração de sessão
    O sistema brewer trabalha com o tempo de sessão de inoperatividade de 20 minutos, ou seja, se o usuário ficar 20 minutos sem fazer qualquer atividade dentro do sistema ele perderá sua sessão e terá que fazer o login novamente.

#### 5.6 SQL Injection
    SQL Injection é uma técnica onde um atacante cria ou altera comandos SQL existentes para expor dados escondidos, ou sobrescrever dados valiosos, ou ainda executar comandos de sistema perigosos no servidor.

    O sistema brewer é implementado com o implementação do hibernate e com especificação JPA, essas ferramentas evitam falhas de seguranças como SQL Injection.

#### 5.7 Validação de formulário
    O sistema brewer utiliza da API **Bean Validation** e **Hibernate Validator** para auxiliar nas validações de formulários utilizando suas anotações e criando anotações de validações de campos próprias.