CluPilotCloud/app
nexxo 4e3beca759 Close the domain page to packages that may not have one
The rule was decided in CustomDomainAccess but nothing asked it on the way
in: /domain answered every customer on every package, so the entry package
could set a domain it is not sold and cannot keep.

The guard sits in mount(), not on the route. A Livewire component answers
POSTs to /livewire/update by itself, so a route-only check would have left
save() and the rest reachable to exactly the customers it was meant to stop.

The sidebar asks the same question through a gate rather than a second copy
of the rule — a customer holds no permissions at all (R21 puts all seventeen
on the operator guard), so can() had nothing to filter on and the tab was
shown to everyone, leading straight into the 403 the page now raises.

Customer::forUser() carries the resolution the Livewire concern used to own,
because the gate has to answer outside any component and a second copy of
its email fallback is how the two would drift apart.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 16:20:21 +02:00
..
Actions Decide who may have their own domain, and decide it in one place 2026-07-29 15:59:04 +02:00
Console Put customer instances on their own domain, and say which domains are ours 2026-07-29 16:03:13 +02:00
Exceptions Refuse a portal login for an address that already belongs to an operator 2026-07-28 14:42:16 +02:00
Http Merge branch 'feat/plan-reopen' 2026-07-29 16:20:07 +02:00
Jobs Let the export have as many destinations as somebody wants 2026-07-29 02:43:15 +02:00
Listeners Recognise the devices an account signs in from, and warn about a new one 2026-07-28 23:28:34 +02:00
Livewire Close the domain page to packages that may not have one 2026-07-29 16:20:21 +02:00
Mail Send the invoice with the invoice attached 2026-07-29 02:13:41 +02:00
Models Close the domain page to packages that may not have one 2026-07-29 16:20:21 +02:00
Notifications Add the SSH identity to the vault, and give deployment config a console page 2026-07-29 00:52:44 +02:00
Policies Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
Providers Close the domain page to packages that may not have one 2026-07-29 16:20:21 +02:00
Provisioning Let an incident be deleted, and start measuring whether the hosts answer 2026-07-29 15:16:48 +02:00
Services Merge branch 'feat/plan-reopen' 2026-07-29 16:20:07 +02:00
Support Close the domain page to packages that may not have one 2026-07-29 16:20:21 +02:00