Umlaut-Fix: zentrale Transliteration (ae/oe/ue/ss) fuer E-Mails, UPN und sAMAccountName + Release v10
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
const { Client, Attribute, Change } = require('ldapts');
|
||||
const { transliterateUmlauts, toSamAccountName } = require('./umlauts');
|
||||
|
||||
/**
|
||||
* LDAP Operations Module (ldapts)
|
||||
@@ -133,12 +134,10 @@ function escapeLDAPDN(str) {
|
||||
|
||||
/**
|
||||
* Replace German umlauts and ß for sAMAccountName compatibility.
|
||||
* (Delegiert an zentrale umlauts.js — Logik dort gepflegt.)
|
||||
*/
|
||||
function replaceUmlauts(str) {
|
||||
return str
|
||||
.replace(/ä/g, 'ae').replace(/ö/g, 'oe').replace(/ü/g, 'ue')
|
||||
.replace(/Ä/g, 'Ae').replace(/Ö/g, 'Oe').replace(/Ü/g, 'Ue')
|
||||
.replace(/ß/g, 'ss');
|
||||
return transliterateUmlauts(str);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -166,14 +165,15 @@ async function createADUser({ ou, vorname, nachname, email, username, password,
|
||||
const escapedCN = escapeLDAPDN(cnValue);
|
||||
const dn = 'CN=' + escapedCN + ',' + ou;
|
||||
|
||||
// Build UPN
|
||||
// Build UPN — FIX: Username umlautfrei normalisieren (ä→ae etc.),
|
||||
// damit kein ungültiger UPN wie müller@... entsteht.
|
||||
const upnSuffix = LDAP_UPN_SUFFIX || LDAP_BIND_USER.split('@')[1] || LDAP_DOMAIN.toLowerCase() + '.intra';
|
||||
const userPrincipalName = username + '@' + upnSuffix;
|
||||
const userPrincipalName = toSamAccountName(username) + '@' + upnSuffix;
|
||||
|
||||
// sAMAccountName: max 20 chars
|
||||
let sAMAccountName = username;
|
||||
let sAMAccountName = toSamAccountName(username);
|
||||
if (vorname && nachname) {
|
||||
sAMAccountName = replaceUmlauts(nachname + vorname.charAt(0)).replace(/[^a-zA-Z0-9]/g, '');
|
||||
sAMAccountName = toSamAccountName(nachname + vorname.charAt(0));
|
||||
}
|
||||
sAMAccountName = sAMAccountName.substring(0, 20);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user