@page "/login"
@layout LoginLayout
@using AntDesign
@using JSMR.UI.Blazor.Services
@using MudBlazor.Charts
@using System.ComponentModel.DataAnnotations
@inject SessionState Session
@inject NavigationManager Nav
@*
Login
*@
Sign In - JSMR
@if (Session.IsAuthenticated)
{
You're already logged in as @Session.Me?.Name.
}
else
{
Sign In
@if (!string.IsNullOrWhiteSpace(error))
{
}
}
@code {
private string username = "";
private string password = "";
private bool busy;
private string? error;
private LoginModel loginModel = new();
public class LoginModel
{
[Required]
public string? Username { get; set; }
[Required]
public string? Password { get; set; }
}
private async Task LoginAsync()
{
busy = true;
error = null;
try
{
var ok = await Session.LoginAsync(username, password);
if (!ok)
{
error = "Invalid username or password.";
return;
}
Nav.NavigateTo("/");
}
catch (Exception ex)
{
error = ex.Message;
}
finally
{
busy = false;
}
}
private async Task Login2Async()
{
busy = true;
error = null;
try
{
if (string.IsNullOrWhiteSpace(loginModel.Username))
{
error = "Username is required.";
return;
}
if (string.IsNullOrWhiteSpace(loginModel.Password))
{
error = "Password is required.";
return;
}
var ok = await Session.LoginAsync(loginModel.Username, loginModel.Password);
if (!ok)
{
error = "Invalid username or password.";
return;
}
Nav.NavigateTo("/");
}
catch (Exception ex)
{
error = ex.Message;
}
finally
{
busy = false;
}
}
private async Task Logout()
{
busy = true;
error = null;
try
{
await Session.LogoutAsync();
}
catch (Exception ex)
{
error = ex.Message;
}
finally
{
busy = false;
}
}
}