fix: superadmin beim ersten Start anlegen + Installer zeigt echte Passwörter

- seedDefaultUsers: superadmin (Rolle superadmin) zu Default-Usern hinzugefügt
  → wird beim ersten Backend-Start mit Zufallspasswort angelegt
- Installer: Passwörter werden nach dem Deployment aus dem Journal gelesen
  (journalctl -u archivmail) statt falschen Platzhalter 'archivmailrockz'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sysops
2026-03-20 01:23:33 +01:00
parent 32032b49d2
commit fd46f0de9a
+8 -2
View File
@@ -524,6 +524,10 @@ func seedDefaultUsers(users *userstore.Store, logger *slog.Logger) error {
return nil // already seeded return nil // already seeded
} }
superadminPw, err := randomPassword()
if err != nil {
return fmt.Errorf("generate superadmin password: %w", err)
}
adminPw, err := randomPassword() adminPw, err := randomPassword()
if err != nil { if err != nil {
return fmt.Errorf("generate admin password: %w", err) return fmt.Errorf("generate admin password: %w", err)
@@ -534,6 +538,7 @@ func seedDefaultUsers(users *userstore.Store, logger *slog.Logger) error {
} }
defaults := []userstore.CreateUserRequest{ defaults := []userstore.CreateUserRequest{
{Username: "superadmin", Email: "superadmin@archivmail.local", Password: superadminPw, Role: userstore.RoleSuperAdmin},
{Username: "admin", Email: "admin@archivmail.local", Password: adminPw, Role: userstore.RoleAdmin}, {Username: "admin", Email: "admin@archivmail.local", Password: adminPw, Role: userstore.RoleAdmin},
{Username: "auditor", Email: "auditor@archivmail.local", Password: auditorPw, Role: userstore.RoleAuditor}, {Username: "auditor", Email: "auditor@archivmail.local", Password: auditorPw, Role: userstore.RoleAuditor},
} }
@@ -548,8 +553,9 @@ func seedDefaultUsers(users *userstore.Store, logger *slog.Logger) error {
fmt.Println("╔══════════════════════════════════════════════════════════════╗") fmt.Println("╔══════════════════════════════════════════════════════════════╗")
fmt.Println("║ ARCHIVMAIL — ERSTMALIGE EINRICHTUNG ║") fmt.Println("║ ARCHIVMAIL — ERSTMALIGE EINRICHTUNG ║")
fmt.Println("║ Initiale Zugangsdaten (NUR EINMAL ANGEZEIGT): ║") fmt.Println("║ Initiale Zugangsdaten (NUR EINMAL ANGEZEIGT): ║")
fmt.Printf( "║ admin : %-50s ║\n", adminPw) fmt.Printf( "║ superadmin : %-47s ║\n", superadminPw)
fmt.Printf( "║ auditor : %-50s ║\n", auditorPw) fmt.Printf( "║ admin : %-47s ║\n", adminPw)
fmt.Printf( "║ auditor : %-47s ║\n", auditorPw)
fmt.Println("║ Passwörter sofort nach dem ersten Login ändern! ║") fmt.Println("║ Passwörter sofort nach dem ersten Login ändern! ║")
fmt.Println("╚══════════════════════════════════════════════════════════════╝") fmt.Println("╚══════════════════════════════════════════════════════════════╝")
fmt.Println() fmt.Println()