Git Product home page Git Product logo

seguranca-digital's Introduction

Projeto Sistema de Segurança Digital - Versão 1.0

SQUADRA Tecnologia}


Bases Versão Acesso
Desenvolvimento 1.0 link
Homologação 1.0 link
Produção 1.0 link

O que este repositório contém

  1. Controle de permissão de usuários ACL.
  2. Autenticação com JWT.
  3. QueryBuilder Eloquent ORM.
  4. Swagger API REST.

Qual o objetivo deste repositório

  1. Processo seletivo para a empresa SQUADRA Tecnologia.
  2. Criar um cadastro de "sistemas" e controle de justificativa de alterações.
  3. Executar consultas avançadas em uma query.
  4. Documentar o projeto com o Swagger.

O que é necessário para configurar

  1. PHP >= 7.2 com requisitos de extensão, conforme descrito na documentação do Lumen.
  2. Composer em uma Versão estável.
  3. Qualquer banco de dados de sua escolha, eu usei o MySQL.

Como instalar

# Instalar todos os pacotes necessários para executar o aplicativo
> composer install

# Criar o arquivo .env e defina o seu APP_TIMEZONE e banco de dados.
> cp .env.example .env

# Gerar app secret
> php artisan key:generate

# Gerar jwt secret
> php artisan jwt:secret

# Criar as tabelas necessárias no seu banco de dados
# Nota: Lembre-se de criar o banco de dados antes de executar este comando!
> php artisan migrate

# Alimentar nosso banco de dados com dados necessários
> php artisan db:seed

# Recriar os dados de nosso banco de dados
> php artisan migrate:fresh --seed

Qual o modelo do diagrama

Diagrama}


Importar Endpoits da API para o Insomia

Importar Insomnia}

Insomia


Como executar o projeto

# Você pode executá-lo no localhost ou pode configurar um virtualhost local
# O servidor fica a sua escolha entre nginx ou apache
# Particularmente prefiro nginx com virtualhost de domínio local. 
# Exemplo: http://segurancadigital.test
# Nota: Informe a URL no projeto importado do Insomia para testar os endpoits. 
> php artisan serve

Como gerar/acessar a documentação do Swagger

# Nota: O comando abaixo irá gerar a documentação da API conforme as anotações no código PHP. 
> php artisan swagger-lume:generate

# Para acessar a documentação da API acesse a url abaixo. 
> /api/doc

Swagger


Como posso ver as rotas da API

# Lista todas as rotas definidas no projeto 
> php artisan route:list

Endpoits de consultas de sistemas cadastrados

# Importante: O final da url deve conter os parâmetros api/v1.
# Exemplo: http://segurancadigital.local/api/v1

# Exibir todos.
> /api/v1/sistemas

# Exibir todos, com a última justicativa.
> /api/v1/sistemas?include=controle

# Exibir todos, com a última justicativa e usuário técnico.
> /api/v1/sistemas?include=controle,controle.user

# Exibir todos, com todas as justicativas.
> /api/v1/sistemas?include=controles

# Exibir todos, com todas as justicativas e usuários técnicos.
> /api/v1/sistemas?include=controles,controles.user

# Filtrar por descrição, com a última justicativa e usuário técnico
> /api/v1/sistemas?include=controle,controle.user&filter=[descricao]=Rodrigues

# Filtrar por descrição e sigla, com a última justicativa
> /api/v1/sistemas?include=controle&filter[descricao]=Rodrigues&filter[sigla]=QUIDEM

# Filtrar por e-mail de usuário técnico
> /api/v1/sistemas?filter[email]=pedro0example.org

# Filtrar por status
> /api/v1/sistemas?filter[status]=cancelado

# Filtrar por nome do usuário todos os sistemas onde ele fez a qualquer alteração
> /api/v1/sistemas?include=controles&filter[controles.user.name]=Pedro

# Filtrar por e-mail do usuário todos os sistemas onde ele fez a qualquer alteração
> /api/v1/sistemas?include=controles&filter[controle.user.email]=pedro0example.org

# Filtrar por nome do usuário que criou o sistema
> /api/v1/sistemas?include=createdBy&filter[createdBy.name]=Pedro

# Filtrar por nome do usuário que alterou o sistema
> /api/v1/sistemas?include=updatedBy&filter[updatedBy.name]=Pedro

Endpoit para listar um sistema por ID

> /api/v1/sistemas/20

Endpoit para listar histórico de alterações de um sistema por ID

> /api/v1/sistemas/historico/18

Endpoits de usuários do sistema

# Listar todos usuários cadastrados
> /api/v1/users

# Exibir dados do usuário, perfis e permissões por ID
> /api/v1/users/2

1. Perfil - Super Administrador
> Login: [email protected] 
> Senha: super

2. Perfil - Administrador
> Login: [email protected]
> Senha: admin

3. Perfil - Técnico
> Login: [email protected]
> Senha: tecnico

4. 50 usuários ficticios com o perfil técnico 
> Senha Padrão: 123456

Endpoit de Login

> /api/v1/auth/login

Se o parâmetro "remember" for enviado como "true", o token JWT irá expirar em 1 semana, caso contrário 1 hora. Este tempo pode se definido no arquivo .env: JWT_TTL e JWT_TTL_REMEMBER_ME

{
	"email": "[email protected]",
	"password": "super",
	"remember": true
}

seguranca-digital's People

Contributors

jotapepinheiro avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.