Stressfrei-Mailbox: Postfach-Passwort beim Anlegen verbindlich setzen
Beim Anlegen einer Adresse mit echter Mailbox (IMAP/SMTP) wird das frisch generierte Passwort jetzt immer explizit am Provider gesetzt (updateMailboxPassword direkt nach dem Provisioning). Behebt den Fall, dass die Adresse beim Provider bereits als reine Weiterleitung existierte: dann kehrte provisionEmailWithMailbox frueh mit success zurueck, ohne je ein Postfach-Passwort zu setzen. Im CRM lag dann ein verschluesseltes Passwort, das der Provider nicht kannte -> IMAP/SMTP-Login schlug fehl. Jetzt stimmen CRM und Provider ueberein. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -189,7 +189,8 @@ export async function createEmail(data: CreateEmailData) {
|
||||
const localPart = data.email.split('@')[0];
|
||||
|
||||
if (createMailbox) {
|
||||
// Mit echter Mailbox anlegen
|
||||
// Mit echter Mailbox anlegen. Immer ein frisches, sicheres Passwort
|
||||
// erzeugen.
|
||||
const password = generateSecurePassword();
|
||||
const result = await provisionEmailWithMailbox(localPart, customer.email, password);
|
||||
|
||||
@@ -197,6 +198,22 @@ export async function createEmail(data: CreateEmailData) {
|
||||
throw new Error(result.error || 'Fehler beim Anlegen der Mailbox');
|
||||
}
|
||||
|
||||
// Passwort verbindlich am Postfach setzen. Beim Neu-Anlegen hat
|
||||
// createEmailWithMailbox es zwar schon gesetzt (der folgende Call ist
|
||||
// dann idempotent), ABER wenn die Adresse beim Provider bereits als
|
||||
// reine Weiterleitung existierte, kehrt provisionEmailWithMailbox früh
|
||||
// mit success zurück, ohne je ein Postfach-Passwort zu setzen. Ohne
|
||||
// diesen expliziten Schritt läge im CRM ein verschlüsseltes Passwort,
|
||||
// das der Provider gar nicht kennt → IMAP/SMTP-Login schlägt fehl.
|
||||
// Deshalb: nach jedem Mailbox-Anlegen das generierte Passwort
|
||||
// garantiert am Provider setzen, damit CRM und Provider übereinstimmen.
|
||||
const pwResult = await updateMailboxPassword(localPart, password);
|
||||
if (!pwResult.success) {
|
||||
throw new Error(
|
||||
pwResult.error || 'Mailbox angelegt, aber Postfach-Passwort konnte nicht gesetzt werden',
|
||||
);
|
||||
}
|
||||
|
||||
// Passwort verschlüsseln und speichern
|
||||
const passwordEncrypted = encrypt(password);
|
||||
|
||||
|
||||
@@ -97,6 +97,18 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **📧 Stressfrei-Mailbox: Passwort beim Anlegen verbindlich setzen** (2026-07-30)
|
||||
- Beim Anlegen einer Adresse mit „Echte Mailbox erstellen (IMAP/SMTP)"
|
||||
wird jetzt immer ein frisch generiertes Passwort **explizit am Provider
|
||||
gesetzt** (`updateMailboxPassword` direkt nach dem Provisioning).
|
||||
- Behebt den Fall, dass die Adresse beim Provider bereits als reine
|
||||
Weiterleitung existierte: dann kehrte `provisionEmailWithMailbox` früh
|
||||
mit success zurück, ohne je ein Postfach-Passwort zu setzen – im CRM lag
|
||||
ein verschlüsseltes Passwort, das der Provider nicht kannte → IMAP/SMTP-
|
||||
Login schlug fehl. Jetzt stimmen CRM und Provider garantiert überein.
|
||||
- Tab-Leiste bei vielen Tabs: `flex-wrap` statt Overflow aus dem Rahmen.
|
||||
- Referrals: 4 neue Beziehungen + Bearbeiten-Stift pro Eintrag (s.u.).
|
||||
|
||||
- [x] **🤝 Kundenakte: Tab „Geworben / angeworben" (Kundenempfehlungen)**
|
||||
- Neuer Tab vor „Datenschutz", **nur Mitarbeiter/Admin** (nicht Portal),
|
||||
**ohne** Consent-Pflicht nutzbar. Zwei Abschnitte:
|
||||
|
||||
Reference in New Issue
Block a user