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];
|
const localPart = data.email.split('@')[0];
|
||||||
|
|
||||||
if (createMailbox) {
|
if (createMailbox) {
|
||||||
// Mit echter Mailbox anlegen
|
// Mit echter Mailbox anlegen. Immer ein frisches, sicheres Passwort
|
||||||
|
// erzeugen.
|
||||||
const password = generateSecurePassword();
|
const password = generateSecurePassword();
|
||||||
const result = await provisionEmailWithMailbox(localPart, customer.email, password);
|
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');
|
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
|
// Passwort verschlüsseln und speichern
|
||||||
const passwordEncrypted = encrypt(password);
|
const passwordEncrypted = encrypt(password);
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,18 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
|||||||
|
|
||||||
## ✅ Erledigt
|
## ✅ 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)**
|
- [x] **🤝 Kundenakte: Tab „Geworben / angeworben" (Kundenempfehlungen)**
|
||||||
- Neuer Tab vor „Datenschutz", **nur Mitarbeiter/Admin** (nicht Portal),
|
- Neuer Tab vor „Datenschutz", **nur Mitarbeiter/Admin** (nicht Portal),
|
||||||
**ohne** Consent-Pflicht nutzbar. Zwei Abschnitte:
|
**ohne** Consent-Pflicht nutzbar. Zwei Abschnitte:
|
||||||
|
|||||||
Reference in New Issue
Block a user