comments und quellen hinzufugt

This commit is contained in:
younes elhaddoury
2026-03-05 12:32:01 +01:00
parent 04a18d3c50
commit 4a0f5dc0bd
15 changed files with 182 additions and 21 deletions

View File

@@ -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);
}
}
}