@page "/register" @inject IAuthService AuthService @inject CustomAuthStateProvider AuthStateProvider @inject NavigationManager Navigation @inject ISettingsService SettingsService @rendermode InteractiveServer @T("Registrieren - Author Buddy", "Register - Author Buddy")

@T("Registrieren", "Register")

@T("Zurück zum Login", "Back to login")
@if (!string.IsNullOrEmpty(errorMessage)) {
@errorMessage
}
@code { private string _language = "de"; private string username = string.Empty; private string password = string.Empty; private string confirmPassword = string.Empty; private string errorMessage = string.Empty; private bool isBusy; private string T(string de, string en) => _language == "en" ? en : de; protected override async Task OnInitializedAsync() { _language = await SettingsService.GetLanguageAsync() ?? "de"; } private async Task HandleKeyDown(KeyboardEventArgs e) { if (e.Key == "Enter") await DoRegister(); } private async Task DoRegister() { if (string.IsNullOrWhiteSpace(username)) { errorMessage = T("Bitte Benutzername eingeben.", "Please enter a username."); return; } if (string.IsNullOrWhiteSpace(password)) { errorMessage = T("Bitte Passwort eingeben.", "Please enter a password."); return; } if (password != confirmPassword) { errorMessage = T("Passwörter stimmen nicht überein.", "Passwords do not match."); return; } if (password.Length < 4) { errorMessage = T("Passwort muss mindestens 4 Zeichen lang sein.", "Password must be at least 4 characters long."); return; } isBusy = true; errorMessage = string.Empty; try { var result = await AuthService.RegisterAsync(username, password); if (result) { AuthStateProvider.NotifyStateChanged(); Navigation.NavigateTo("/"); } else { errorMessage = T("Benutzername ist bereits vergeben.", "Username is already taken."); } } catch (Exception ex) { errorMessage = $"{T("Fehler:", "Error:")} {ex.Message}"; } finally { isBusy = false; } } }