SkyTeam/LogInPage.xaml.cs aktualisiert
This commit is contained in:
@@ -13,7 +13,7 @@ namespace SkyTeam
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
// Quelle: Im Unterricht gemacht
|
||||||
private void AdminLink_Click(object sender, RoutedEventArgs e)
|
private void AdminLink_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (Application.Current.MainWindow is MainWindow mainWindow)
|
if (Application.Current.MainWindow is MainWindow mainWindow)
|
||||||
@@ -27,7 +27,8 @@ namespace SkyTeam
|
|||||||
{
|
{
|
||||||
string email = BenutzernameTextBox.Text;
|
string email = BenutzernameTextBox.Text;
|
||||||
string password = PasswortTextBox.Password;
|
string password = PasswortTextBox.Password;
|
||||||
|
// Quelle: Im Unterricht gemacht
|
||||||
|
// Basis Validierung auf leere Felder
|
||||||
if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
|
if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
|
||||||
{
|
{
|
||||||
MessageBox.Show("Bitte Email und Passwort eingeben.");
|
MessageBox.Show("Bitte Email und Passwort eingeben.");
|
||||||
@@ -56,7 +57,11 @@ namespace SkyTeam
|
|||||||
MessageBox.Show("Benutzer wurde nicht gefunden.");
|
MessageBox.Show("Benutzer wurde nicht gefunden.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// Quelle: Stack Overflow "How to verify a BCrypt hash"
|
||||||
|
// Man kann gehashte Passwörter NICHT direkt im SQL Query vergleichen
|
||||||
|
// (z.B. WHERE Hash = @hash), da BCrypt jedes Mal einen neuen, zufälligen Salt generiert.
|
||||||
|
// Wir müssen erst den gespeicherten Hash aus der DB laden und dann die Verify Methode
|
||||||
|
// der BCrypt-Bibliothek nutzen, um das Klartext passwort damit zu prüfen
|
||||||
string storedHash = reader.GetString("PasswortHash");
|
string storedHash = reader.GetString("PasswortHash");
|
||||||
|
|
||||||
if (!BCrypt.Net.BCrypt.Verify(password, storedHash))
|
if (!BCrypt.Net.BCrypt.Verify(password, storedHash))
|
||||||
@@ -64,7 +69,11 @@ namespace SkyTeam
|
|||||||
MessageBox.Show("Falsches Passwort.");
|
MessageBox.Show("Falsches Passwort.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// Quelle: AI Assistant (chat gpt)
|
||||||
|
// Idee: Globales State-Management über eine statische Klasse (SessionManager)
|
||||||
|
// Kommentar: Anstatt die User ID mühsam über jeden Seitenaufruf hinweg in den Konstruktoren
|
||||||
|
// weiterzureichen, hat die KI vorgeschlagen, eine statische SessionManager Klasse zu nutzen.
|
||||||
|
// So sind User-ID, Name und Rolle global für die gesamte Laufzeit abrufbar.
|
||||||
SessionManager.CurrentUserId = reader.GetInt32("Id");
|
SessionManager.CurrentUserId = reader.GetInt32("Id");
|
||||||
SessionManager.CurrentUserName = reader.GetString("Vorname");
|
SessionManager.CurrentUserName = reader.GetString("Vorname");
|
||||||
SessionManager.Role = reader.GetString("Rolle");
|
SessionManager.Role = reader.GetString("Rolle");
|
||||||
@@ -89,11 +98,18 @@ namespace SkyTeam
|
|||||||
|
|
||||||
private void Page_Loaded(object sender, RoutedEventArgs e)
|
private void Page_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Quelle: Im Unterricht gemacht
|
||||||
|
// Setzt den Cursor direkt beim Laden der Seite ins Benutzernamen-Feld.
|
||||||
BenutzernameTextBox.Focus();
|
BenutzernameTextBox.Focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BenutzernameTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
|
private void BenutzernameTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
|
||||||
{
|
{
|
||||||
|
// Quelle: Stack Overflow "WPF Move focus on enter key"
|
||||||
|
// Ein UX Feature (User Experience). Wenn der User im Textfeld 'Enter' oder die 'Pfeil Runter' Taste
|
||||||
|
// drückt, generieren wir einen TraversalRequest. Dadurch springt der Fokus automatisch ins nächste UI-Element
|
||||||
|
// (das Passwort Feld), ohne dass der User die Maus benutzen muss
|
||||||
if (e.Key == Key.Down || e.Key == Key.Enter)
|
if (e.Key == Key.Down || e.Key == Key.Enter)
|
||||||
{
|
{
|
||||||
TraversalRequest request =
|
TraversalRequest request =
|
||||||
|
|||||||
Reference in New Issue
Block a user