@using Oqtane.Themes @using Oqtane.Services @using Oqtane.Providers @using Oqtane.Shared @using Microsoft.JSInterop @namespace Oqtane.Themes.Controls @inherits ThemeObjectBase @inject IUriHelper UriHelper @inject IUserService UserService @inject IJSRuntime jsRuntime @inject IServiceProvider ServiceProvider ... @code { private void LoginUser() { string returnurl = PageState.Alias.Path; if (PageState.Page.Path != "/") { returnurl += "/" + PageState.Page.Path; } UriHelper.NavigateTo("login?returnurl=" + returnurl); } private async Task LogoutUser() { await UserService.LogoutUserAsync(); var authstateprovider = (IdentityAuthenticationStateProvider)ServiceProvider.GetService(typeof(IdentityAuthenticationStateProvider)); if (authstateprovider == null) { // server-side Blazor var interop = new Interop(jsRuntime); string antiforgerytoken = await interop.GetElementByName("__RequestVerificationToken"); var fields = new { __RequestVerificationToken = antiforgerytoken, returnurl = (PageState.Alias.Path + "/" + PageState.Page.Path) }; await interop.SubmitForm("/logout/", fields); } else { // client-side Blazor authstateprovider.NotifyAuthenticationChanged(); PageState.Reload = Constants.ReloadSite; UriHelper.NavigateTo(NavigateUrl(PageState.Page.Path, "logout")); } } }