using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using Oqtane.Enums; using Oqtane.Security; using Oqtane.Services; using Oqtane.Shared; using Oqtane.UI; namespace Oqtane.Themes.Controls { public class LoginBase : ThemeControlBase { [Inject] public NavigationManager NavigationManager { get; set; } [Inject] public IUserService UserService { get; set; } [Inject] public IJSRuntime jsRuntime { get; set; } [Inject] public IServiceProvider ServiceProvider { get; set; } [Inject] public SiteState SiteState { get; set; } [Inject] public ILogService LoggingService { get; set; } protected void LoginUser() { var returnurl = PageState.Alias.Path; if (PageState.Page.Path != "/") { returnurl += "/" + PageState.Page.Path; } NavigationManager.NavigateTo(NavigateUrl("login", "?returnurl=" + returnurl)); } protected async Task LogoutUser() { await LoggingService.Log(PageState.Alias, PageState.Page.PageId, null, PageState.User.UserId, GetType().AssemblyQualifiedName, "Logout", LogFunction.Security, LogLevel.Information, null, "User Logout For Username {Username}", PageState.User.Username); // check if anonymous user can access page var url = PageState.Alias.Path + "/" + PageState.Page.Path; if (!UserSecurity.IsAuthorized(null, PermissionNames.View, PageState.Page.Permissions)) { url = PageState.Alias.Path; } // post to the Logout page to complete the logout process var fields = new { __RequestVerificationToken = SiteState.AntiForgeryToken, returnurl = url }; var interop = new Interop(jsRuntime); await interop.SubmitForm(Utilities.TenantUrl(PageState.Alias, "/pages/logout/"), fields); } } }