@using TrafagSalesExporter.Services @inject IAdminAccessService AdminAccess @inject ISnackbar Snackbar @inject IUiTextService UiText @inject ILogger Logger @inject NavigationManager Navigation @T("Adminbereich ist geschützt. Bitte anmelden.", "Admin area is protected. Please sign in.") @if (!AdminAccess.IsConfigured) { @T("Admin-Zugang ist noch nicht konfiguriert.", "Admin access is not configured yet.") }
@T("Server-Klicks", "Server clicks"): @_unlockClickCount | @T("Konfiguriert", "Configured"): @(AdminAccess.IsConfigured ? "JA" : "NEIN") @T("Passwort speichern", "Save password")
@code { private string? _username; private string? _password; private string? _changeUsername; private string? _currentPassword; private string? _newPassword; private string? _newPasswordRepeat; private int _unlockClickCount; private string AccessUrl => new Uri(new Uri(Navigation.BaseUri), "access/admin").ToString(); private void Unlock() { _unlockClickCount++; Logger.LogInformation( "Admin unlock button handler reached. ClickCount={ClickCount}, IsConfigured={IsConfigured}, UsernameLength={UsernameLength}, PasswordLength={PasswordLength}", _unlockClickCount, AdminAccess.IsConfigured, _username?.Length ?? 0, _password?.Length ?? 0); if (!AdminAccess.TryUnlock(_username ?? string.Empty, _password ?? string.Empty)) { Snackbar.Add(T("Admin-Anmeldung fehlgeschlagen.", "Admin sign-in failed."), Severity.Error); return; } _password = string.Empty; OnUnlocked.InvokeAsync(); } private void ChangePassword() { if (string.IsNullOrWhiteSpace(_newPassword) || _newPassword.Length < 8) { Snackbar.Add(T("Das neue Passwort muss mindestens 8 Zeichen lang sein.", "The new password must be at least 8 characters long."), Severity.Warning); return; } if (_newPassword != _newPasswordRepeat) { Snackbar.Add(T("Die neuen Passwörter stimmen nicht überein.", "The new passwords do not match."), Severity.Warning); return; } if (!AdminAccess.TryChangePassword(_changeUsername ?? string.Empty, _currentPassword ?? string.Empty, _newPassword)) { Snackbar.Add(T("Passwort konnte nicht geändert werden. Name oder aktuelles Passwort prüfen.", "Password could not be changed. Check the name or current password."), Severity.Error); return; } _currentPassword = string.Empty; _newPassword = string.Empty; _newPasswordRepeat = string.Empty; Snackbar.Add(T("Passwort wurde geändert.", "Password has been changed."), Severity.Success); } private string T(string german, string english) => UiText.Text(german, english); [Parameter] public EventCallback OnUnlocked { get; set; } }