@page "/login" @using System.ComponentModel.DataAnnotations; @using System.Net @inject HttpClient req @inject UserManager usr @inject NavigationManager nav Login

Log in

@if (!string.IsNullOrWhiteSpace(ValidationMsg)) {

@ValidationMsg

} @code { public record LoginModel { [Required] [EmailAddress] public string Email { get; set; } = default!; [Required] public string Password { get; set; } = default!; }; public LoginModel Model { get; set; } = new(); public string ValidationMsg = string.Empty; protected async override Task OnInitializedAsync() { if (await usr.GetUser() != null) { nav.NavigateTo("/"); return; } Model ??= new(); } private async Task Submit() { var resp = await req.PostAsJsonAsync("/api/auth/login", Model); if (resp.StatusCode == HttpStatusCode.OK) { Model = new(); ValidationMsg = "Successful login <3"; var user = await resp.Content.ReadFromJsonAsync(); if (user == null) { ValidationMsg = "Unknown authentication error"; this.StateHasChanged(); return; } usr.SetUser(user); this.StateHasChanged(); nav.NavigateTo("/", true); return; } if (resp.StatusCode == HttpStatusCode.Unauthorized) { Model = new(); ValidationMsg = "Invalid username or password."; this.StateHasChanged(); return; } Model = new(); ValidationMsg = "Authorization error..."; this.StateHasChanged(); } }