Files
kalendartool/lib/privacy/display.ts

40 lines
1.2 KiB
TypeScript

/**
* Datenschutz-Helfer fuer die Anzeige von Benutzerbezügen.
*
* E-Mail-Adressen sind personenbezogene Daten. In Kalender- und
* Reservierungslisten sehen normale Mitglieder nur einen maskierten
* Kuerzel statt der vollstaendigen Adresse; wer einen Username gesetzt
* hat, erscheint unter diesem. Vollstaendige E-Mails sind der
* Admin-Verwaltung vorbehalten.
*/
/**
* Maskiert eine E-Mail: "max.mustermann@example.com" -> "m***@e***.com".
* Fuer ungueltige/leere Eingaben wird ein neutraler Platzhalter
* zurueckgegeben.
*/
export function maskEmail(email: string | null | undefined): string {
if (!email) {
return 'Unbekannt';
}
const at = email.indexOf('@');
if (at <= 0 || at === email.length - 1) {
return 'Unbekannt';
}
const local = email.slice(0, 1);
const domain = email.slice(at + 1);
const lastDot = domain.lastIndexOf('.');
const domainMasked =
lastDot > 0
? `${domain.slice(0, 1)}***${domain.slice(lastDot)}`
: `${domain.slice(0, 1)}***`;
return `${local}***@${domainMasked}`;
}
/** Anzeigename: Username bevorzugt, sonst maskierte E-Mail. */
export function displayName(
username: string | null | undefined,
email: string | null | undefined,
): string {
return username ?? maskEmail(email);
}