CluPilotCloud/app
nexxo 58835a1051 Check users directly for the reverse operator-identity collision, not just customers
The three sites that refuse to create or rename an operator onto a
customer's email (Admin\Settings::saveAccount(), ::inviteStaff(), and
clupilot:create-operator) all checked Customer::where('email', ...) as
a proxy for "does this address already have a portal login". A users
row with no matching customers row — an email changed on one side
only, or legacy/orphaned data — passed straight through: this dev
database already had one.

Extracted the three copies into Customer::emailTaken(), which checks
both tables directly, so the three sites cannot drift from each other
again.
2026-07-28 15:36:29 +02:00
..
Actions Refuse a portal login for an address that already belongs to an operator 2026-07-28 14:42:16 +02:00
Console Check users directly for the reverse operator-identity collision, not just customers 2026-07-28 15:36:29 +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 Match the logout exemption through AdminArea, not a bare route check 2026-07-28 15:27:06 +02:00
Livewire Check users directly for the reverse operator-identity collision, not just customers 2026-07-28 15:36:29 +02:00
Mail Stop demanding a cipher, a real port, or a decrypted password a mailbox never uses 2026-07-28 06:21:28 +02:00
Models Check users directly for the reverse operator-identity collision, not just customers 2026-07-28 15:36:29 +02:00
Notifications Pin CloudReady's null-mailbox guard and share it with the trait 2026-07-27 23:59:05 +02:00
Policies Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
Providers Stop the console serving the portal's sign-in page 2026-07-28 11:45:34 +02:00
Provisioning Measure availability, and let a customer move down again 2026-07-27 16:41:15 +02:00
Services Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
Support Move operator two-factor enrolment off admin.settings onto its own page 2026-07-28 15:11:20 +02:00