@page "/login" @page "/login/{redirectUrl}" @page "/login/{redirectUrl}/{redirectUrlSub}" @attribute [AllowAnonymous] @inject MesaFabApprovalAuthStateProvider authStateProvider @inject NavigationManager navManager @inject ISnackbar snackbar Login @if (processing) { Processing } else { Log In } @code { [Parameter] public string? redirectUrl { get; set; } [Parameter] public string? redirectUrlSub { get; set; } private bool success; private bool processing = false; private string[] errors = { }; private string? username; private string? password; private async Task SubmitLogin() { processing = true; if (string.IsNullOrWhiteSpace(username)) snackbar.Add("Username is required!", Severity.Error); else if (string.IsNullOrWhiteSpace(password)) snackbar.Add("Password is required!", Severity.Error); else { await authStateProvider.LoginAsync(username, password); if (!string.IsNullOrWhiteSpace(redirectUrl) && !string.IsNullOrWhiteSpace(redirectUrlSub)) { navManager.NavigateTo($"{redirectUrl}/{redirectUrlSub}"); } else if (!string.IsNullOrWhiteSpace(redirectUrl)) { navManager.NavigateTo(redirectUrl); } else { navManager.NavigateTo("dashboard"); } } processing = false; } private async Task SubmitIfEnter(KeyboardEventArgs e) { if (e.Key == "Enter" && success) { SubmitLogin(); } } }