diff --git a/Oqtane.Client/Themes/Controls/Theme/UserProfile.razor b/Oqtane.Client/Themes/Controls/Theme/UserProfile.razor index b418a602..9c3802b4 100644 --- a/Oqtane.Client/Themes/Controls/Theme/UserProfile.razor +++ b/Oqtane.Client/Themes/Controls/Theme/UserProfile.razor @@ -2,19 +2,18 @@ @using System.Net @inherits ThemeControlBase @inject IStringLocalizer Localizer - @inject NavigationManager NavigationManager @if (PageState.User != null) { - @PageState.User.Username + @PageState.User.Username } else { @if (ShowRegister && PageState.Site.AllowRegistration) { - @Localizer["Register"] + @Localizer["Register"] } } @@ -23,23 +22,50 @@ [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 (!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 + "?returnurl=" + (RegisterUrl.Contains("://") ? WebUtility.UrlEncode(PageState.Route.RootUrl) + _returnurl : _returnurl); + } + else + { + _registerurl = NavigateUrl("register", "returnurl=" + _returnurl); + } + + if (!string.IsNullOrEmpty(ProfileUrl)) + { + _registerurl = ProfileUrl + "?returnurl=" + (ProfileUrl.Contains("://") ? WebUtility.UrlEncode(PageState.Route.RootUrl) + _returnurl : _returnurl); + } + else + { + _registerurl = NavigateUrl("profile", "returnurl=" + _returnurl); + } } }