CluPilotCloud/app/Http/Middleware
nexxo 0066b1c6a0
tests / pest (push) Successful in 7m28s Details
tests / assets (push) Successful in 19s Details
tests / release (push) Successful in 4s Details
feat(security): a way back into the console that does not need the console
The allowlist is managed in the console, which is fine until the address you
manage it from changes — and then the page that would fix the problem is the
page the problem blocks. Every gate needs a door that does not depend on
itself, and on a server that door is a shell:

  php artisan clupilot:console-access show
  php artisan clupilot:console-access allow 203.0.113.7
  php artisan clupilot:console-access open

The address check moved to RestrictConsoleNetwork::isNetwork() so the command
and the console apply the same rule. Codex caught the version that did not: a
typo like 203.0.113.9/99 was stored, reported as success, and matched nothing —
leaving whoever was recovering still locked out, now believing they were not.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 03:09:13 +02:00
..
EnsureAdmin.php fix(admin): remove is_admin self-heal — RBAC is the only console boundary (no revocation bypass) 2026-07-25 18:35:14 +02:00
EnsureCustomerActive.php feat(admin): staff RBAC (spatie) + admin settings page 2026-07-25 15:47:42 +02:00
PublicSiteGate.php docs: hiding the site also hides the login page, and that has a consequence 2026-07-26 19:27:51 +02:00
RestrictAdminHost.php fix(security): match ADMIN_HOSTS case-insensitively; share test helpers 2026-07-25 20:56:26 +02:00
RestrictConsoleNetwork.php feat(security): a way back into the console that does not need the console 2026-07-27 03:09:13 +02:00