CluPilotCloud/database/factories
nexxo 5d306fce31 Let a mailbox send without a password when it never needed one
An SMTP relay with a host and a from address but no username or password
- a trusted local or private-network relay - always used to be seeded as
a placeholder, because the takeover required a username to treat an
account as real, and Mailbox::isConfigured() always required a stored
password. Laravel's own SMTP mailer has supported unauthenticated relays
all along.

Add mailboxes.authenticates (default true, so every existing row keeps
its current behaviour) to tell "does not authenticate" apart from
"authenticates, but nobody has typed the password yet" - the same empty
password column used to mean both. The takeover migration now seeds the
real account off the host/address alone and marks it authenticates=false
only when neither a username nor a password resolved; isConfigured(),
MailboxTransport and MailboxTester all read it before requiring or
sending a password; the edit modal gets a checkbox for it with the
password field's hint updated to match, in both languages.
2026-07-28 05:54:21 +02:00
..
CustomerFactory.php fix: seat limit + suspend guard per Codex; harden factory email uniqueness 2026-07-25 14:53:15 +02:00
DatacenterFactory.php test: widen DatacenterFactory code space (fix faker unique() pool exhaustion) 2026-07-25 14:23:49 +02:00
HostFactory.php fix(admin): confirm maintenance delivery via MessageSent (retryable until sent); guard resend/cancel on derived state; fix flaky non-unique host wg_ip 2026-07-25 16:14:01 +02:00
InstanceFactory.php feat(engine-b): customer domain models + migrations 2026-07-25 11:38:01 +02:00
MailboxFactory.php Let a mailbox send without a password when it never needed one 2026-07-28 05:54:21 +02:00
MaintenanceWindowFactory.php feat(admin): maintenance windows — schedule once, assign many hosts, notify 2026-07-25 15:53:50 +02:00
OrderFactory.php fix(billing): a paid order opens a contract, and provisioning obeys it 2026-07-26 11:10:00 +02:00
ProvisioningRunFactory.php feat(engine): core provisioning data model + hosts 2026-07-25 09:49:43 +02:00
SeatFactory.php fix: seat limit + suspend guard per Codex; harden factory email uniqueness 2026-07-25 14:53:15 +02:00
SubscriptionFactory.php feat(billing): immutable subscription snapshots and pro-rata plan changes 2026-07-26 09:49:48 +02:00
UserFactory.php feat(admin): staff RBAC (spatie) + admin settings page 2026-07-25 15:47:42 +02:00
VpnPeerFactory.php feat(vpn): ownership, a Developer role, and password-gated config retrieval 2026-07-25 22:31:54 +02:00