Skip to content

Releases: eliasdossantos/php-mvc

v1.1.2

15 Jun 23:58

Choose a tag to compare

PHP MVC Boilerplate v1.1.2

Primeira release de segurança do PHP MVC Boilerplate.

Esta versão implementa proteções ativas contra os ataques mais comuns em aplicações web PHP, corrige vulnerabilidades identificadas na versão v1.1.1 e completa funcionalidades que estavam pendentes, sem introduzir quebras de compatibilidade.

Atualização fortemente recomendada para todos os projetos em produção.


🔒 Segurança — Correções Críticas

Rate Limiting (novo — proteção contra força bruta)

A ausência de limitação de tentativas era a vulnerabilidade mais grave da versão anterior. Um atacante podia realizar ataques de força bruta ou credential stuffing indefinidamente sem qualquer bloqueio.

  • Implementado RateLimitMiddleware com armazenamento em arquivo (sem dependência de Redis ou Memcached).
  • Três perfis pré-configurados:
    • login — 5 tentativas por 15 minutos, chave por IP + e-mail (bloqueia o par, não o IP isolado).
    • forgot — 3 tentativas por 60 minutos por IP.
    • api — 60 requisições por minuto por IP.
  • Respostas automáticas com header Retry-After e código HTTP 429.
  • Suporte a respostas JSON para clientes de API e redirecionamento com flash message para formulários HTML.
  • Limpeza automática de arquivos expirados (executada probabilisticamente em 1% das requisições, sem custo fixo).

Security Headers (novo)

  • Implementado SecurityHeadersMiddleware com Content-Security-Policy, Permissions-Policy e Strict-Transport-Security (HSTS ativado automaticamente em produção com HTTPS).
  • Header X-Powered-By removido em todas as respostas para não expor stack tecnológico.

Debug em produção (corrigido)

A página errors/debug.php expunha stack trace completo, versão do PHP, caminhos internos do servidor e variáveis $_SERVER quando APP_DEBUG=true.

  • config/app.php agora força APP_DEBUG=false quando APP_ENV=production, independentemente do valor no .env.
  • Adicionado guard PHP no topo de debug.php que encerra com HTTP 500 se APP_DEBUG não estiver ativo — segunda camada de defesa.
  • Removidos REMOTE_ADDR e HTTP_USER_AGENT da tabela $_SERVER exibida na página de debug.
  • .env.example atualizado com APP_DEBUG=false como padrão, com comentário de aviso explícito.

SESSION_SECURE forçado em produção (corrigido)

O .env.example vinha com SESSION_SECURE=false, o que permitia que o cookie de sessão fosse transmitido em HTTP puro em produção.

  • config/app.php agora ativa session.cookie_secure automaticamente quando APP_ENV=production, independentemente da variável do .env.
  • Adicionada variável SESSION_SAME_SITE ao .env.example para controle explícito.

exec() renomeado para execMigration() em Database (corrigido)

O método exec() aceitava SQL puro sem prepared statements e podia ser invocado em qualquer contexto da aplicação — uma porta para SQL Injection se usado indevidamente.

  • Renomeado para execMigration() com docblock de aviso explícito: DDL-only, nunca receba input de usuário.
  • database/migrate.php atualizado para chamar execMigration().
  • Aviso expandido em getPdo() sobre os riscos de acessar o objeto PDO diretamente.

✅ Funcionalidades Completadas

"Lembrar de mim" (implementação completa)

A funcionalidade existia como TODO na versão anterior — o token era gerado mas nunca persistido, tornando a opção completamente não funcional.

Implementação completa e segura:

  • Token de 64 chars gerado com random_bytes(32) (criptograficamente seguro).
  • Armazenado no banco como hash SHA-256 — o valor bruto nunca é persistido.
  • Cookie enviado com HttpOnly, Secure e SameSite=Lax.
  • Expiração de 30 dias.
  • Token rotacionado a cada re-login — prevenção de token theft.
  • Invalidado no logout (banco + cookie).
  • Auth::recoverFromCookie() chamado automaticamente no bootstrap para re-autenticação silenciosa.
  • Checkbox "Lembrar de mim" adicionado ao formulário de login.

Migration 002_add_rate_limit_table.sql adiciona as colunas remember_token e remember_token_expires_at na tabela users.


⚡ Melhorias Internas

  • bootstrap/app.php agora chama Auth::recoverFromCookie() automaticamente no início de cada requisição quando o cookie estiver presente.
  • Limpeza probabilística de cache de rate limit no bootstrap (sem cron externo).
  • Auth::buildSessionUser() usa reflection para ler $hidden do Model dinamicamente — garante que remember_token e remember_token_expires_at nunca cheguem à sessão mesmo em Models customizados.
  • AuthController::login() lê o checkbox remember do POST e repassa ao AuthService.
  • AuthService::login() recebe e propaga o flag $remember para Auth::loginUser().

📦 Arquivos Alterados

app/Core/Auth.php
app/Core/Database.php
app/Controllers/AuthController.php
app/Services/AuthService.php
app/Middlewares/RateLimitMiddleware.php        ← NOVO
app/Middlewares/SecurityHeadersMiddleware.php  ← NOVO
app/Views/auth/login.php
app/Views/layouts/auth.php
app/Views/errors/debug.php
routes/web.php
config/app.php
bootstrap/app.php
database/migrate.php
database/migrations/002_add_rate_limit_table.sql  ← NOVA
storage/cache/ratelimit/                          ← NOVO diretório
.env.example
.gitignore

🔄 Guia de Atualização

# 1. Substituir os arquivos listados acima
# 2. Executar a nova migration
php database/migrate.php

# 3. Revisar o .env
#    Confirmar: APP_DEBUG=false
#    Em produção com HTTPS: SESSION_SECURE=true

Nenhuma alteração é necessária em Controllers, Models ou Views existentes além dos listados.


🔄 Compatibilidade

  • Compatível com projetos v1.1.X.
  • Nenhuma quebra de compatibilidade na API pública do framework.
  • A única alteração que exige ação é a execução da migration 002 para adicionar as colunas de remember token.

📄 Licença

Distribuído sob os termos da GNU General Public License v3.0 (GPL-3.0).


🔗 Repositório

https://github.com/eliasdossantos/php-mvc

v1.1.1

07 Jun 01:51

Choose a tag to compare

PHP MVC Boilerplate v1.1.1

Adição do sistema de execução de seeders através da CLI, permitindo popular o banco de dados de forma rápida e organizada durante o desenvolvimento e implantação de aplicações.

Esta versão introduz os comandos seed:run, possibilitando executar todos os seeders registrados ou executar um seeder específico diretamente pela linha de comando.

Atualização recomendada para todos os usuários que utilizam o sistema de Seeders do framework.


✨ Novidades

CLI

Sistema de Seeders

  • Adicionado comando seed:run para execução de todos os seeders registrados.
  • Adicionado suporte para execução individual de seeders específicos.
  • Facilita a criação de dados iniciais para desenvolvimento, testes e implantação.
  • Fluxo semelhante aos frameworks modernos do mercado.

🚀 Comandos Disponíveis

Executar todos os seeders

php mvc seed:run

Executa automaticamente todos os seeders disponíveis e registrados no projeto.

Executar um seeder específico

php mvc seed:run UserSeeder

Executa apenas o seeder informado, permitindo popular tabelas específicas sem executar os demais.


📚 Documentação

  • Adicionada documentação do comando seed:run.
  • Incluídos exemplos de execução global e individual.
  • Melhor orientação para ambientes de desenvolvimento e homologação.
  • Padronização da documentação da CLI.

⚡ Melhorias Internas

  • Automatização do processo de população de dados.
  • Melhor organização do fluxo de desenvolvimento.
  • Redução de tarefas manuais durante a configuração de novos projetos.
  • Maior produtividade para equipes de desenvolvimento.

📦 Arquivos Alterados

cli/Kernel.php
cli/Commands/SeedRunCommand.php
database/migrate.php

🔄 Compatibilidade

  • Totalmente compatível com a versão v1.1.x.
  • Nenhuma quebra de compatibilidade.
  • Nenhuma alteração necessária em projetos existentes.
  • Recurso adicional integrado ao sistema de CLI.

📄 Licença

Distribuído sob os termos da GNU General Public License v3.0 (GPL-3.0).


🔗 Repositório

https://github.com/eliasdossantos/php-mvc

v1.1.0

06 Jun 22:56

Choose a tag to compare

PHP MVC Boilerplate v1.1.0

Redesign completo da interface visual do sistema, modernizando toda a camada de apresentação com um visual inspirado em aplicações SaaS profissionais.

Esta versão substitui todas as views, layouts e componentes existentes por uma interface moderna, responsiva e visualmente consistente — sem alterar nenhuma rota, controller, model ou regra de negócio do framework.

Atualização recomendada para todos os usuários que desejam uma interface profissional.


✨ Melhorias

Interface Visual

Landing Page (/)

  • Nova landing page pública com navbar fixa, hero animado e seção de features.
  • Seção de estatísticas (uptime, performance, segurança) no bloco hero.
  • Grid de 6 cards destacando os recursos do framework.
  • Seção CTA com chamada para cadastro.
  • Rodapé com copyright dinâmico.
  • Navbar com efeito de blur ao rolar a página.

Layout de Autenticação

  • Novo layout split-panel: formulário à esquerda, hero decorativo à direita.
  • Painel hero com badge, título em gradiente e cards de features.
  • Marca com ícone e nome do sistema no topo do formulário.
  • Painel hero oculto automaticamente em telas menores que 900px.

Tela de Login

  • Campos com ícones internos e design moderno.
  • Botão de mostrar/ocultar senha com toggle interativo.
  • Link "Esqueci minha senha" posicionado de forma intuitiva.

Tela de Cadastro

  • Password strength meter em tempo real com 5 níveis de segurança.
  • Validação visual de confirmação de senha com feedback instantâneo.
  • Toggle de mostrar/ocultar nos campos de senha.

Recuperação de Senha

  • Tela de solicitação com caixa informativa sobre expiração do link.
  • Tela de redefinição com strength meter e confirmação de senha.
  • Links de retorno ao login em ambas as telas.

Dashboard

  • Banner de boas-vindas com nome do usuário e emoji animado.
  • Grid de 4 stat cards (registros, tarefas, andamento, notificações).
  • Card de primeiros passos com guia rápido da estrutura MVC.

📚 Documentação

  • Documentados todos os arquivos alterados e seus destinos no projeto.
  • Adicionada seção de personalização de cores e itens de menu e etc...
  • Explicados os breakpoints de responsividade e comportamento mobile.

Edite as variáveis CSS no topo do app.css:

:root {
  --indigo-500: #6366f1; /* Cor primária */
  --indigo-600: #4f46e5; /* Hover da cor primária */
  --slate-900: #0f172a; /* Fundo da sidebar e home */
}

O APP_NAME é exibido automaticamente através de e(APP_NAME) — configurado no seu .env.

Adicionar Itens ao Menu

Edite app/Views/components/sidebar.php e descomente o bloco de exemplo:

<li class="sidebar-item <?= isActive('dashboard/posts') ?>">
    <a href="<?= url('dashboard/posts') ?>" class="sidebar-link">
        <span class="sidebar-icon"><!-- SVG do ícone --></span>
        Posts
    </a>
</li>

⚡ Melhorias Internas

  • Sidebar toggle mobile com overlay e bloqueio de scroll do body.
  • Password strength meter em tempo real com 5 níveis de segurança.
  • Validação de confirmação de senha com feedback visual instantâneo.
  • Auto-dismiss de alertas flash com animação de fade-out em 5 segundos.
  • Loading state em botões de submit para evitar duplo clique.
  • Scroll reveal com IntersectionObserver para a landing page.
  • Highlight automático do item ativo na sidebar via JavaScript.
  • Componente alerts.php simplificado para máxima compatibilidade.
  • Componentes sidebar.php e topbar.php protegidos com function_exists().
  • Todos os caracteres especiais substituídos por entidades HTML.

📦 Arquivos Alterados

app/Controllers/HomeController.php
app/Views/layouts/auth.php
app/Views/layouts/home.php
app/Views/layouts/main.php
app/Views/home/index.php
app/Views/auth/login.php
app/Views/auth/register.php
app/Views/auth/forgot.php
app/Views/auth/reset.php
app/Views/dashboard/index.php
app/Views/components/alerts.php
app/Views/components/sidebar.php
app/Views/components/topbar.php
app/Views/components/footer.php
public/assets/css/app.css
public/assets/js/app.js

🔄 Compatibilidade

  • Totalmente compatível com a versão v1.0.x.
  • Nenhuma quebra de compatibilidade em rotas, controllers ou models.
  • Nenhuma alteração necessária em projetos existentes além da substituição dos arquivos de view e assets.

📄 Licença

Distribuído sob os termos da GNU General Public License v3.0 (GPL-3.0).


🔗 Repositório

https://github.com/eliasdossantos/php-mvc

v1.0.5

06 Jun 19:17

Choose a tag to compare

PHP MVC Boilerplate v1.0.5

Atualização de documentação da CLI focada em melhorar a experiência de uso dos comandos disponíveis no framework.

Esta versão adiciona uma descrição mais clara para o comando de geração de migrations na listagem de ajuda da CLI, facilitando a descoberta e utilização do recurso por novos usuários.

Atualização recomendada para todos os usuários do CLI do framework.


✨ Melhorias

CLI

Sistema de Ajuda

  • Adicionada descrição detalhada para o comando make:migration.
  • Melhorada a documentação exibida pelo comando help.
  • Melhor identificação da convenção utilizada na geração automática de migrations.
  • Interface de ajuda mais consistente com os demais comandos da CLI.

📚 Documentação

  • Atualizada a listagem de comandos disponíveis.
  • Adicionada explicação sobre o comportamento padrão do comando make:migration.
  • Maior clareza para desenvolvedores iniciando novos projetos.

⚡ Melhorias Internas

  • Melhor experiência de uso da ferramenta de linha de comando.
  • Redução de dúvidas sobre a nomenclatura utilizada na geração de migrations.
  • Maior consistência entre os comandos documentados pela CLI.

📦 Arquivos Alterados

cli/Kernel.php

🔄 Compatibilidade

  • Totalmente compatível com a versão v1.0.4.
  • Nenhuma quebra de compatibilidade.
  • Nenhuma alteração necessária em projetos existentes.
  • Alteração apenas na documentação exibida pela CLI.

📄 Licença

Distribuído sob os termos da GNU General Public License v3.0 (GPL-3.0).


🔗 Repositório

https://github.com/eliasdossantos/php-mvc

v1.0.4

06 Jun 17:12

Choose a tag to compare

PHP MVC Boilerplate v1.0.4

Atualização de manutenção focada na geração de migrations via CLI.

Esta versão realiza um pequeno ajuste no template utilizado pelo comando de criação de migrations, garantindo compatibilidade com as melhorias implementadas na versão v1.0.3.

Atualização recomendada para todos os usuários que utilizam o comando de geração de migrations.


🐛 Correções de Bugs

CLI

Migration Generator

  • Corrigido o arquivo de template utilizado na geração de novas migrations.
  • Ajustado o stub de migrations para refletir corretamente as mudanças introduzidas na versão v1.0.3.
  • Evitados problemas durante a criação de novas migrations em projetos recém-instalados.

Stubs

  • Atualizado o arquivo padrão de migrations.
  • Melhor alinhamento entre o código gerado automaticamente e o comportamento atual do Migration Runner.

⚡ Melhorias Internas

  • Maior consistência entre os comandos da CLI e a infraestrutura de migrations.
  • Redução de possíveis erros causados por templates desatualizados.
  • Melhor experiência para novos projetos criados a partir do boilerplate.

📦 Arquivos Alterados

cli/Stubs/migration.stub

🔄 Compatibilidade

  • Compatível com a versão v1.0.3.
  • Nenhuma quebra de compatibilidade.
  • Nenhuma alteração necessária em migrations já existentes.
  • Afeta apenas migrations geradas após a atualização.

📄 Licença

Distribuído sob os termos da GNU General Public License v3.0 (GPL-3.0).


🔗 Repositório

https://github.com/eliasdossantos/php-mvc

v1.0.3

06 Jun 16:58

Choose a tag to compare

PHP MVC Boilerplate v1.0.3

Atualização de manutenção focada no sistema de migrations do PHP MVC Boilerplate.

Esta versão corrige problemas na execução de arquivos SQL complexos durante o processo de migração do banco de dados, aumentando a compatibilidade com MariaDB e MySQL e garantindo maior confiabilidade na criação das estruturas do projeto.

Atualização recomendada para todos os projetos que utilizam o sistema de migrations.


🐛 Correções de Bugs

Migration Runner

  • Corrigido o mecanismo de execução de migrations SQL.
  • Removido o processamento manual de comandos SQL através de divisão por ponto e vírgula (;).
  • Arquivos de migration agora são executados integralmente pelo PDO.
  • Corrigidos erros de sintaxe causados por interpretações incorretas de comandos SQL válidos.

Compatibilidade com SQL Complexo

  • Corrigida a execução de tabelas contendo:

    • ENUM
    • FOREIGN KEY
    • INDEX
    • UNIQUE
    • TIMESTAMP ... ON UPDATE CURRENT_TIMESTAMP
    • comandos SQL compostos
  • Eliminados erros falsos de sintaxe durante a execução de migrations em ambientes MariaDB.

Banco de Dados

  • Melhor compatibilidade entre diferentes versões do MySQL e MariaDB.
  • Maior confiabilidade na criação de estruturas relacionais.
  • Melhor suporte a migrations contendo múltiplas instruções SQL.

⚡ Melhorias Internas

  • Simplificação da lógica do Migration Runner.
  • Redução de código responsável por parsing manual de SQL.
  • Utilização do parser nativo do banco de dados para interpretação das migrations.
  • Maior estabilidade durante instalações via Composer e execução inicial do framework.

🔒 Confiabilidade

  • Redução de falhas durante a criação automática do banco.
  • Menor risco de execução parcial de migrations.
  • Execução transacional das migrations para maior consistência dos dados.

📦 Arquivos Alterados

database/migrate.php

🔄 Compatibilidade

  • Compatível com a versão v1.0.2.
  • Nenhuma quebra de compatibilidade.
  • Nenhuma alteração necessária nas migrations existentes.
  • Migrations já criadas continuam funcionando normalmente.

📄 Licença

Distribuído sob os termos da GNU General Public License v3.0 (GPL-3.0).


🔗 Repositório

https://github.com/eliasdossantos/php-mvc

v1.0.2

06 Jun 03:05
68dbb15

Choose a tag to compare

PHP MVC Boilerplate v1.0.2

Primeira atualização de manutenção do PHP MVC Boilerplate.

Esta versão corrige bugs identificados na versão v1.0.0, melhora a estabilidade do framework e reforça aspectos de segurança e consistência interna, sem introduzir quebras de compatibilidade.

Atualização recomendada para todos os projetos que utilizam a versão v1.0.0.


🐛 Correções de Bugs

Router

  • Corrigida a injeção de parâmetros de rota em controllers utilizando ReflectionMethod.
  • Parâmetros opcionais não informados na URI agora recebem null corretamente.
  • Adicionado registro estático (Router::setInstance) para permitir o funcionamento do helper global route() em qualquer parte da aplicação, incluindo Views.

Model / Query Builder

  • Corrigido um bug crítico no método paginate() quando utilizado em conjunto com cláusulas where().
  • Corrigida a perda de filtros durante o cálculo da paginação.
  • Adicionada validação de identificadores SQL (colunas e operadores), reduzindo riscos de SQL Injection por identificadores dinâmicos.

Auth

  • Dados armazenados na sessão do usuário agora respeitam automaticamente os campos definidos em $hidden.
  • Informações sensíveis, como senhas, deixam de ser armazenadas indevidamente na sessão.
  • Removido armazenamento desnecessário do token "remember me" na sessão.
  • Documentada futura implementação do recurso utilizando cookies persistentes e banco de dados.

Session

  • Implementado mecanismo de expiração automática para oldInput.
  • Dados de formulários são descartados após serem consumidos na próxima requisição.
  • Evita vazamento de dados entre páginas e requisições subsequentes.

Validator

  • Corrigido comportamento da regra confirmed.
  • Corrigida validação do parâmetro ignore na regra unique.
  • Valores como 0 agora são tratados corretamente.

Middlewares

  • Corrigidos redirecionamentos incorretos em:

    • GuestMiddleware
    • RoleMiddleware
  • Os middlewares agora redirecionam corretamente para a rota dashboard, eliminando erros 404 causados por rotas inexistentes.

Controllers

AuthController

  • O método resetSave() agora delega a atualização da senha para User::updatePassword().
  • Removida lógica duplicada de hash de senha.
  • Eliminado acesso direto ao PDO dentro do controller.
  • Melhor separação de responsabilidades entre Controller e Model.

🔒 Melhorias de Segurança

  • Proteção adicional contra SQL Injection em identificadores dinâmicos.
  • Remoção de dados sensíveis da sessão do usuário.
  • Melhor gerenciamento do ciclo de vida de dados temporários (oldInput).
  • Maior consistência na validação de entradas.

⚡ Melhorias Internas

  • Redução de acoplamento entre camadas.
  • Melhor aderência ao padrão MVC.
  • Melhor separação de responsabilidades.
  • Correções de comportamento interno sem impacto na API pública do framework.

📦 Arquivos Alterados

app/Core/Router.php
app/Core/Model.php
app/Core/Auth.php
app/Core/Session.php
app/Core/Validator.php
app/Core/Application.php
app/Controllers/AuthController.php
app/Middlewares/GuestMiddleware.php
app/Middlewares/RoleMiddleware.php
app/Helpers/functions.php
bootstrap/app.php

🔄 Compatibilidade

  • Compatível com a versão v1.0.0.
  • Nenhuma quebra de compatibilidade.
  • Nenhuma alteração necessária em projetos já existentes.

📄 Licença

Distribuído sob os termos da GNU General Public License v3.0 (GPL-3.0).


🔗 Repositório

https://github.com/eliasdossantos/php-mvc

v1.0.0

31 May 05:03

Choose a tag to compare

PHP MVC Boilerplate v1.0.0

Primeira versão estável do PHP MVC Boilerplate.

O PHP MVC Boilerplate é uma base reutilizável para desenvolvimento de aplicações web em PHP puro, construída com arquitetura MVC moderna, foco em organização, segurança e escalabilidade.

✨ Recursos incluídos

Core MVC

  • Application
  • Router
  • Controller
  • Model
  • View
  • Request

Banco de Dados

  • PDO
  • Query Builder
  • Prepared Statements
  • Transações
  • Migrations
  • Seeders

Autenticação

  • Login
  • Logout
  • Registro de usuários
  • Recuperação de senha
  • Controle de acesso

Validação

  • Validator
  • FormRequest
  • Mensagens personalizadas

Middlewares

  • AuthMiddleware
  • GuestMiddleware
  • CsrfMiddleware
  • RoleMiddleware

Upload de Arquivos

  • Upload seguro
  • Validação por MIME
  • Renomeação automática

CLI

  • make:controller
  • make:model
  • make:request
  • make:service
  • make:repository
  • make:seed
  • make:view
  • migrate
  • serve

Extras

  • Integração com PHPMailer
  • Sistema de Logs
  • Flash Messages
  • Layouts base
  • Tratamento de erros
  • Documentação HTML

🔒 Segurança

  • Proteção CSRF
  • Prevenção contra SQL Injection
  • Escape contra XSS
  • Sessões seguras
  • Security Headers

📄 Licença

Distribuído sob os termos da GNU General Public License v3.0 (GPL-3.0).

🔗 Repositório

https://github.com/eliasdossantos/php-mvc