60 lines
1.9 KiB
C#
60 lines
1.9 KiB
C#
using System.Linq;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using ChronoFlow.Controller;
|
|
using ChronoFlow.Persistence;
|
|
|
|
namespace ChronoFlow.View
|
|
{
|
|
/// <summary>
|
|
/// Das Fenster für den Benutzer-Login.
|
|
/// </summary>
|
|
public partial class LoginWindow : Window
|
|
{
|
|
private LoginController _loginController;
|
|
|
|
public LoginWindow()
|
|
{
|
|
InitializeComponent(); // Verbindet XAML mit diesem Code
|
|
_loginController = new LoginController(); // Unsere "Logik-Klasse"
|
|
var service = new SqliteZeiterfassungsService();
|
|
service.ErstelleStandardAdmin();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Wird ausgeführt, wenn der Benutzer auf "Anmelden" klickt.
|
|
/// </summary>
|
|
private void LoginButton_Click(object? sender, RoutedEventArgs e)
|
|
{
|
|
var username = UsernameBox.Text?.Trim();
|
|
var password = PasswordBox.Text?.Trim();
|
|
|
|
if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
|
|
{
|
|
ErrorText.Text = "Bitte Benutzername und Passwort eingeben";
|
|
ErrorText.IsVisible = true;
|
|
return;
|
|
}
|
|
|
|
var service = new SqliteZeiterfassungsService();
|
|
var benutzerListe = service.LadeAlleBenutzer();
|
|
|
|
var user = benutzerListe.FirstOrDefault(u => u.Username == username && u.Password == password);
|
|
|
|
if (user != null)
|
|
{
|
|
// Wenn erfolgreich: öffne das MainWindow
|
|
var main = new MainWindow(user);
|
|
main.Show();
|
|
this.Close(); // Schließe das Login-Fenster
|
|
}
|
|
else
|
|
{
|
|
// Wenn fehlgeschlagen: Fehlermeldung anzeigen
|
|
ErrorText.Text = "Login fehlgeschlagen. Bitte prüfen Sie Ihre Eingaben.";
|
|
ErrorText.IsVisible = true;
|
|
}
|
|
}
|
|
}
|
|
} |