@namespace Oqtane.Themes.Controls @using System.Net @inherits ThemeControlBase @inject ISettingService SettingService @inject IStringLocalizer Localizer @inject NavigationManager NavigationManager @if (PageState.User != null) { @PageState.User.Username } else { @if (ShowRegister && PageState.Site.AllowRegistration) { @Localizer["Register"] } } @code { [Parameter] public bool ShowRegister { get; set; } [Parameter] public string CssClass { get; set; } = "btn btn-primary"; [Parameter] public string RegisterUrl { get; set; } // optional parameter to specify a custom registration url [Parameter] public string ProfileUrl { get; set; } // optional parameter to specify a custom user profile url private string _registerurl = ""; private string _profileurl = ""; private string _returnurl = ""; protected override void OnParametersSet() { if (!PageState.QueryString.ContainsKey("returnurl")) { // remember current url _returnurl = WebUtility.UrlEncode(PageState.Route.PathAndQuery); } else { // use existing value _returnurl = PageState.QueryString["returnurl"]; } if (!string.IsNullOrEmpty(RegisterUrl)) { _registerurl = RegisterUrl; _registerurl += (!_registerurl.Contains("?") ? "?" : "&") + "returnurl=" + (_registerurl.Contains("://") ? WebUtility.UrlEncode(PageState.Route.RootUrl) + _returnurl : _returnurl); } else { if (!string.IsNullOrEmpty(SettingService.GetSetting(PageState.Site.Settings, "LoginOptions:RegisterUrl", ""))) { _registerurl = SettingService.GetSetting(PageState.Site.Settings, "LoginOptions:RegisterUrl", ""); _registerurl += (!_registerurl.Contains("?") ? "?" : "&") + "returnurl=" + (_registerurl.Contains("://") ? WebUtility.UrlEncode(PageState.Route.RootUrl) + _returnurl : _returnurl); } else { _registerurl = NavigateUrl("register", "returnurl=" + _returnurl); } } if (!string.IsNullOrEmpty(ProfileUrl)) { _profileurl = ProfileUrl; _profileurl += (!_profileurl.Contains("?") ? "?" : "&") + "returnurl=" + (_profileurl.Contains("://") ? WebUtility.UrlEncode(PageState.Route.RootUrl) + _returnurl : _returnurl); } else { if (!string.IsNullOrEmpty(SettingService.GetSetting(PageState.Site.Settings, "LoginOptions:ProfileUrl", ""))) { _profileurl = SettingService.GetSetting(PageState.Site.Settings, "LoginOptions:ProfileUrl", ""); _profileurl += (!_profileurl.Contains("?") ? "?" : "&") + "returnurl=" + (_profileurl.Contains("://") ? WebUtility.UrlEncode(PageState.Route.RootUrl) + _returnurl : _returnurl); } else { _profileurl = NavigateUrl("profile", "returnurl=" + _returnurl); } } } }