diff --git a/JSMR.UI.Blazor/Pages/Login.razor b/JSMR.UI.Blazor/Pages/Login.razor index c8d0fef..e8ca52b 100644 --- a/JSMR.UI.Blazor/Pages/Login.razor +++ b/JSMR.UI.Blazor/Pages/Login.razor @@ -1,12 +1,17 @@ @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

+@*

Login

*@ + +Sign In - JSMR @if (Session.IsAuthenticated) { @@ -15,27 +20,82 @@ } else { -
- - - - - Login - @if (!string.IsNullOrWhiteSpace(error)) - { -

@error

- } -
-
+
+ + + + + + + + + + + + + + @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; @@ -61,6 +121,43 @@ else } } + 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;