CluPilotCloud/app/Services/Mail
nexxo 7edd88b71c Ein Zugang zur Konsole, dessen Passwort niemand kennt
Bisher erzeugte Settings::inviteStaff() beim Einladen eines
Betreiber-Mitarbeiters ein Passwort und zeigte es dem Inhaber einmal auf dem
Bildschirm, damit er es "sicher weitergibt" -- fuer einen Zugang zur Konsole,
die die ganze Flotte verwaltet. Der Kommentar dort nannte sich selbst eine
Attrappe.

Jetzt geht eine Einladung ohne Passwort hinaus: der Eingeladene bekommt eine
Mail mit einem Link und vergibt sein Passwort selbst, ueber
App\Livewire\Auth\OperatorSetPassword. Niemand -- auch der Inhaber nicht --
kennt je ein fremdes Passwort.

Dafuer brauchte es einen eigenen Weg, den es fuer Betreiber noch nicht gab
(R21: Konsole und Portal teilen keine Identitaet). Ein eigener Broker mit
eigener Tabelle (operator_password_reset_tokens, config/auth.php), eine
eigene Route in der Gast-Gruppe der Konsole (admin.invitation), und
Operator::sendPasswordResetNotification() wirft jetzt, statt Laravels
Vorgabe zu nutzen, die auf die Portalseite verlinkt haette.

Der Einladungslink gilt 72 Stunden -- lang genug fuer ein Wochenende, kurz
genug, dass ein altes Postfach nicht auf Dauer einen Schluessel zur Konsole
haelt. Zwei-Faktor bleibt unberuehrt: die neue Seite meldet niemanden
automatisch an, der Eingeladene durchlaeuft danach die normale Anmeldung
samt ihrer bestehenden Zwei-Faktor-Pruefung. Die Route liegt hinter denselben
Netz- und Hostwaechtern wie der Rest der Konsole (RestrictAdminHost,
RestrictConsoleNetwork), ohne Sonderfall.

OperatorInvitationMail reiht sich in den Versandtakt ein (MailLane::LOCKED,
wie ResetPasswordMail und VerifyEmailMail -- ein Mensch wartet gerade) und
ist damit in der Vorschau- und Versandtakt-Uebersicht der Konsole sichtbar,
statt lautlos in die gedrosselte Spur zu fallen.

Zwei Mutationsproben gegen die tragende Zusicherung durchgefuehrt (Bericht:
.superpowers/sdd/betreiber-einladung-report.md): die erste (durch die
Vorgaengersitzung) hielt fest, dass drei Zusicherungen fallen wuerden, waere
das Konto sofort anmeldbar; die zweite -- das Passwort testweise wieder auf
die Seite gebracht -- faellt exakt an der dafuer gebauten reflektierenden
Pruefung ueber alle oeffentlichen Eigenschaften der Seite.

Suite: 2771 passed (9683 assertions).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 01:50:42 +02:00
..
FakeMailbox.php Read the mailbox password where it actually is, and let the console test it 2026-07-30 13:12:29 +02:00
FetchedMail.php Read the support mailbox into the console 2026-07-29 21:41:29 +02:00
GuestMailConfig.php Passwort-Leck-Test verschaerft, mail_smtpauth an authenticates gekoppelt 2026-08-03 19:15:36 +02:00
ImapMailbox.php Read the mailbox password where it actually is, and let the console test it 2026-07-30 13:12:29 +02:00
InboundMailStatus.php Read the mailbox password where it actually is, and let the console test it 2026-07-30 13:12:29 +02:00
InboundMailbox.php Read the mailbox password where it actually is, and let the console test it 2026-07-30 13:12:29 +02:00
IngestInboundMail.php Read the mailbox password where it actually is, and let the console test it 2026-07-30 13:12:29 +02:00
MailCatalogue.php Ein Zugang zur Konsole, dessen Passwort niemand kennt 2026-08-04 01:50:42 +02:00
MailLane.php Ein Zugang zur Konsole, dessen Passwort niemand kennt 2026-08-04 01:50:42 +02:00
MailParser.php Read the support mailbox into the console 2026-07-29 21:41:29 +02:00
MailPreviews.php Ein Zugang zur Konsole, dessen Passwort niemand kennt 2026-08-04 01:50:42 +02:00
MailPurpose.php Say which kind of mail leaves from which mailbox 2026-07-27 22:00:16 +02:00
MailRoute.php Wegwahl je Mailart: welche Mail aus welchem Postfach geht 2026-08-03 12:43:31 +02:00
MailTemplateRenderer.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
MailTlsPolicy.php Make ssl, tls, and none mean what they say on the wire 2026-07-28 04:35:03 +02:00
MailboxResolver.php Bereitschaft: das Absender-Postfach wird gefragt, ob es senden KANN 2026-07-31 20:35:58 +02:00
MailboxTester.php Bound the mail test-send and real send to a timeout instead of hanging 2026-07-28 16:36:14 +02:00