comments und quellen hinzufugt
This commit is contained in:
@@ -1,24 +1,35 @@
|
||||
using BCrypt.Net;
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using System.Windows;
|
||||
|
||||
namespace SkyTeam
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
// Beim Start der Anwendung einen Standard Admin-Benutzer erstellen, falls keiner existiert
|
||||
// Beim Start der Anwendung einen Standard Admin Benutzer erstellen, falls keiner existiert
|
||||
public App()
|
||||
{
|
||||
// Quelle: Stack Overflow
|
||||
// Durch das Setzen der CurrentUICulture direkt im App-Konstruktor stellen wir sicher,
|
||||
// dass die gesamte Anwendung (alle Pages und Windows) von Anfang an die gleiche Spracheinstellung
|
||||
// nutzt. Das verhindert Inkonsistenzen beim Laden der ersten Seite.
|
||||
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");
|
||||
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");
|
||||
|
||||
// Quelle: AI Assistant (Gemini)
|
||||
// Idee: Code-Bereinigung / Refactoring
|
||||
// Die Zuweisung der Culture stand hier ursprünglich doppelt. Die KI hat beim
|
||||
// Code Review darauf hingewiesen, dass eine einmalige Zuweisung ausreicht, um Redundanzen
|
||||
// zu vermeiden. Die zweite Zeile wurde entfernt.
|
||||
|
||||
CreateDefaultAdmin();
|
||||
}
|
||||
|
||||
private void CreateDefaultAdmin()
|
||||
{
|
||||
string connectionString = DatenbankServices.GetConnection();
|
||||
string connectionString = DatenbankServices.GetConnection();
|
||||
|
||||
try
|
||||
{
|
||||
@@ -26,18 +37,26 @@ namespace SkyTeam
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
// Quelle: Stack Overflow
|
||||
// Dieses Architektur-Muster nennt sich "Database Seeding". Es stellt sicher,
|
||||
// dass das System nach einer Neuinstallation sofort nutzbar ist, da automatisch ein
|
||||
// Root-Account existiert, ohne dass manuelle SQL Eingriffe nötig sind.
|
||||
string checkQuery = "SELECT COUNT(*) FROM users WHERE Rolle = 'Admin'";
|
||||
MySqlCommand checkCmd = new MySqlCommand(checkQuery, conn);
|
||||
long count = (long)checkCmd.ExecuteScalar();
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
// Quelle: Reddit
|
||||
|
||||
string hashedPassword = BCrypt.Net.BCrypt.HashPassword("admin");
|
||||
|
||||
string insertQuery = @"
|
||||
INSERT INTO users (Vorname, Nachname, Email, PasswortHash, Rolle, Stadt, CreatedAt)
|
||||
VALUES ('System', 'Root', 'admin@skyteam.com', @hash, 'Admin', 'HQ', NOW())";
|
||||
|
||||
// Quelle: Im Unterricht gemacht
|
||||
|
||||
MySqlCommand insertCmd = new MySqlCommand(insertQuery, conn);
|
||||
insertCmd.Parameters.AddWithValue("@hash", hashedPassword);
|
||||
insertCmd.ExecuteNonQuery();
|
||||
@@ -46,9 +65,9 @@ namespace SkyTeam
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception ex) {
|
||||
|
||||
MessageBox.Show("Fehler beim Erstellen des Standard Admins: " + ex.Message);
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("Fehler beim Erstellen des Standard Admins: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user