CluPilotCloud/app/Livewire
nexxo 074b0c041b fix(portal): enforce customer lifecycle per Codex review
- EnsureCustomerActive middleware: suspended/closed customers lose portal
  access (admins + active impersonation exempt)
- cancellation: reject non-active instances; service-end anchored on the
  subscription start date, not calendar month-end

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 14:45:03 +02:00
..
Admin feat(admin): host reserve edit + maintenance drain; customer suspend/reactivate 2026-07-25 14:30:21 +02:00
Auth feat(portal): Fortify auth + Login/2FA/Dashboard + component kit 2026-07-25 01:20:25 +02:00
Concerns feat(engine-b): live provisioning progress (admin console + customer dashboard) 2026-07-25 11:57:35 +02:00
Backups.php feat(portal): service framing + gradient line charts + billing button fix 2026-07-25 14:18:08 +02:00
Billing.php feat(portal): service framing + gradient line charts + billing button fix 2026-07-25 14:18:08 +02:00
Cloud.php feat(portal): service framing + gradient line charts + billing button fix 2026-07-25 14:18:08 +02:00
ConfirmCancelPackage.php fix(portal): enforce customer lifecycle per Codex review 2026-07-25 14:45:03 +02:00
ConfirmCloseAccount.php feat(portal): settings page — company profile, branding (logo+colors), cancel package, close account 2026-07-25 14:36:52 +02:00
CustomerProvisioning.php fix(engine-b): stop customer dashboard polling once provisioning failed 2026-07-25 13:06:31 +02:00
Dashboard.php feat(dashboard): rich overview with Chart.js (customer-portal template) 2026-07-25 07:59:19 +02:00
Invoices.php feat(portal): service framing + gradient line charts + billing button fix 2026-07-25 14:18:08 +02:00
Settings.php feat(portal): settings page — company profile, branding (logo+colors), cancel package, close account 2026-07-25 14:36:52 +02:00
Support.php feat(portal): full sidebar — Cloud, Users, Backups, Invoices, Support 2026-07-25 08:08:33 +02:00
Users.php feat(portal): seats management — invite/role/revoke against plan limit 2026-07-25 14:40:18 +02:00