using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using LehrerApp.Data;
namespace LehrerApp.Desktop.ViewModels;
///
/// Passwort-Abfrage beim Programmstart, wenn die Datenbank verschlüsselt ist (13.3.4).
/// Läuft vor , deshalb ohne DI.
///
public partial class DbPasswordPromptViewModel : ObservableObject
{
private readonly DatabaseEncryptionService _dbEncryption;
private readonly string _dbPath;
[ObservableProperty] private string _password = "";
[ObservableProperty] private string _error = "";
public Action? OnUnlocked { get; set; }
public DbPasswordPromptViewModel(DatabaseEncryptionService dbEncryption, string dbPath)
{
_dbEncryption = dbEncryption;
_dbPath = dbPath;
}
[RelayCommand]
private void Unlock()
{
if (string.IsNullOrEmpty(Password)) { Error = "Bitte Passwort eingeben."; return; }
if (!_dbEncryption.VerifyPassword(_dbPath, Password))
{
Error = "Falsches Passwort.";
Password = "";
return;
}
OnUnlocked?.Invoke(Password);
}
}