Bases | Versão | Acesso |
---|---|---|
Desenvolvimento | 1.0 | link |
Homologação | 1.0 | link |
Produção | 1.0 | link |
- Controle de permissão de usuários ACL.
- Autenticação com JWT.
- QueryBuilder Eloquent ORM.
- Swagger API REST.
- Processo seletivo para a empresa SQUADRA Tecnologia.
- Criar um cadastro de "sistemas" e controle de justificativa de alterações.
- Executar consultas avançadas em uma query.
- Documentar o projeto com o Swagger.
- PHP >= 7.2 com requisitos de extensão, conforme descrito na documentação do Lumen.
- Composer em uma Versão estável.
- Qualquer banco de dados de sua escolha, eu usei o MySQL.
# 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
Importar Endpoits da API para o Insomia
# 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
# 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
# Lista todas as rotas definidas no projeto
> php artisan route:list
# 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
> /api/v1/sistemas/20
> /api/v1/sistemas/historico/18
# 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: super@super.com
> Senha: super
2. Perfil - Administrador
> Login: admin@admin.com
> Senha: admin
3. Perfil - Técnico
> Login: tecnico@tecnico.com
> Senha: tecnico
4. 50 usuários ficticios com o perfil técnico
> Senha Padrão: 123456
> /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": "super@super.com",
"password": "super",
"remember": true
}