Files
Laufzettel/docs/issues/012-platzhalter-namensregeln.md
T
florian.wilde d8d5444e9f
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
feat(vorlagen): Versionierung, Unveraenderlichkeit und JSON-Austausch (#23)
2026-09-25 06:10:01 +00:00

3.2 KiB
Raw Blame History

#012 M7 – Platzhalter, Namensregeln, Escaping

Status: offen Meilenstein: v0.1.0 Labels: phase-1, backend, security Geschätzt: 8 h Tatsächlich: –

Ziel

Reine, framework-freie Service-Schicht mit dichter Testabdeckung. Hier entstehen die fertigen PowerShell-Befehle, die der Techniker kopiert — und hier darf nichts schiefgehen, weder beim Escaping noch beim generierten Passwort.

Aufgaben

  • Platzhalter-Auflösung {{key}} in Schritt-Titel, Hilfetext und Befehlstext
  • Eingebaut aus Gerät und Lauf: {{hostname}}, {{seriennummer}}, {{inventarnummer}}, {{ticket}}, {{datum}}, {{techniker}}; im Modus DIENSTLEISTUNG zusätzlich {{kunde}} und {{kundenkuerzel}}, im Modus INTERN leer
  • Eingebaut aus dem Mitarbeiter: {{mitarbeiter}} (Alias {{benutzer}}), {{vorname}}, {{nachname}}, {{upn}}, {{sam}}, {{mail}}, {{abteilung}}, {{titel}}, {{vorgesetzter}}, {{vorgesetzter_sam}}, {{dn}}, {{ou}}
  • Aus der gewählten Abteilung: {{ou}} falls nicht vom Mitarbeiter, {{gruppen}} kommagetrennt
  • {{ou}} eines synchronisierten Mitarbeiters ist der Eltern-Container seines dn (alles nach dem ersten Komma)
  • Dazu die in der Vorlage definierten Variablen; unbekannte Platzhalter bleiben sichtbar stehen
  • {{generiertes_passwort}}: 20 Zeichen aus Groß, Klein, Ziffern und Sonderzeichen ohne verwechselbare Zeichen, je Anzeige neu erzeugt, nie gespeichert; Hinweis „Passwort sofort in den Passwortmanager übernehmen“; in der Druckansicht [Passwort – nicht gespeichert]
  • Namensregeln (Einstellung.namensregeln global, im Modus DIENSTLEISTUNG zusätzlich Kunde.namensregeln mit Fallback): upn, sam (höchstens 20 Zeichen), mail, hostname
  • Transliteration (ä→ae, ö→oe, ü→ue, ß→ss, Akzente entfernt), Kleinschreibung, Leerzeichen entfernt, {nnn}-Zähler, {v} für den ersten Buchstaben des Vornamens, {kundenkuerzel}
  • Shell-Escaping je Shell: PowerShell (doppelte Anführungszeichen verdoppeln, Backtick maskieren), Bash, Cmd
  • HTML-Escaping ersetzter Werte; Markdown im Hilfetext sicher gerendert, kein rohes HTML
  • „Alle Befehle als Skript kopieren“ je Abschnitt: alle BEFEHL-Schritte in Reihenfolge, getrennt durch Leerzeilen, je mit # Schritt: <Titel> davor, Zeilenumbruch passend zur Shell

Akzeptanzkriterien

  • Test: „Jörg Müller-Lüdenscheid“ ergibt joerg.mueller-luedenscheid@firma.de und jmuellerluedensch (auf 20 Zeichen gekürzt)
  • Test: {{generiertes_passwort}} erscheint im angezeigten Befehl, steht aber nicht in Schrittergebnis, Kommentar, Protokoll oder der Druckansicht; zwei Aufrufe liefern verschiedene Passwörter
  • Test: ein Wert mit " und ` wird für PowerShell korrekt maskiert und bricht den Befehl nicht
  • Test: unbekannte Platzhalter bleiben als {{key}} stehen
  • Test: {{ou}} wird aus CN=Maria Huber,OU=Buchhaltung,OU=Benutzer,DC=firma,DC=local zu OU=Buchhaltung,OU=Benutzer,DC=firma,DC=local
  • Test: Skript-Kopie liefert die Befehle in Abschnittsreihenfolge mit Kommentarzeilen
  • Test: im Modus INTERN sind {{kunde}} und {{kundenkuerzel}} leer
  • Test: ein Wert mit <script> landet HTML-escaped in der Anzeige