@page "/register"
@inject IAuthService AuthService
@inject CustomAuthStateProvider AuthStateProvider
@inject NavigationManager Navigation
@inject ILocalizationService Loc
@rendermode InteractiveServer
@Loc["page.title.register"]
@code {
private string username = string.Empty;
private string password = string.Empty;
private string confirmPassword = string.Empty;
private string errorMessage = string.Empty;
private bool isBusy;
private async Task HandleKeyDown(KeyboardEventArgs e)
{
if (e.Key == "Enter")
await DoRegister();
}
private async Task DoRegister()
{
if (string.IsNullOrWhiteSpace(username))
{
errorMessage = Loc["register.error.no_username"];
return;
}
if (string.IsNullOrWhiteSpace(password))
{
errorMessage = Loc["register.error.no_password"];
return;
}
if (password != confirmPassword)
{
errorMessage = Loc["register.error.password_mismatch"];
return;
}
if (password.Length < 4)
{
errorMessage = Loc["register.error.password_too_short"];
return;
}
isBusy = true;
errorMessage = string.Empty;
try
{
var result = await AuthService.RegisterAsync(username, password);
if (result)
{
AuthStateProvider.NotifyStateChanged();
Navigation.NavigateTo("/");
}
else
{
errorMessage = Loc["register.error.username_taken"];
}
}
catch (Exception ex)
{
errorMessage = $"{Loc["common.error"]} {ex.Message}";
}
finally
{
isBusy = false;
}
}
}