CluPilotCloud/tests/Feature/Admin
Claude a58faf3f85
tests / pest (push) Successful in 8m56s Details
tests / assets (push) Successful in 20s Details
tests / release (push) Successful in 4s Details
Manage the Stripe key from the console, behind a password and a test
Changing a key meant a shell, a file edit and a cache rebuild — and the person
who owns the Stripe account is not necessarily the person who owns the server.

Two gates, not one. The capability decides who may open the page; every operator
has console.view, and that must not mean "can read the payment key". The
password decides whether this SESSION may see or change anything, because the
realistic threat is not a stranger but an unlocked machine, and a session is
exactly what that hands over. Both are re-checked server-side on every action —
a Livewire action is reachable by anyone who can post to /livewire/update.

The value is stored encrypted under a key of its own, SECRETS_KEY, and the vault
refuses to work without it rather than falling back to APP_KEY: rotating APP_KEY
is ordinary maintenance and would otherwise destroy every stored credential,
discovered when Stripe stops answering. It is read where it is used, not
overlaid onto config at boot — an overlay adds a query to every request
including the public site, and leaves queue workers holding whatever was true
when they started. It is never shown again, only outlined, and never enters a
Livewire property that would carry it to the browser and back in the snapshot.

A registry, not an env editor: a form that can set any environment variable is a
privilege-escalation primitive, and one bad value bricks the installation with
no way back through that same form.

The test button is the part that matters. It reports which Stripe account the
key belongs to, whether it is LIVE or test — the most expensive mistake here is
pasting one where the other belongs, and both look identical in a form — and
which webhook endpoints exist with the events each subscribes to. A key can be
perfectly valid while the endpoint listens for the wrong five events, and
nothing fails until a payment goes unrecorded.

The webhook signing secret deliberately stays in .env. It is read on every
incoming payment event; in the database, a database problem becomes silently
failing signature checks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 09:01:16 +02:00
..
AdminConsoleTest.php feat(admin): dark Tactical-Terminal operator console 2026-07-25 08:35:03 +02:00
AdminHostRestrictionTest.php fix(security): match ADMIN_HOSTS case-insensitively; share test helpers 2026-07-25 20:56:26 +02:00
AdminSettingsTest.php fix(admin): shown-once temp password for invited staff; suppress announcements for cancelled windows at send time 2026-07-25 16:23:21 +02:00
ConsoleHostSeparationTest.php Let the console keep its recovery hostnames without breaking route caching 2026-07-27 06:20:44 +02:00
ConsoleNetworkTest.php Let people change their own password, and a location be switched off while editing it 2026-07-27 07:49:07 +02:00
ConsoleReportsRealDataTest.php Report the estate from the database, and print the traffic that is sold 2026-07-27 04:48:51 +02:00
CustomerRevenueTest.php feat(billing): the plan catalogue becomes three tables, and config stops selling 2026-07-26 12:05:56 +02:00
DatacenterTest.php Let people change their own password, and a location be switched off while editing it 2026-07-27 07:49:07 +02:00
HostManagementTest.php fix(security): match ADMIN_HOSTS case-insensitively; share test helpers 2026-07-25 20:56:26 +02:00
InstanceAdminAccessTest.php fix(admin): the admin password is shown once, and means it 2026-07-26 05:34:57 +02:00
MaintenanceTest.php fix(maintenance): make the window form usable 2026-07-25 23:05:33 +02:00
PlanAdminTest.php Make the console's access list reach the proxy, price in euros, and answer errors 2026-07-27 06:51:05 +02:00
ProvisioningActionsTest.php fix(ui): modal above sidebar (z-index); datacenter edit buttons stay right; toast slides from bottom; provisioning retry action 2026-07-25 15:29:37 +02:00
RbacTest.php fix(security): console and account checks now survive a Livewire action 2026-07-26 20:04:34 +02:00
SecretVaultTest.php Manage the Stripe key from the console, behind a password and a test 2026-07-27 09:01:16 +02:00
SecretsPageTest.php Manage the Stripe key from the console, behind a password and a test 2026-07-27 09:01:16 +02:00
UpdateButtonTest.php Let people change their own password, and a location be switched off while editing it 2026-07-27 07:49:07 +02:00
VpnTest.php fix(vpn): a late revocation must not disconnect whoever holds the key now 2026-07-26 01:24:55 +02:00