Schließt den zweiten Punkt der geplanten Onboarding-Reihenfolge. Admin lädt eine CSV mit Spalten email (Pflicht) und role (optional, Standard mitarbeiter) unter GET /verwaltung/nutzer/import hoch. Wie beim einzelnen Nutzer-Anlegen gibt es keine Einladungsmail — pro Zeile wird ein Einmalpasswort erzeugt und nur auf der Ergebnisseite direkt nach dem Import angezeigt, danach nirgendwo mehr abrufbar. Kein Alles-oder-nichts-Import: eine ungültige Zeile blockiert nicht die übrigen, jede Zeile bekommt ihr eigenes Ergebnis. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
28 lines
975 B
HTML
28 lines
975 B
HTML
{{define "nutzer-import"}}<!doctype html>
|
|
<html lang="de">
|
|
<head>{{template "head" .}}</head>
|
|
<body>
|
|
{{template "nav" .Nav}}
|
|
<div class="page">
|
|
<p><a href="/verwaltung/nutzer">← Nutzerverwaltung</a></p>
|
|
<h1>Mitarbeiter per CSV importieren</h1>
|
|
<p class="hinweis">
|
|
CSV mit Kopfzeile, Pflichtspalte "email", optionale Spalte "role"
|
|
(mitarbeiter/verantwortlicher/pruefer/admin — Standard: mitarbeiter).
|
|
Es gibt keine Einladungsmail: nach dem Import wird pro Zeile ein
|
|
Einmalpasswort angezeigt, das nur DIESES EINE MAL sichtbar ist — bitte
|
|
auf dieser Seite kopieren und sicher weitergeben, bevor sie
|
|
geschlossen wird.
|
|
</p>
|
|
{{if .Error}}<p class="fehler">{{.Error}}</p>{{end}}
|
|
<form method="post" action="/verwaltung/nutzer/import" enctype="multipart/form-data">
|
|
<label for="csv">CSV-Datei</label>
|
|
<input type="file" id="csv" name="csv" accept=".csv,text/csv" required>
|
|
|
|
<button type="submit">Importieren</button>
|
|
</form>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
{{end}}
|