Robustheits-Fix: RFC-5321-konforme E-Mail-Local-Parts (keine Rand-Punkte/Doppelpunkte) + sAMAccountName-Fallback bei Nicht-Latin-Namen + Release v11
This commit is contained in:
@@ -98,9 +98,10 @@ export default function FillModal({ template, onSubmit, onClose }) {
|
||||
if (!sourceStep || !values[sourceStep.id]) return '';
|
||||
// FIX: Umlaute konvertieren (ä→ae etc.) — sonst ungültige E-Mails wie j.schröder@...
|
||||
return toEmailLocalPart(values[sourceStep.id]);
|
||||
}).filter(Boolean);
|
||||
}).filter(Boolean); // leere Teile (z.B. Name nur aus Sonderzeichen) fallen weg
|
||||
if (parts.length === 0) return '';
|
||||
const domain = step.email_domain.startsWith('@') ? step.email_domain : '@' + step.email_domain;
|
||||
// parts sind durch toEmailLocalPart bereits punkten- und leer-part-bereinigt
|
||||
return parts.join('.') + domain;
|
||||
};
|
||||
|
||||
|
||||
@@ -22,13 +22,17 @@ export function transliterateUmlauts(str) {
|
||||
* Normalisiert einen Namen für den lokalen Teil einer E-Mail-Adresse:
|
||||
* Umlaute → ASCII, Kleinbuchstaben, Leerzeichen → Punkte, nur a-z0-9. erlaubt.
|
||||
* Beispiel: "Jürgen Schröder" → "juergen.schroeder"
|
||||
* RFC 5321: kein führender/abschließender Punkt, keine Doppelpunkte.
|
||||
*/
|
||||
export function toEmailLocalPart(str) {
|
||||
if (typeof str !== 'string') return '';
|
||||
return transliterateUmlauts(str)
|
||||
.toLowerCase()
|
||||
.replace(/\s+/g, '.')
|
||||
.replace(/[^a-z0-9.]/g, '');
|
||||
.replace(/[^a-z0-9.]/g, '')
|
||||
.replace(/\.{2,}/g, '.') // ".." → "." (durch aufeinanderfolgende Trenner)
|
||||
.replace(/\.+$/g, '') // abschließende Punkte entfernen
|
||||
.replace(/^\.+/, ''); // führende Punkte entfernen
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user