@page "/Auth/Login" @using DotBased.ASP.Auth.Domains @using DotBased.ASP.Auth.Services @using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage @using SharpRSS.Blazor.Extensions @using SharpRSS.Data.Domains.Auth @inject ProtectedLocalStorage LocalStorage @inject NavigationManager NavigationManager @inject SecurityService SecurityService @inject ISnackbar Snackbar Login | SharpRSS Login @code { private string RedirectAfterLogin { get; set; } = string.Empty; LoginModel model = new(); protected override Task OnInitializedAsync() { RedirectAfterLogin = NavigationManager.GetQueryParameters().TryGetValue("RedirectUrl", out var redirectUrl) ? redirectUrl.ToString() : "/"; //TODO: Checking based auth or external (OIDC, etc.) return base.OnInitializedAsync(); } private async void ValidSubmit(EditContext obj) { var loginResult = await SecurityService.LoginAsync(model); if (loginResult.Success && loginResult.Value != null) { await LocalStorage.SetAsync("dotbased_session", loginResult.Value.Id); NavigationManager.NavigateTo(RedirectAfterLogin); } Snackbar.Add(loginResult.Message, Severity.Error); } }