EM ANDAMENTO
Resumo técnico
Plugin adicional do NEXUS que protege o login contra bots com Cloudflare Turnstile, sem desafios intrusivos para o usuário. Hooks do PluginManager injetam o widget e validam o token no servidor pela API siteverify; ambientes de laboratório recebem bypass automático para não bloquear desenvolvimento e testes.
Escopo executado
- Integração com o formulário de login por dois filtros do
PluginManager: - Render explícito do widget com tema claro; o botão de submit fica desabilitado até o token ser obtido (impede requisições sem desafio).
- Verificação server-side
turnstile_verify_token():curlPOST parahttps://challenges.cloudflare.com/turnstile/v0/siteverifycomsecret,responseeremoteip(timeout 10s), com tratamento deerror-codese de respostas HTTP não-200. - Bypass automático em hosts de laboratório via
nx_is_lab_host()— o Turnstile não bloqueia ambientes de desenvolvimento. - Configuração persistida em
admin_configs(chaveplugin.cloudflare-turnstile):site_key,secret_key,enabledeprotected_pages(padrão['login']), com merge parcial ao salvar e validação de chaves obrigatórias ao habilitar. - Modal de configuração no painel (Alpine.js): badge Configurado/Não configurado, preview da site key, campos site/secret key e link oficial "Como obter as chaves".
- 4 actions de API registradas:
turnstile_save_config,turnstile_get_config(expõesecret_key_maskedno formatoprimeiros8...últimos4),turnstile_verifyeturnstile_sitekey. - Arquitetura enxuta:
plugin.php(hooks + actions),backend.php(110 linhas),modals.php(UI do modal) eassets/turnstile.js(render do widget no cliente) — sem tabelas dedicadas.
- before_login (prioridade 5): exige o token cf-turnstile-response e invalida o login se a verificação falhar. - login_form_after_fields: injeta container estilizado (#turnstile-container), widget #turnstile-widget com data-sitekey, input hidden cf-turnstile-response e os scripts do Turnstile (api.js com render=explicit e callback global onloadTurnstileCallback).
Stack e ferramentas
- PHP 8 (sem framework)
- MySQL 8 (configuração em
admin_configs; sem tabelas dedicadas) - Alpine.js + Tailwind CSS
- cURL (verificação
siteverifyda Cloudflare) - Cloudflare Turnstile (widget client-side + API de verificação server-side)
- Sistema de plugins do NEXUS (
PluginManager— filtros e modais)
Tags operacionais
- Cloudflare
- Turnstile
- CAPTCHA
- Segurança
Resultado operacional
- Blindou o login do NEXUS contra bots e ataques de força bruta automatizados sem degradar a experiência do usuário (desafio invisível/managed do Turnstile).
- Integração 100% via hooks do plugin — o core do NEXUS não precisou ser alterado e a proteção pode ser ligada/desligada no painel.
- Bypass automático em hosts de laboratório garante que desenvolvimento e testes não sejam bloqueados pelo CAPTCHA.
Andamento no GitHub (issues)
Painel em tempo real com as issues mais recentes do repositório.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
Resultados reais
Plugin do NEXUS que adiciona proteção anti-bot ao login com Cloudflare Turnstile — desafio não intrusivo, verificação server-side via siteverify e bypass automático em hosts de laboratório.
Arquitetura e organização
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- cURL
- Cloudflare Turnstile
- Plugin NEXUS
Execução e operação
O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.
Screenshots
Falar sobre este projeto
Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.